131,15 → 131,16 |
pop ecx ebx edx |
mov al,ah |
cmp al,1 |
je basic_mem_reg_8bit |
je instruction_ready |
call operand_autodetect |
inc [base_code] |
basic_mem_reg_8bit: |
instruction_ready: |
call store_instruction |
jmp instruction_assembled |
basic_mem_imm: |
mov al,[operand_size] |
cmp al,1 |
jb basic_mem_imm_nosize |
je basic_mem_imm_8bit |
cmp al,2 |
je basic_mem_imm_16bit |
146,9 → 147,16 |
cmp al,4 |
je basic_mem_imm_32bit |
cmp al,8 |
je basic_mem_imm_64bit |
or al,al |
jnz invalid_operand_size |
jne invalid_operand_size |
basic_mem_imm_64bit: |
cmp [size_declared],0 |
jne long_immediate_not_encodable |
call operand_64bit |
call get_simm32 |
cmp [value_type],4 |
jae long_immediate_not_encodable |
jmp basic_mem_imm_32bit_ok |
basic_mem_imm_nosize: |
cmp [error_line],0 |
jne basic_mem_imm_8bit |
mov eax,[current_line] |
209,14 → 217,6 |
mov [base_code],81h |
call store_instruction_with_imm32 |
jmp instruction_assembled |
basic_mem_imm_64bit: |
cmp [size_declared],0 |
jne long_immediate_not_encodable |
call operand_64bit |
call get_simm32 |
cmp [value_type],4 |
jae long_immediate_not_encodable |
jmp basic_mem_imm_32bit_ok |
get_simm32: |
call get_qword_value |
mov ecx,edx |
250,12 → 250,10 |
je basic_reg_mem_8bit |
call operand_autodetect |
add [base_code],3 |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
basic_reg_mem_8bit: |
add [base_code],2 |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
basic_reg_reg: |
lods byte [esi] |
call convert_register |
263,10 → 261,10 |
mov [postbyte_register],al |
mov al,ah |
cmp al,1 |
je basic_reg_reg_8bit |
je nomem_instruction_ready |
call operand_autodetect |
inc [base_code] |
basic_reg_reg_8bit: |
nomem_instruction_ready: |
call store_nomem_instruction |
jmp instruction_assembled |
basic_reg_imm: |
278,15 → 276,15 |
cmp al,4 |
je basic_reg_imm_32bit |
cmp al,8 |
je basic_reg_imm_64bit |
or al,al |
jnz invalid_operand_size |
cmp [error_line],0 |
jne basic_reg_imm_32bit |
mov eax,[current_line] |
mov [error_line],eax |
mov [error],operand_size_not_specified |
jmp basic_reg_imm_32bit |
jne invalid_operand_size |
basic_reg_imm_64bit: |
cmp [size_declared],0 |
jne long_immediate_not_encodable |
call operand_64bit |
call get_simm32 |
cmp [value_type],4 |
jae long_immediate_not_encodable |
jmp basic_reg_imm_32bit_ok |
basic_reg_imm_8bit: |
call get_byte_value |
mov dl,al |
327,6 → 325,7 |
jz basic_ax_imm |
mov [base_code],81h |
call store_nomem_instruction |
basic_store_imm_16bit: |
mov ax,dx |
call mark_relocation |
stos word [edi] |
340,10 → 339,7 |
basic_ax_imm: |
add [base_code],5 |
call store_instruction_code |
mov ax,dx |
call mark_relocation |
stos word [edi] |
jmp instruction_assembled |
jmp basic_store_imm_16bit |
basic_reg_imm_32bit: |
call operand_32bit |
call get_dword_value |
365,6 → 361,7 |
jz basic_eax_imm |
mov [base_code],81h |
call store_nomem_instruction |
basic_store_imm_32bit: |
mov eax,edx |
call mark_relocation |
stos dword [edi] |
372,18 → 369,7 |
basic_eax_imm: |
add [base_code],5 |
call store_instruction_code |
mov eax,edx |
call mark_relocation |
stos dword [edi] |
jmp instruction_assembled |
basic_reg_imm_64bit: |
cmp [size_declared],0 |
jne long_immediate_not_encodable |
call operand_64bit |
call get_simm32 |
cmp [value_type],4 |
jae long_immediate_not_encodable |
jmp basic_reg_imm_32bit_ok |
jmp basic_store_imm_32bit |
single_operand_instruction: |
mov [base_code],0F6h |
mov [postbyte_register],al |
401,8 → 387,7 |
jb single_mem_nosize |
call operand_autodetect |
inc [base_code] |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
single_mem_nosize: |
cmp [error_line],0 |
jne single_mem_8bit |
410,8 → 395,7 |
mov [error_line],eax |
mov [error],operand_size_not_specified |
single_mem_8bit: |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
single_reg: |
lods byte [esi] |
call convert_register |
422,8 → 406,7 |
call operand_autodetect |
inc [base_code] |
single_reg_8bit: |
call store_nomem_instruction |
jmp instruction_assembled |
jmp nomem_instruction_ready |
mov_instruction: |
mov [base_code],88h |
lods byte [esi] |
463,14 → 446,11 |
or al,bh |
jz mov_mem_ax |
inc [base_code] |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
mov_mem_reg_8bit: |
or al,bl |
or al,bh |
jz mov_mem_al |
call store_instruction |
jmp instruction_assembled |
jnz instruction_ready |
mov_mem_al: |
test ch,22h |
jnz mov_mem_address16_al |
554,11 → 534,11 |
jne invalid_operand_size |
mov_mem_sreg_store: |
mov [base_code],8Ch |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
mov_mem_imm: |
mov al,[operand_size] |
cmp al,1 |
jb mov_mem_imm_nosize |
je mov_mem_imm_8bit |
cmp al,2 |
je mov_mem_imm_16bit |
565,15 → 545,15 |
cmp al,4 |
je mov_mem_imm_32bit |
cmp al,8 |
je mov_mem_imm_64bit |
or al,al |
jnz invalid_operand_size |
cmp [error_line],0 |
jne mov_mem_imm_32bit |
mov eax,[current_line] |
mov [error_line],eax |
mov [error],operand_size_not_specified |
jmp mov_mem_imm_32bit |
jne invalid_operand_size |
mov_mem_imm_64bit: |
cmp [size_declared],0 |
jne long_immediate_not_encodable |
call operand_64bit |
call get_simm32 |
cmp [value_type],4 |
jae long_immediate_not_encodable |
jmp mov_mem_imm_32bit_store |
mov_mem_imm_8bit: |
call get_byte_value |
mov byte [value],al |
591,6 → 571,12 |
pop ecx ebx edx |
call store_instruction_with_imm16 |
jmp instruction_assembled |
mov_mem_imm_nosize: |
cmp [error_line],0 |
jne mov_mem_imm_32bit |
mov eax,[current_line] |
mov [error_line],eax |
mov [error],operand_size_not_specified |
mov_mem_imm_32bit: |
call operand_32bit |
call get_dword_value |
601,14 → 587,6 |
pop ecx ebx edx |
call store_instruction_with_imm32 |
jmp instruction_assembled |
mov_mem_imm_64bit: |
cmp [size_declared],0 |
jne long_immediate_not_encodable |
call operand_64bit |
call get_simm32 |
cmp [value_type],4 |
jae long_immediate_not_encodable |
jmp mov_mem_imm_32bit_store |
mov_reg: |
lods byte [esi] |
mov ah,al |
645,8 → 623,7 |
call operand_autodetect |
inc [base_code] |
mov_reg_reg_8bit: |
call store_nomem_instruction |
jmp instruction_assembled |
jmp nomem_instruction_ready |
mov_reg_sreg: |
mov bl,[postbyte_register] |
mov ah,al |
674,8 → 651,7 |
call operand_32bit |
mov_reg_sreg_store: |
mov [base_code],8Ch |
call store_nomem_instruction |
jmp instruction_assembled |
jmp nomem_instruction_ready |
mov_reg_treg: |
cmp ah,9 |
jne invalid_operand |
700,13 → 676,11 |
stos byte [edi] |
mov [postbyte_register],0 |
mov_reg_xrx_store: |
call store_nomem_instruction |
jmp instruction_assembled |
jmp nomem_instruction_ready |
mov_reg_xrx_64bit: |
cmp [operand_size],8 |
jne invalid_operand_size |
call store_nomem_instruction |
jmp instruction_assembled |
jmp nomem_instruction_ready |
mov_reg_mem: |
call get_address |
mov al,[operand_size] |
718,8 → 692,7 |
or al,bh |
jz mov_ax_mem |
add [base_code],3 |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
mov_reg_mem_8bit: |
mov al,[postbyte_register] |
or al,bl |
726,8 → 699,7 |
or al,bh |
jz mov_al_mem |
add [base_code],2 |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
mov_al_mem: |
test ch,22h |
jnz mov_al_mem_address16 |
795,15 → 767,28 |
cmp al,4 |
je mov_reg_imm_32bit |
cmp al,8 |
je mov_reg_imm_64bit |
or al,al |
jnz invalid_operand_size |
cmp [error_line],0 |
jne mov_reg_imm_32bit |
mov eax,[current_line] |
mov [error_line],eax |
mov [error],operand_size_not_specified |
jmp mov_reg_imm_32bit |
jne invalid_operand_size |
mov_reg_imm_64bit: |
call operand_64bit |
call get_qword_value |
mov ecx,edx |
cmp [size_declared],0 |
jne mov_reg_imm_64bit_store |
cmp [value_type],4 |
jae mov_reg_imm_64bit_store |
cdq |
cmp ecx,edx |
je mov_reg_64bit_imm_32bit |
mov_reg_imm_64bit_store: |
push eax ecx |
mov al,0B8h |
call store_mov_reg_imm_code |
pop edx eax |
call mark_relocation |
stos dword [edi] |
mov eax,edx |
stos dword [edi] |
jmp instruction_assembled |
mov_reg_imm_8bit: |
call get_byte_value |
mov dl,al |
828,31 → 813,11 |
mov edx,eax |
mov al,0B8h |
call store_mov_reg_imm_code |
mov_store_imm_32bit: |
mov eax,edx |
call mark_relocation |
stos dword [edi] |
jmp instruction_assembled |
mov_reg_imm_64bit: |
call operand_64bit |
call get_qword_value |
mov ecx,edx |
cmp [size_declared],0 |
jne mov_reg_imm_64bit_store |
cmp [value_type],4 |
jae mov_reg_imm_64bit_store |
cdq |
cmp ecx,edx |
je mov_reg_64bit_imm_32bit |
mov_reg_imm_64bit_store: |
push eax ecx |
mov al,0B8h |
call store_mov_reg_imm_code |
pop edx eax |
call mark_relocation |
stos dword [edi] |
mov eax,edx |
stos dword [edi] |
jmp instruction_assembled |
store_mov_reg_imm_code: |
mov ah,[postbyte_register] |
test ah,1000b |
870,10 → 835,7 |
mov [postbyte_register],0 |
mov [base_code],0C7h |
call store_nomem_instruction |
mov eax,edx |
call mark_relocation |
stos dword [edi] |
jmp instruction_assembled |
jmp mov_store_imm_32bit |
mov_sreg: |
mov ah,al |
and al,1111b |
906,8 → 868,7 |
mov bl,al |
mov_sreg_reg_size_ok: |
mov [base_code],8Eh |
call store_nomem_instruction |
jmp instruction_assembled |
jmp nomem_instruction_ready |
mov_sreg_mem: |
call get_address |
mov al,[operand_size] |
917,8 → 878,7 |
jne invalid_operand_size |
mov_sreg_mem_size_ok: |
mov [base_code],8Eh |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
mov_treg: |
cmp ah,9 |
jne invalid_operand |
952,13 → 912,11 |
stos byte [edi] |
mov [postbyte_register],0 |
mov_xrx_store: |
call store_nomem_instruction |
jmp instruction_assembled |
jmp nomem_instruction_ready |
mov_xrx_64bit: |
cmp ah,8 |
jne invalid_operand_size |
call store_nomem_instruction |
jmp instruction_assembled |
je mov_xrx_store |
jmp invalid_operand_size |
cmov_instruction: |
mov [base_code],0Fh |
mov [extended_code],al |
984,14 → 942,12 |
mov bl,al |
mov al,ah |
call operand_autodetect |
call store_nomem_instruction |
jmp instruction_assembled |
jmp nomem_instruction_ready |
cmov_reg_mem: |
call get_address |
mov al,[operand_size] |
call operand_autodetect |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
test_instruction: |
mov [base_code],84h |
lods byte [esi] |
1023,11 → 979,11 |
call operand_autodetect |
inc [base_code] |
test_mem_reg_8bit: |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
test_mem_imm: |
mov al,[operand_size] |
cmp al,1 |
jb test_mem_imm_nosize |
je test_mem_imm_8bit |
cmp al,2 |
je test_mem_imm_16bit |
1034,15 → 990,15 |
cmp al,4 |
je test_mem_imm_32bit |
cmp al,8 |
je test_mem_imm_64bit |
or al,al |
jnz invalid_operand_size |
cmp [error_line],0 |
jne test_mem_imm_32bit |
mov eax,[current_line] |
mov [error_line],eax |
mov [error],operand_size_not_specified |
jmp test_mem_imm_32bit |
jne invalid_operand_size |
test_mem_imm_64bit: |
cmp [size_declared],0 |
jne long_immediate_not_encodable |
call operand_64bit |
call get_simm32 |
cmp [value_type],4 |
jae long_immediate_not_encodable |
jmp test_mem_imm_32bit_store |
test_mem_imm_8bit: |
call get_byte_value |
mov byte [value],al |
1060,6 → 1016,12 |
pop ecx ebx edx |
call store_instruction_with_imm16 |
jmp instruction_assembled |
test_mem_imm_nosize: |
cmp [error_line],0 |
jne test_mem_imm_32bit |
mov eax,[current_line] |
mov [error_line],eax |
mov [error],operand_size_not_specified |
test_mem_imm_32bit: |
call operand_32bit |
call get_dword_value |
1070,14 → 1032,6 |
pop ecx ebx edx |
call store_instruction_with_imm32 |
jmp instruction_assembled |
test_mem_imm_64bit: |
cmp [size_declared],0 |
jne long_immediate_not_encodable |
call operand_64bit |
call get_simm32 |
cmp [value_type],4 |
jae long_immediate_not_encodable |
jmp test_mem_imm_32bit_store |
test_reg: |
lods byte [esi] |
call convert_register |
1104,8 → 1058,7 |
call operand_autodetect |
inc [base_code] |
test_reg_reg_8bit: |
call store_nomem_instruction |
jmp instruction_assembled |
jmp nomem_instruction_ready |
test_reg_imm: |
mov al,[operand_size] |
cmp al,1 |
1115,8 → 1068,15 |
cmp al,4 |
je test_reg_imm_32bit |
cmp al,8 |
je test_reg_imm_64bit |
jmp invalid_operand_size |
jne invalid_operand_size |
test_reg_imm_64bit: |
cmp [size_declared],0 |
jne long_immediate_not_encodable |
call operand_64bit |
call get_simm32 |
cmp [value_type],4 |
jae long_immediate_not_encodable |
jmp test_reg_imm_32bit_store |
test_reg_imm_8bit: |
call get_byte_value |
mov dl,al |
1176,14 → 1136,6 |
mov eax,edx |
stos dword [edi] |
jmp instruction_assembled |
test_reg_imm_64bit: |
cmp [size_declared],0 |
jne long_immediate_not_encodable |
call operand_64bit |
call get_simm32 |
cmp [value_type],4 |
jae long_immediate_not_encodable |
jmp test_reg_imm_32bit_store |
test_reg_mem: |
call get_address |
mov al,[operand_size] |
1192,8 → 1144,7 |
call operand_autodetect |
inc [base_code] |
test_reg_mem_8bit: |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
xchg_instruction: |
mov [base_code],86h |
lods byte [esi] |
1259,8 → 1210,7 |
xchg_reg_reg_store: |
inc [base_code] |
xchg_reg_reg_8bit: |
call store_nomem_instruction |
jmp instruction_assembled |
jmp nomem_instruction_ready |
push_instruction: |
mov [push_size],al |
push_next: |
1734,8 → 1684,7 |
mov al,0FFh |
xchg al,[base_code] |
mov [postbyte_register],al |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
inc_mem_nosize: |
cmp [error_line],0 |
jne inc_mem_8bit |
1746,8 → 1695,7 |
mov al,0FEh |
xchg al,[base_code] |
mov [postbyte_register],al |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
inc_reg: |
lods byte [esi] |
call convert_register |
1771,8 → 1719,7 |
inc_reg_long_form: |
inc [base_code] |
inc_reg_8bit: |
call store_nomem_instruction |
jmp instruction_assembled |
jmp nomem_instruction_ready |
set_instruction: |
mov [base_code],0Fh |
mov [extended_code],al |
1787,8 → 1734,7 |
cmp [operand_size],1 |
ja invalid_operand_size |
mov [postbyte_register],0 |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
set_reg: |
lods byte [esi] |
call convert_register |
1796,8 → 1742,7 |
jne invalid_operand_size |
mov bl,al |
mov [postbyte_register],0 |
call store_nomem_instruction |
jmp instruction_assembled |
jmp nomem_instruction_ready |
arpl_instruction: |
cmp [code_type],64 |
je illegal_instruction |
1820,8 → 1765,7 |
mov [postbyte_register],al |
cmp ah,2 |
jne invalid_operand_size |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
arpl_reg: |
lods byte [esi] |
call convert_register |
1836,11 → 1780,8 |
jne invalid_operand |
lods byte [esi] |
call convert_register |
cmp ah,2 |
jne invalid_operand_size |
mov [postbyte_register],al |
call store_nomem_instruction |
jmp instruction_assembled |
jmp nomem_instruction_ready |
bound_instruction: |
cmp [code_type],64 |
je illegal_instruction |
1861,20 → 1802,13 |
call get_address |
mov al,[operand_size] |
cmp al,2 |
je bound_16bit |
je bound_store |
cmp al,4 |
je bound_32bit |
jmp invalid_operand_size |
bound_32bit: |
call operand_32bit |
jne invalid_operand_size |
bound_store: |
call operand_autodetect |
mov [base_code],62h |
call store_instruction |
jmp instruction_assembled |
bound_16bit: |
call operand_16bit |
mov [base_code],62h |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
enter_instruction: |
lods byte [esi] |
call get_size_operator |
1995,8 → 1929,7 |
pop eax |
mov [operand_size],al |
call operand_autodetect |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
ls_instruction: |
or al,al |
jz les_instruction |
2041,16 → 1974,13 |
jmp invalid_operand_size |
ls_16bit: |
call operand_16bit |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
ls_32bit: |
call operand_32bit |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
ls_64bit: |
call operand_64bit |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
sh_instruction: |
mov [postbyte_register],al |
lods byte [esi] |
2084,8 → 2014,7 |
jb sh_mem_cl_nosize |
call operand_autodetect |
mov [base_code],0D3h |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
sh_mem_cl_nosize: |
cmp [error_line],0 |
jne sh_mem_cl_8bit |
2094,8 → 2023,7 |
mov [error],operand_size_not_specified |
sh_mem_cl_8bit: |
mov [base_code],0D2h |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
sh_mem_imm: |
mov al,[operand_size] |
or al,al |
2117,8 → 2045,7 |
jmp instruction_assembled |
sh_mem_1: |
mov [base_code],0D1h |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
sh_mem_imm_nosize: |
cmp [error_line],0 |
jne sh_mem_imm_8bit |
2133,8 → 2060,7 |
jmp instruction_assembled |
sh_mem_1_8bit: |
mov [base_code],0D0h |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
sh_reg: |
lods byte [esi] |
call convert_register |
2158,12 → 2084,10 |
je sh_reg_cl_8bit |
call operand_autodetect |
mov [base_code],0D3h |
call store_nomem_instruction |
jmp instruction_assembled |
jmp nomem_instruction_ready |
sh_reg_cl_8bit: |
mov [base_code],0D2h |
call store_nomem_instruction |
jmp instruction_assembled |
jmp nomem_instruction_ready |
sh_reg_imm: |
mov al,[operand_size] |
or al,al |
2188,8 → 2112,7 |
jmp instruction_assembled |
sh_reg_1: |
mov [base_code],0D1h |
call store_nomem_instruction |
jmp instruction_assembled |
jmp nomem_instruction_ready |
sh_reg_imm_8bit: |
cmp dl,1 |
je sh_reg_1_8bit |
2200,8 → 2123,7 |
jmp instruction_assembled |
sh_reg_1_8bit: |
mov [base_code],0D0h |
call store_nomem_instruction |
jmp instruction_assembled |
jmp nomem_instruction_ready |
shd_instruction: |
mov [base_code],0Fh |
mov [extended_code],al |
2242,8 → 2164,7 |
pop eax ecx ebx edx |
call operand_autodetect |
inc [extended_code] |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
shd_mem_reg_imm: |
mov al,[operand_size] |
or al,al |
2290,8 → 2211,7 |
pop ebx eax |
call operand_autodetect |
inc [extended_code] |
call store_nomem_instruction |
jmp instruction_assembled |
jmp nomem_instruction_ready |
shd_reg_reg_imm: |
mov al,[operand_size] |
or al,al |
2343,8 → 2263,7 |
inc [extended_code] |
movx_mem_store: |
call operand_autodetect |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
movx_unknown_size: |
cmp [error_line],0 |
jne movx_mem_store |
2366,13 → 2285,11 |
jmp invalid_operand_size |
movx_reg_8bit: |
call operand_autodetect |
call store_nomem_instruction |
jmp instruction_assembled |
jmp nomem_instruction_ready |
movx_reg_16bit: |
call operand_autodetect |
inc [extended_code] |
call store_nomem_instruction |
jmp instruction_assembled |
jmp nomem_instruction_ready |
movsxd_instruction: |
mov [base_code],al |
lods byte [esi] |
2401,8 → 2318,7 |
jne invalid_operand_size |
movsxd_mem_store: |
call operand_64bit |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
movsxd_reg: |
lods byte [esi] |
call convert_register |
2410,8 → 2326,7 |
jne invalid_operand_size |
mov bl,al |
call operand_64bit |
call store_nomem_instruction |
jmp instruction_assembled |
jmp nomem_instruction_ready |
bt_instruction: |
mov [postbyte_register],al |
shl al,3 |
2446,8 → 2361,7 |
pop ecx ebx edx |
mov al,ah |
call operand_autodetect |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
bt_mem_imm: |
xor al,al |
xchg al,[operand_size] |
2503,8 → 2417,7 |
mov [postbyte_register],al |
mov al,ah |
call operand_autodetect |
call store_nomem_instruction |
jmp instruction_assembled |
jmp nomem_instruction_ready |
bt_reg_imm: |
xor al,al |
xchg al,[operand_size] |
2551,8 → 2464,7 |
call get_address |
mov al,[operand_size] |
call operand_autodetect |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
bs_reg_reg: |
lods byte [esi] |
call convert_register |
2559,8 → 2471,7 |
mov bl,al |
mov al,ah |
call operand_autodetect |
call store_nomem_instruction |
jmp instruction_assembled |
jmp nomem_instruction_ready |
imul_instruction: |
mov [base_code],0F6h |
mov [postbyte_register],5 |
2578,8 → 2489,7 |
jb imul_mem_nosize |
call operand_autodetect |
inc [base_code] |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
imul_mem_nosize: |
cmp [error_line],0 |
jne imul_mem_8bit |
2587,8 → 2497,7 |
mov [error_line],eax |
mov [error],operand_size_not_specified |
imul_mem_8bit: |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
imul_reg: |
lods byte [esi] |
call convert_register |
2600,11 → 2509,8 |
je imul_reg_8bit |
call operand_autodetect |
inc [base_code] |
call store_nomem_instruction |
jmp instruction_assembled |
imul_reg_8bit: |
call store_nomem_instruction |
jmp instruction_assembled |
jmp nomem_instruction_ready |
imul_reg_: |
mov [postbyte_register],al |
inc esi |
2631,8 → 2537,7 |
pop ecx ebx edx |
mov [base_code],0Fh |
mov [extended_code],0AFh |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
imul_reg_mem_imm: |
inc esi |
lods byte [esi] |
2645,8 → 2550,15 |
cmp al,4 |
je imul_reg_mem_imm_32bit |
cmp al,8 |
je imul_reg_mem_imm_64bit |
jmp invalid_operand_size |
jne invalid_operand_size |
imul_reg_mem_imm_64bit: |
cmp [size_declared],0 |
jne long_immediate_not_encodable |
call operand_64bit |
call get_simm32 |
cmp [value_type],4 |
jae long_immediate_not_encodable |
jmp imul_reg_mem_imm_32bit_ok |
imul_reg_mem_imm_16bit: |
call operand_16bit |
call get_word_value |
2682,14 → 2594,6 |
mov [base_code],69h |
call store_instruction_with_imm32 |
jmp instruction_assembled |
imul_reg_mem_imm_64bit: |
cmp [size_declared],0 |
jne long_immediate_not_encodable |
call operand_64bit |
call get_simm32 |
cmp [value_type],4 |
jae long_immediate_not_encodable |
jmp imul_reg_mem_imm_32bit_ok |
imul_reg_mem_imm_8bit_store: |
pop ecx ebx edx |
mov [base_code],6Bh |
2709,8 → 2613,7 |
call operand_autodetect |
mov [base_code],0Fh |
mov [extended_code],0AFh |
call store_nomem_instruction |
jmp instruction_assembled |
jmp nomem_instruction_ready |
imul_reg_reg_imm: |
inc esi |
lods byte [esi] |
2723,8 → 2626,16 |
cmp al,4 |
je imul_reg_reg_imm_32bit |
cmp al,8 |
je imul_reg_reg_imm_64bit |
jmp invalid_operand_size |
jne invalid_operand_size |
imul_reg_reg_imm_64bit: |
cmp [size_declared],0 |
jne long_immediate_not_encodable |
call operand_64bit |
push ebx |
call get_simm32 |
cmp [value_type],4 |
jae long_immediate_not_encodable |
jmp imul_reg_reg_imm_32bit_ok |
imul_reg_reg_imm_16bit: |
call operand_16bit |
push ebx |
2768,15 → 2679,6 |
call mark_relocation |
stos dword [edi] |
jmp instruction_assembled |
imul_reg_reg_imm_64bit: |
cmp [size_declared],0 |
jne long_immediate_not_encodable |
call operand_64bit |
push ebx |
call get_simm32 |
cmp [value_type],4 |
jae long_immediate_not_encodable |
jmp imul_reg_reg_imm_32bit_ok |
imul_reg_reg_imm_8bit_store: |
mov [base_code],6Bh |
call store_nomem_instruction |
2815,21 → 2717,15 |
cmp al,2 |
je in_ax_dx |
cmp al,4 |
je in_eax_dx |
jmp invalid_operand_size |
in_al_dx: |
mov al,0ECh |
stos byte [edi] |
jmp instruction_assembled |
jne invalid_operand_size |
in_ax_dx: |
call operand_16bit |
call operand_autodetect |
mov [base_code],0EDh |
call store_instruction_code |
jmp instruction_assembled |
in_eax_dx: |
call operand_32bit |
mov [base_code],0EDh |
call store_instruction_code |
in_al_dx: |
mov al,0ECh |
stos byte [edi] |
jmp instruction_assembled |
in_imm: |
mov al,[operand_size] |
2846,25 → 2742,17 |
cmp al,2 |
je in_ax_imm |
cmp al,4 |
je in_eax_imm |
jmp invalid_operand_size |
in_al_imm: |
mov al,0E4h |
stos byte [edi] |
mov al,dl |
stos byte [edi] |
jmp instruction_assembled |
jne invalid_operand_size |
in_ax_imm: |
call operand_16bit |
call operand_autodetect |
mov [base_code],0E5h |
call store_instruction_code |
mov al,dl |
stos byte [edi] |
jmp instruction_assembled |
in_eax_imm: |
call operand_32bit |
mov [base_code],0E5h |
call store_instruction_code |
in_al_imm: |
mov al,0E4h |
stos byte [edi] |
mov al,dl |
stos byte [edi] |
jmp instruction_assembled |
2896,21 → 2784,15 |
cmp al,2 |
je out_dx_ax |
cmp al,4 |
je out_dx_eax |
jmp invalid_operand_size |
out_dx_al: |
mov al,0EEh |
stos byte [edi] |
jmp instruction_assembled |
jne invalid_operand_size |
out_dx_ax: |
call operand_16bit |
call operand_autodetect |
mov [base_code],0EFh |
call store_instruction_code |
jmp instruction_assembled |
out_dx_eax: |
call operand_32bit |
mov [base_code],0EFh |
call store_instruction_code |
out_dx_al: |
mov al,0EEh |
stos byte [edi] |
jmp instruction_assembled |
out_imm: |
mov al,[operand_size] |
2939,25 → 2821,17 |
cmp al,2 |
je out_imm_ax |
cmp al,4 |
je out_imm_eax |
jmp invalid_operand_size |
out_imm_al: |
mov al,0E6h |
stos byte [edi] |
mov al,dl |
stos byte [edi] |
jmp instruction_assembled |
jne invalid_operand_size |
out_imm_ax: |
call operand_16bit |
call operand_autodetect |
mov [base_code],0E7h |
call store_instruction_code |
mov al,dl |
stos byte [edi] |
jmp instruction_assembled |
out_imm_eax: |
call operand_32bit |
mov [base_code],0E7h |
call store_instruction_code |
out_imm_al: |
mov al,0E6h |
stos byte [edi] |
mov al,dl |
stos byte [edi] |
jmp instruction_assembled |
3021,8 → 2895,7 |
je invalid_operand_size |
cmp [code_type],64 |
jne illegal_instruction |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
jmp_mem_far: |
cmp [code_type],16 |
je jmp_mem_far_32bit |
3032,8 → 2905,7 |
cmp [jump_type],2 |
je invalid_operand_size |
inc [postbyte_register] |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
jmp_mem_80bit: |
call operand_64bit |
jmp jmp_mem_far_store |
3051,14 → 2923,12 |
cmp [code_type],64 |
je illegal_instruction |
call operand_32bit |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
jmp_mem_16bit: |
cmp [jump_type],3 |
je invalid_operand_size |
call operand_16bit |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
jmp_reg: |
test [jump_type],1 |
jnz invalid_operand |
3075,17 → 2945,14 |
jmp_reg_64bit: |
cmp [code_type],64 |
jne illegal_instruction |
call store_nomem_instruction |
jmp instruction_assembled |
jmp nomem_instruction_ready |
jmp_reg_32bit: |
cmp [code_type],64 |
je illegal_instruction |
call store_nomem_instruction |
jmp instruction_assembled |
jmp nomem_instruction_ready |
jmp_reg_16bit: |
call operand_16bit |
call store_nomem_instruction |
jmp instruction_assembled |
jmp nomem_instruction_ready |
jmp_imm: |
cmp byte [esi],'.' |
je invalid_value |
3494,6 → 3361,7 |
call store_segment_prefix |
movs_segment_ok: |
mov al,0A4h |
movs_check_size: |
mov bl,[operand_size] |
cmp bl,1 |
je simple_instruction |
3505,8 → 3373,13 |
cmp bl,8 |
je simple_instruction_64bit |
or bl,bl |
jz operand_size_not_specified |
jmp invalid_operand_size |
jnz invalid_operand_size |
cmp [error_line],0 |
jne simple_instruction |
mov ebx,[current_line] |
mov [error_line],ebx |
mov [error],operand_size_not_specified |
jmp simple_instruction |
lods_instruction: |
lods byte [esi] |
call get_size_operator |
3539,19 → 3412,7 |
call store_segment_prefix |
lods_segment_ok: |
mov al,0ACh |
mov bl,[operand_size] |
cmp bl,1 |
je simple_instruction |
inc al |
cmp bl,2 |
je simple_instruction_16bit |
cmp bl,4 |
je simple_instruction_32bit |
cmp bl,8 |
je simple_instruction_64bit |
or bl,bl |
jz operand_size_not_specified |
jmp invalid_operand_size |
jmp movs_check_size |
stos_instruction: |
mov [base_code],al |
lods byte [esi] |
3583,19 → 3444,7 |
cmp [segment_register],1 |
ja invalid_address |
mov al,[base_code] |
mov bl,[operand_size] |
cmp bl,1 |
je simple_instruction |
inc al |
cmp bl,2 |
je simple_instruction_16bit |
cmp bl,4 |
je simple_instruction_32bit |
cmp bl,8 |
je simple_instruction_64bit |
or bl,bl |
jz operand_size_not_specified |
jmp invalid_operand_size |
jmp movs_check_size |
cmps_instruction: |
lods byte [esi] |
call get_size_operator |
3656,19 → 3505,7 |
call store_segment_prefix |
cmps_segment_ok: |
mov al,0A6h |
mov bl,[operand_size] |
cmp bl,1 |
je simple_instruction |
inc al |
cmp bl,2 |
je simple_instruction_16bit |
cmp bl,4 |
je simple_instruction_32bit |
cmp bl,8 |
je simple_instruction_64bit |
or bl,bl |
jz operand_size_not_specified |
jmp invalid_operand_size |
jmp movs_check_size |
ins_instruction: |
lods byte [esi] |
call get_size_operator |
3708,16 → 3545,9 |
cmp al,22h |
jne invalid_operand |
mov al,6Ch |
mov bl,[operand_size] |
cmp bl,1 |
je simple_instruction |
inc al |
cmp bl,2 |
je simple_instruction_16bit |
cmp bl,4 |
je simple_instruction_32bit |
or bl,bl |
jz operand_size_not_specified |
ins_check_size: |
cmp [operand_size],8 |
jne movs_check_size |
jmp invalid_operand_size |
outs_instruction: |
lods byte [esi] |
3760,17 → 3590,7 |
call store_segment_prefix |
outs_segment_ok: |
mov al,6Eh |
mov bl,[operand_size] |
cmp bl,1 |
je simple_instruction |
inc al |
cmp bl,2 |
je simple_instruction_16bit |
cmp bl,4 |
je simple_instruction_32bit |
or bl,bl |
jz operand_size_not_specified |
jmp invalid_operand_size |
jmp ins_check_size |
xlat_instruction: |
lods byte [esi] |
call get_size_operator |
3825,8 → 3645,7 |
or al,al |
jnz invalid_operand_size |
pm_mem_store: |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
pm_reg: |
lods byte [esi] |
call convert_register |
3833,8 → 3652,7 |
mov bl,al |
cmp ah,2 |
jne invalid_operand_size |
call store_nomem_instruction |
jmp instruction_assembled |
jmp nomem_instruction_ready |
pm_store_word_instruction: |
mov ah,al |
shr ah,4 |
3851,8 → 3669,7 |
mov bl,al |
mov al,ah |
call operand_autodetect |
call store_nomem_instruction |
jmp instruction_assembled |
jmp nomem_instruction_ready |
lgdt_instruction: |
mov [base_code],0Fh |
mov [extended_code],1 |
3881,8 → 3698,7 |
jb lgdt_mem_store |
call operand_32bit |
lgdt_mem_store: |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
lar_instruction: |
mov [extended_code],al |
mov [base_code],0Fh |
3912,8 → 3728,7 |
cmp al,2 |
jne invalid_operand_size |
lar_reg_mem: |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
lar_reg_reg: |
lods byte [esi] |
call convert_register |
3920,8 → 3735,7 |
cmp ah,2 |
jne invalid_operand_size |
mov bl,al |
call store_nomem_instruction |
jmp instruction_assembled |
jmp nomem_instruction_ready |
invlpg_instruction: |
mov [base_code],0Fh |
mov [extended_code],1 |
3931,15 → 3745,13 |
cmp al,'[' |
jne invalid_operand |
call get_address |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
swapgs_instruction: |
mov [base_code],0Fh |
mov [extended_code],1 |
mov [postbyte_register],7 |
mov bl,al |
call store_nomem_instruction |
jmp instruction_assembled |
jmp nomem_instruction_ready |
|
basic_486_instruction: |
mov [base_code],0Fh |
3969,8 → 3781,7 |
call operand_autodetect |
inc [extended_code] |
basic_486_mem_reg_8bit: |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
basic_486_reg: |
lods byte [esi] |
call convert_register |
3992,8 → 3803,7 |
call operand_autodetect |
inc [extended_code] |
basic_486_reg_reg_8bit: |
call store_nomem_instruction |
jmp instruction_assembled |
jmp nomem_instruction_ready |
bswap_instruction: |
lods byte [esi] |
call get_size_operator |
4041,8 → 3851,7 |
jne cmpxchgx_store |
call operand_64bit |
cmpxchgx_store: |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
nop_instruction: |
mov ah,[esi] |
cmp ah,10h |
4069,8 → 3878,7 |
jz extended_nop_store |
call operand_autodetect |
extended_nop_store: |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
extended_nop_reg: |
lods byte [esi] |
call convert_register |
4077,8 → 3885,7 |
mov bl,al |
mov al,ah |
call operand_autodetect |
call store_nomem_instruction |
jmp instruction_assembled |
jmp nomem_instruction_ready |
|
basic_fpu_instruction: |
mov [postbyte_register],al |
4096,8 → 3903,7 |
cmp ah,3 |
ja invalid_operand |
mov bl,1 |
call store_nomem_instruction |
jmp instruction_assembled |
jmp nomem_instruction_ready |
basic_fpu_mem: |
call get_address |
mov al,[operand_size] |
4113,12 → 3919,10 |
mov [error_line],eax |
mov [error],operand_size_not_specified |
basic_fpu_mem_32bit: |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
basic_fpu_mem_64bit: |
mov [base_code],0DCh |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
basic_fpu_streg: |
lods byte [esi] |
call convert_fpu_register |
4146,8 → 3950,7 |
or al,al |
jnz invalid_operand |
mov [base_code],0DCh |
call store_nomem_instruction |
jmp instruction_assembled |
jmp nomem_instruction_ready |
basic_fpu_st0: |
lods byte [esi] |
cmp al,',' |
4161,8 → 3964,7 |
mov bl,al |
basic_fpu_single_streg: |
mov [base_code],0D8h |
call store_nomem_instruction |
jmp instruction_assembled |
jmp nomem_instruction_ready |
simple_fpu_instruction: |
mov ah,al |
or ah,11000000b |
4190,12 → 3992,10 |
mov [error],operand_size_not_specified |
fi_mem_32bit: |
mov [base_code],0DAh |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
fi_mem_16bit: |
mov [base_code],0DEh |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
fld_instruction: |
mov [postbyte_register],al |
lods byte [esi] |
4221,12 → 4021,10 |
mov [error],operand_size_not_specified |
fld_mem_32bit: |
mov [base_code],0D9h |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
fld_mem_64bit: |
mov [base_code],0DDh |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
fld_mem_80bit: |
mov al,[postbyte_register] |
cmp al,0 |
4238,8 → 4036,7 |
fld_mem_80bit_store: |
add [postbyte_register],5 |
mov [base_code],0DBh |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
fld_streg: |
lods byte [esi] |
call convert_fpu_register |
4247,12 → 4044,10 |
cmp [postbyte_register],2 |
jae fst_streg |
mov [base_code],0D9h |
call store_nomem_instruction |
jmp instruction_assembled |
jmp nomem_instruction_ready |
fst_streg: |
mov [base_code],0DDh |
call store_nomem_instruction |
jmp instruction_assembled |
jmp nomem_instruction_ready |
fild_instruction: |
mov [postbyte_register],al |
lods byte [esi] |
4276,12 → 4071,10 |
mov [error],operand_size_not_specified |
fild_mem_32bit: |
mov [base_code],0DBh |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
fild_mem_16bit: |
mov [base_code],0DFh |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
fild_mem_64bit: |
mov al,[postbyte_register] |
cmp al,1 |
4294,12 → 4087,10 |
fild_mem_64bit_store: |
add [postbyte_register],5 |
mov [base_code],0DFh |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
fisttp_64bit_store: |
mov [base_code],0DDh |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
fbld_instruction: |
mov [postbyte_register],al |
lods byte [esi] |
4315,8 → 4106,7 |
jmp invalid_operand_size |
fbld_mem_80bit: |
mov [base_code],0DFh |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
faddp_instruction: |
mov [postbyte_register],al |
mov [base_code],0DEh |
4327,8 → 4117,7 |
je faddp_streg |
mov esi,edx |
mov bl,1 |
call store_nomem_instruction |
jmp instruction_assembled |
jmp nomem_instruction_ready |
faddp_streg: |
lods byte [esi] |
call convert_fpu_register |
4344,8 → 4133,7 |
call convert_fpu_register |
or al,al |
jnz invalid_operand |
call store_nomem_instruction |
jmp instruction_assembled |
jmp nomem_instruction_ready |
fcompp_instruction: |
mov ax,0D9DEh |
stos word [edi] |
4431,8 → 4219,7 |
call get_address |
cmp [operand_size],0 |
jne invalid_operand_size |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
fstcw_instruction: |
mov byte [edi],9Bh |
inc edi |
4451,8 → 4238,7 |
je fldcw_mem_16bit |
jmp invalid_operand_size |
fldcw_mem_16bit: |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
fstsw_instruction: |
mov al,9Bh |
stos byte [edi] |
4473,8 → 4259,7 |
je fstsw_mem_16bit |
jmp invalid_operand_size |
fstsw_mem_16bit: |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
fstsw_reg: |
lods byte [esi] |
call convert_register |
4553,14 → 4338,12 |
jne invalid_operand |
mmx_mmreg_mem: |
call get_address |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
mmx_mmreg_mmreg: |
lods byte [esi] |
call convert_mmx_register |
mov bl,al |
call store_nomem_instruction |
jmp instruction_assembled |
jmp nomem_instruction_ready |
mmx_ps_instruction: |
mov [base_code],0Fh |
mov [extended_code],al |
4629,8 → 4412,7 |
call make_mmx_prefix |
cmp [extended_code],0C5h |
je mmx_nomem_imm8 |
call store_nomem_instruction |
jmp instruction_assembled |
jmp nomem_instruction_ready |
mmx_imm8: |
push ebx ecx edx |
mov [operand_size],0 |
4759,8 → 4541,7 |
call convert_mmx_register |
call make_mmx_prefix |
mov [postbyte_register],al |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
movd_reg: |
lods byte [esi] |
cmp al,0B0h |
4781,8 → 4562,7 |
call convert_mmx_register |
mov [postbyte_register],al |
call make_mmx_prefix |
call store_nomem_instruction |
jmp instruction_assembled |
jmp nomem_instruction_ready |
movd_mmreg: |
mov [extended_code],6Eh |
call convert_mmx_register |
4801,8 → 4581,7 |
call get_address |
test [operand_size],not 4 |
jnz invalid_operand_size |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
movd_mmreg_reg: |
lods byte [esi] |
call convert_register |
4809,8 → 4588,7 |
cmp ah,4 |
jne invalid_operand_size |
mov bl,al |
call store_nomem_instruction |
jmp instruction_assembled |
jmp nomem_instruction_ready |
make_mmx_prefix: |
cmp [operand_size],16 |
jne no_mmx_prefix |
4841,13 → 4619,11 |
cmp ah,16 |
je movq_mem_xmmreg |
mov [extended_code],7Fh |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
movq_mem_xmmreg: |
mov [extended_code],0D6h |
mov [opcode_prefix],66h |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
movq_reg: |
lods byte [esi] |
cmp al,0B0h |
4870,8 → 4646,7 |
call make_mmx_prefix |
mov [extended_code],7Eh |
call operand_64bit |
call store_nomem_instruction |
jmp instruction_assembled |
jmp nomem_instruction_ready |
movq_mmreg: |
call convert_mmx_register |
mov [postbyte_register],al |
4893,8 → 4668,7 |
call get_address |
test [operand_size],not 8 |
jnz invalid_operand_size |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
movq_mmreg_reg: |
lods byte [esi] |
cmp al,0B0h |
4911,15 → 4685,13 |
mov [opcode_prefix],66h |
movq_mmreg_reg_store: |
call operand_64bit |
call store_nomem_instruction |
jmp instruction_assembled |
jmp nomem_instruction_ready |
movq_mmreg_mmreg: |
call convert_mmx_register |
cmp ah,[mmx_size] |
jne invalid_operand_size |
mov bl,al |
call store_nomem_instruction |
jmp instruction_assembled |
jmp nomem_instruction_ready |
movdq_instruction: |
mov [opcode_prefix],al |
mov [base_code],0Fh |
4944,8 → 4716,7 |
jne invalid_operand_size |
mov [postbyte_register],al |
mov [extended_code],7Fh |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
movdq_mmreg: |
lods byte [esi] |
call convert_mmx_register |
4962,8 → 4733,7 |
cmp al,'[' |
jne invalid_operand |
call get_address |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
movdq_mmreg_mmreg: |
lods byte [esi] |
call convert_mmx_register |
4970,8 → 4740,7 |
cmp ah,16 |
jne invalid_operand_size |
mov bl,al |
call store_nomem_instruction |
jmp instruction_assembled |
jmp nomem_instruction_ready |
lddqu_instruction: |
lods byte [esi] |
call get_size_operator |
4995,8 → 4764,7 |
mov [opcode_prefix],0F2h |
mov [base_code],0Fh |
mov [extended_code],0F0h |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
movq2dq_instruction: |
lods byte [esi] |
call get_size_operator |
5023,8 → 4791,7 |
mov [opcode_prefix],0F3h |
mov [base_code],0Fh |
mov [extended_code],0D6h |
call store_nomem_instruction |
jmp instruction_assembled |
jmp nomem_instruction_ready |
movdq2q_instruction: |
lods byte [esi] |
call get_size_operator |
5051,8 → 4818,7 |
mov [opcode_prefix],0F2h |
mov [base_code],0Fh |
mov [extended_code],0D6h |
call store_nomem_instruction |
jmp instruction_assembled |
jmp nomem_instruction_ready |
|
sse_ps_instruction_imm8: |
mov [immediate_size],8 |
5128,8 → 4894,7 |
jne sse_ok |
call take_additional_xmm0 |
sse_ok: |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
sse_xmmreg_xmmreg: |
cmp [operand_prefix],66h |
jne sse_xmmreg_xmmreg_ok |
5149,8 → 4914,7 |
jne sse_nomem_ok |
call take_additional_xmm0 |
sse_nomem_ok: |
call store_nomem_instruction |
jmp instruction_assembled |
jmp nomem_instruction_ready |
take_additional_xmm0: |
lods byte [esi] |
cmp al,',' |
5234,8 → 4998,7 |
cmp ah,16 |
jne invalid_operand_size |
mov [postbyte_register],al |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
movlpd_instruction: |
mov [opcode_prefix],66h |
movlps_instruction: |
5307,8 → 5070,7 |
lods byte [esi] |
call convert_mmx_register |
mov bl,al |
call store_nomem_instruction |
jmp instruction_assembled |
jmp nomem_instruction_ready |
movmskpd_instruction: |
mov [opcode_prefix],66h |
movmskps_instruction: |
5336,8 → 5098,7 |
cmp ah,16 |
jne invalid_operand_size |
mov bl,al |
call store_nomem_instruction |
jmp instruction_assembled |
jmp nomem_instruction_ready |
cmppd_instruction: |
mov [opcode_prefix],66h |
cmpps_instruction: |
5475,8 → 5236,7 |
cmp [operand_size],8 |
jne invalid_operand_size |
cvtpi_size_ok: |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
cvtpi_xmmreg_xmmreg: |
lods byte [esi] |
call convert_mmx_register |
5483,8 → 5243,7 |
cmp ah,8 |
jne invalid_operand_size |
mov bl,al |
call store_nomem_instruction |
jmp instruction_assembled |
jmp nomem_instruction_ready |
cvtsi2ss_instruction: |
mov [opcode_prefix],0F3h |
jmp cvtsi_instruction |
5518,8 → 5277,7 |
cmp [operand_size],4 |
jne invalid_operand_size |
cvtsi_size_ok: |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
cvtsi_xmmreg_reg: |
lods byte [esi] |
call convert_register |
5530,8 → 5288,7 |
call operand_64bit |
cvtsi_xmmreg_reg_store: |
mov bl,al |
call store_nomem_instruction |
jmp instruction_assembled |
jmp nomem_instruction_ready |
cvtps2pi_instruction: |
mov [mmx_size],8 |
jmp cvtpd_instruction |
5946,8 → 5703,7 |
mov al,[mmx_size] |
cmp al,[operand_size] |
jne invalid_operand_size |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
pmovsx_xmmreg_reg: |
lods byte [esi] |
call convert_mmx_register |
5954,8 → 5710,7 |
cmp ah,16 |
jne invalid_operand_size |
mov bl,al |
call store_nomem_instruction |
jmp instruction_assembled |
jmp nomem_instruction_ready |
|
fxsave_instruction: |
mov [extended_code],0AEh |
5983,8 → 5738,7 |
cmp ah,1 |
jne invalid_operand_size |
fxsave_size_ok: |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
prefetch_instruction: |
mov [extended_code],18h |
prefetch_mem_8bit: |
6000,8 → 5754,7 |
jne invalid_operand_size |
prefetch_size_ok: |
call get_address |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
amd_prefetch_instruction: |
mov [extended_code],0Dh |
jmp prefetch_mem_8bit |
6045,8 → 5798,7 |
cmp ah,[mmx_size] |
jne invalid_operand_size |
mov [postbyte_register],al |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
|
movntsd_instruction: |
mov [opcode_prefix],0F2h |
6082,8 → 5834,7 |
cmp ah,16 |
jne invalid_operand_size |
mov [postbyte_register],al |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
|
movnti_instruction: |
mov [base_code],0Fh |
6109,8 → 5860,7 |
call operand_64bit |
movnti_store: |
mov [postbyte_register],al |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
monitor_instruction: |
mov [postbyte_register],al |
lods byte [esi] |
6173,8 → 5923,7 |
cmp al,'[' |
jne invalid_operand |
call get_address |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
|
extrq_instruction: |
mov [opcode_prefix],66h |
6214,8 → 5963,7 |
cmp ah,16 |
jne invalid_operand_size |
mov bl,al |
call store_nomem_instruction |
jmp instruction_assembled |
jmp nomem_instruction_ready |
insertq_instruction: |
mov [opcode_prefix],0F2h |
mov [base_code],0Fh |
6245,8 → 5993,7 |
cmp byte [esi],',' |
je insertq_with_imm |
inc [extended_code] |
call store_nomem_instruction |
jmp instruction_assembled |
jmp nomem_instruction_ready |
insertq_with_imm: |
call store_nomem_instruction |
call append_imm8 |
6290,8 → 6037,7 |
inc [supplemental_code] |
call operand_autodetect |
crc32_reg32_mem_store: |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
crc32_unknown_size: |
cmp [error_line],0 |
jne crc32_reg32_mem_store |
6311,8 → 6057,7 |
inc [supplemental_code] |
call operand_autodetect |
crc32_reg32_reg_store: |
call store_nomem_instruction |
jmp instruction_assembled |
jmp nomem_instruction_ready |
crc32_reg64: |
lods byte [esi] |
cmp al,',' |
6377,8 → 6122,7 |
jne invalid_operand_size |
vmx_size_ok: |
mov [base_code],0Fh |
call store_instruction |
jmp instruction_assembled |
jmp instruction_ready |
vmread_instruction: |
mov [extended_code],78h |
lods byte [esi] |
6421,8 → 6165,7 |
call vmread_check_size |
pop ebx |
mov [base_code],0Fh |
call store_nomem_instruction |
jmp instruction_assembled |
jmp nomem_instruction_ready |
vmread_check_size: |
cmp [code_type],64 |
je vmread_long |
6461,8 → 6204,7 |
call convert_register |
mov bl,al |
mov [base_code],0Fh |
call store_nomem_instruction |
jmp instruction_assembled |
jmp nomem_instruction_ready |
simple_svm_instruction: |
push eax |
mov [base_code],0Fh |
6835,22 → 6577,10 |
je invalid_address_size |
call address_16bit_prefix |
call store_instruction_code |
cmp bx,2326h |
je address_bx_si |
cmp bx,2623h |
je address_bx_si |
cmp bx,2327h |
je address_bx_di |
cmp bx,2723h |
je address_bx_di |
cmp bx,2526h |
je address_bp_si |
cmp bx,2625h |
je address_bp_si |
cmp bx,2527h |
je address_bp_di |
cmp bx,2725h |
je address_bp_di |
cmp bl,bh |
jbe determine_16bit_address |
xchg bl,bh |
determine_16bit_address: |
cmp bx,2600h |
je address_si |
cmp bx,2700h |
6859,7 → 6589,14 |
je address_bx |
cmp bx,2500h |
je address_bp |
jmp invalid_address |
cmp bx,2625h |
je address_bp_si |
cmp bx,2725h |
je address_bp_di |
cmp bx,2723h |
je address_bx_di |
cmp bx,2623h |
jne invalid_address |
address_bx_si: |
xor al,al |
jmp postbyte_16bit |