Wie unterscheidet die CPU 'CALL rel16' (E8 cw) und 'CALL rel32' (E8 cd)?

8

Wie unterscheidet die CPU CALL rel16 (E8 cw) und CALL rel32 (E8 cd)?

Laut dieser Site spiegeln die Intel-Architekturhandbücher die Opcodes für CALL rel16 und CALL rel32 wider. sind E8 cw bzw. E8 cd .

Das hat mich fragen lassen, wie unterscheidet die CPU diese Opcodes voneinander, da E8 cw möglicherweise ein Präfix von E8 cw ?

ist     
Shuzheng 03.07.2017, 09:40
quelle

1 Antwort

11

Mit dem Präfix 66 wird zwischen der Operandengröße von 16 und 32 Bit umgeschaltet. In den 16-Bit-Betriebsmodi ist E8 cw also CALL rel16 und 66 E8 cd ist CALL rel32 , während im 32-Bit-Betriebsmodus E8 cd ist CALL rel32 und 66 E8 cw ist CALL rel16 .

Im langen Modus (64-Bit-Modus) scheint CALL rel16 gemäß den Intel-Handbüchern nicht verfügbar zu sein. CALL rel32 funktioniert wie im 32-Bit-Modus, aber rel32 direkt wird auf 64 Bit erweitert und zu rip anstelle von eip hinzugefügt.

    
fuz 03.07.2017 09:46
quelle

Tags und Links