Warum verursacht lea esi, dword [edx + ecx * 4]
einen Fehler beim Zusammenbau mit NASM?Warum erzeugt `lea esi, dword [edx + ecx * 4]` einen Fehler, wenn sie mit NASM zusammengebaut werden?
ich den Fehler:
insertion_sort.asm:19: error: mismatch in operand sizes
Allerdings ist der Zweck der lea
nur die Adresse dword [edx + ecx * 4]
zu laden, so dass auch dadurch die Referenz ist es für einen DWORD-Wert sollte keine Rolle spielen?
Auf der anderen Seite,
mov eax, dword [edi]
arbeitet als völlig in Ordnung zu erwarten. Hier deklariere ich, dass [edi]
einen DWORD-Wert referenziert.
Also, der Fehler von NASM produziert ist, weil "es keinen Sinn hat eine Größenangabe überhaupt"? Sollte NASM den Spezifizierer dann nicht ignorieren und keinen Fehler erzeugen? – Shuzheng
Jemand mit besserem Wissen über den NASM-Quellcode müsste das beantworten. Ich könnte sicherlich eine Gefahr darin sehen, unerwartete Token stillschweigend zu ignorieren, da die Erwartung des Programmierers, was der Assembler produziert hat, von der Realität abweichen könnte. Ich stimme zu, dass die Fehlermeldung ein wenig kryptisch erscheint. – Michael
Danke @Michael. – Shuzheng