Je travaille actuellement sur un assez gros programme d'assemblage, c'est un robot bavard. Il couvre actuellement plus de 700 lignes de code. Dans mon programme j'ai deux étiquettes, mon programme utilise ces étiquettes pour garder une trace de certaines données qui sont déplacées de manière aléatoire. Permettez-moi de vous expliquer ce qui s'est passé. Le travail que le programme doit faire est grand, donc ce que j'ai tendance à faire c'est de découper ces morceaux de code en morceaux. Je crée des projets séparés pour toutes les fonctions dont mon programme a besoin, et quand ils fonctionnent, je les inclue dans le programme principal.Bogue de longueur de code long dans MASM?
J'ai terminé l'une de ces fonctions et je l'ai intégrée dans mon programme. La fonction est venue entre les deux étiquettes dont je vous ai parlé auparavant.
Quand j'ai essayé de compiler le programme que je suis une erreur en disant:
ChatterBot.asm < 22>: symbole non identifiée: EEEndLenght (qui est le nom de la 2e étiquette)
L'étiquette est 633 lignes plus loin sur la ligne 655, si je supprime à nouveau la fonction, l'erreur disparaît, je suis sûr que la même étiquette n'apparaît pas dans la nouvelle fonction et j'ai changé son nom plusieurs fois
Est-ce que quelqu'un sait w Parce que cela se passe et comment je peux le réparer?
Vue d'ensemble:
.386
.model flat,stdcall
option casemap:none
include \masm32\include\masm32rt.inc
include \masm32\include\masm32.inc
include \masm32\include\wsock32.inc
includelib \masm32\lib\wsock32.lib
system PROTO C, :PTR BYTE
SavePoly PROTO
.code
Start:
...
...
mov ecx, (EEEdnLength - Startl) ; line 22, with the label
...
...
Startl
...
...
GetNumb1And8 PROTO
Filleax PROTO
...
...
FSTR PROTO
recv PROTO
GetData PROTO, nread:DWORD
...
main proc
...
...
Rand proc
...
Rand endp
...
...
main endp
...
...
FSTR proc
...
...
FSTR endp
...
...
GetData proc nread:DWORD
...
...
GetData endp
...
...
end main
...
...
EEEdnLength:
...
...
ret
SavePoly endp
EndForError:
edd:
ret ; kthxbai
end Start
Edit: maintenant je regarde comme ça, je pense que je l'ai déjà trouvé ce qui ne va pas, la fin principale - qui est faux. Je suis désolé de perdre votre temps les gars, c'était en effet le: fin principal qui a foiré.
'EEEndLenght' ressemble à une faute de frappe pour moi (devrait être' EEEndLength'?) –
Non ce n'est pas ça, c'est en effet une faute de frappe (mais pour ça) mais les deux étiquettes ont exactement le même nom, donc ce n'est pas – Rick