Hinweis: Videofortschritt und Quizantworten werden nur nach Login gespeichert.

Assembly Grundlagen 1

Immediate Operanden

Hinweis: Um die Sign Extension besser zu verstehen, empfehlen wir Ihnen, sich mit dem Zweierkomplement auseinanderzusetzen, falls dies Ihnen noch nicht bereits bekannt ist.

Bei der sog. Sign Extension wird eine Binärzahl auf mehr Stellen erweitert, indem das oberste Bit an alle neuen Bitstellen kopiert wird. So wird bei einer Sign Extension einer 32 Bit Zahl auf 64 Bit das “linkeste” Bit (Bit 31) an die Bits 32-63 kopiert. Dieser Schritt ist für vorzeichenbehaftete Zahlen (siehe Zweierkomplement) wichtig, da diese sonst ihren Wert verändern. Einige Beispiele:

  • 0xFFFFFFFF (0b11111111111111111111111111111111) wird zu 0xFFFFFFFFFFFFFFFF, da das oberste Bit eine 1 ist
  • 0x80000000 (0b10000000000000000000000000000000) wird zu 0xFFFFFFFF80000000, da das oberste Bit ebenfalls eine 1 ist
  • 0x0000000A (0b00000000000000000000000000001010) jedoch wird zu 0x000000000000000A, das das oberste Bit eine 0 ist

Bei allen Befehlen außer mov müssen Immediates auf 32 Bit verkleinerbar und danach wieder auf 64 Bit sign extended werden können, ohne, dass sie dabei ihren Wert verändern. So ist z.B. add rax, 0xFFFFFFFF80000000 erlaubt, da x80000000 bei einer Sign Extension auf 64 Bit wieder zu 0xFFFFFFFF80000000 wird. Bei add rax, 0xFFFFFFFF ist das jedoch nicht der Fall. Bei einer Sign Extension wird diese Immediate zu 0xFFFFFFFFFFFFFFFF und verändert dadurch ihren Wert.

Material

Video und Material Copyright © Timm Knörle et al.; alle Rechte vorbehalten.