2

ページhttp://daeken.pastebin.ca/raw/843310には、すべてのアセンブリ コードとその説明が含まれています。しかし、よくわからない、例えば0xa1 : ['MOV', 'rAX,Ov'],...、その説明を見て、それが何を意味するのか理解できませんでした。

このような例がたくさんあります:

Ob - Ov - rAX - Yb - Xb - etc...

これらの奇妙な記号の意味を説明できる人はいますか?

4

2 に答える 2

1

例えば:

0xa1 : ['MOV', 'rAX,Ov']

インテル®64およびIA-32アーキテクチャー開発者マニュアルによると:結合ボリューム表A-2。1バイトのオペコードマップ:(00H — F7H)0xa1mov rAX, Ov

次に、表A.2.1アドレス指定方法のコードで、アドレス指定で使用される略語について説明します。

O The instruction has no ModR/M byte. The offset of the operand is coded as
a word or double word (depending on address size attribute) in the instruction.
No base register, index register, or scaling factor can be applied (for example,
MOV (A0–A3)).

表A.2.2オペランドタイプのコードは、オペランドタイプを説明しています。

v Word, doubleword or quadword (in 64-bit mode), depending on operand-size
attribute.

そして、A.2.3登録コードの下にそれは言います:

A register identifier of the form eXX or rXX is used when register width depends
on the operand-size attribute. eXX is used when 16 or 32-bit sizes are possible;
rXX is used when 16, 32, or 64-bit sizes are possible. For example: eAX indicates
that the AX register is used when the operand-size attribute is 16 and the EAX
register is used when the operand-size attribute is 32. rAX can indicate AX, EAX
or RAX.

0xa1したがって、オペコードの命令エンコーディングの例を次に示します(で確認udcli -x)。

a10102               mov ax,  [0x201]             ; in x86 16-bit code
a101020304           mov eax, [0x4030201]         ; in x86 32-bit code
a10102030405060708   mov eax, [0x807060504030201] ; in x86-64

66a101020304         mov ax,  [0x4030201]         ; with 0x66, in x86 32-bit code
66a10102030405060708 mov ax,  [0x807060504030201] ; with 0x66, in x86-64

48a10102030405060708 mov rax, [0x807060504030201] ; with 0x48 REX.W, in x86-64
于 2013-03-10T10:36:44.080 に答える
0

これを見てください:

80806オペコードマップ

下部にそれらの説明があります

于 2013-03-10T10:36:06.110 に答える