Wenn ich versuche, das folgende Programm zu kompilieren:ungültige Anweisung Suffix für `mov‘ (MOVW% Axt,% ebx)
.globl _start
.section .text
_start: movw $-23, %ax
movl $-1, %ebx # -1 = $0xffffffff
movw %ax, %ebx
movl $1, %eax
movl $0, %ebx
int $0x80
ich diese Fehlermeldung:
demo.s: Assembler messages:
demo.s:7: Error: invalid instruction suffix for `mov'
Also, die Wurzel des proglem liegt hier:
movw %ax, %ebx
Aber die Sache ist, dass ich nicht glaube, was ich tue, ist völlig falsch und das ist das Beispiel in th verwendet Ich lese gerade: Professional Assembly Language by Richard Blum (2005)
'movw% ax,% ebx' macht keinen Sinn. Es ist "verschiebe die ** 16 Bits ** Register AX in das ** 32 Bits ** Register EBX". Wie würdest du das machen? Nullerweiterung ('movzwl% ax,% ebx')? Zeichenerweiterung ('movswl% ax,% ebx')? Sind Sie sicher, dass der Autor nicht beabsichtigte 'movw% ax,% bx'? Ich kann nicht von der Verwendung in der Quelle erzählen. –
'movw% ax,% ebx' - genau so wird es im Buch dargestellt. –
Nach dem Errata-Abschnitt für dieses Buch zu urteilen, wäre ich ein bisschen vorsichtig mit den Quellen darin. Nur stellen Sie sicher, dass Sie für jede erklärte Sache Ihre eigene Quelle ohne Buch schreiben können, die im Debugger genau wie erwartet funktioniert (achten Sie auf alle Register, Speicher und Flag-Änderungen).Und im Grunde gibt es nur ein kanonisches Buch für ASM-Entwickler. Anweisungen Referenzhandbuch. Alles andere ist wie Fahrradhelfer, extrem hilfreich, bis man über ein gewisses Maß hinauskommt, dann ist es Last. Nächste nützliche ASM-Bücher sind entweder detaillierte Architektur der Zielplattform oder Mathe-Theorie Bücher. – Ped7g