Laden von einer 64-Bit-Adresse in ein anderes Register als Rax

8

Unter x64 kann das Laden von einer absoluten 64-Bit-Adresse (dh das Dereferenzieren eines direkten 64-Bit) durch

erfolgen %Vor%

Wenn das Zielregister jedoch ein anderes als rax ist, gibt der Assembler die Fehlermeldung operand size mismatch for movabs aus. Was vermisse ich?

    
Torgny 16.10.2013, 22:38
quelle

2 Antworten

7

Auf keinen Fall. Es kann nur von Areg geladen werden

  

MOVABS ist der GAS-Opcode-Name für die MOV -Opcode-Formulare MOV Areg, [Offs64] und MOV [Offs64], Areg .
  In Yasms NASM-Syntaxmodus können Sie dieses Formular erhalten, indem Sie MOV AX, [qword xxx] sagen. Yasms GAS-Syntax-Modus akzeptiert MOVABS (für GAS-Kompatibilität).
Beachten Sie, dass dieses Formular nur mit Areg (AL / AX / EAX / RAX) als Quell- / Zielregister gültig ist. *

Ссылка

    
Lưu Vĩnh Phúc 17.10.2013, 00:37
quelle
3

Für jedes andere Register als %rax kann man es durch zwei Anweisungen ersetzen:

%Vor%

Das ist länger als das einzige,

%Vor%

daher würden Sie wahrscheinlich movabs (letzteres) bevorzugen, wenn Sie es verwenden können.

    
FrankH. 17.10.2013 09:52
quelle

Tags und Links