2013-03-10 2 views
2

На странице http://daeken.pastebin.ca/raw/843310 содержится весь код сборки с описанием. Но я действительно не понимаю, например, 0xa1 : ['MOV', 'rAX,Ov'],..., посмотрите его описание. Я не мог понять, что это значит.Неисправный код ассемблерного кода

Вот тонны примеров, как это:

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

Может кто-нибудь объяснить, что означают эти странные символы?

ответ

2

Например:

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

Согласно Intel® 64 and IA-32 Architectures Developer's Manual: Combined Volumes Таблица A-2 , Однобайтная карта Opcode: (00H - F7H) 0xa1 - mov rAX, Ov.

Тогда таблица А.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)). 

Таблица А.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. 

Итак, вот несколько примеров инструкции en кодировки для 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 
+0

+1 Спасибо большого 'инструмента и примеры udcli -x'! Это имеет смысл. :) – xersi

1

Взгляните на это:

80806 Opcode Map

В нижней части вы найдете описание для тех, кто