Subversion Repositories Kolibri OS

Compare Revisions

Ignore whitespace Rev 3010 → Rev 3011

/programs/develop/fasm/trunk/WHATSNEW.TXT
File deleted
/programs/develop/fasm/trunk/struct.inc
File deleted
Property changes:
Deleted: svn:eol-style
-native
\ No newline at end of property
/programs/develop/fasm/trunk/avx.inc
4,71 → 4,71
; All rights reserved.
 
avx_single_source_pd_instruction:
or [vex_required],2
jmp avx_pd_instruction
avx_pd_instruction_imm8:
mov [immediate_size],1
avx_pd_instruction:
mov [opcode_prefix],66h
mov [mmx_size],0
jmp avx_instruction
avx_single_source_ps_instruction:
or [vex_required],2
jmp avx_ps_instruction
avx_ps_instruction_imm8:
mov [immediate_size],1
avx_ps_instruction:
mov [mmx_size],0
jmp avx_instruction
avx_sd_instruction_imm8:
mov [immediate_size],1
avx_sd_instruction:
mov [opcode_prefix],0F2h
mov [mmx_size],8
jmp avx_instruction
avx_ss_instruction_imm8:
mov [immediate_size],1
avx_ss_instruction:
mov [opcode_prefix],0F3h
mov [mmx_size],4
jmp avx_instruction
avx_cmp_pd_instruction:
mov [opcode_prefix],66h
avx_cmp_ps_instruction:
mov [mmx_size],0
mov byte [value],al
mov al,0C2h
jmp avx_instruction
avx_cmp_sd_instruction:
mov [opcode_prefix],0F2h
mov [mmx_size],8
mov byte [value],al
mov al,0C2h
jmp avx_instruction
avx_cmp_ss_instruction:
mov [opcode_prefix],0F3h
mov [mmx_size],4
mov byte [value],al
mov al,0C2h
jmp avx_instruction
avx_comiss_instruction:
or [vex_required],2
mov [mmx_size],4
jmp avx_instruction
avx_comisd_instruction:
or [vex_required],2
mov [opcode_prefix],66h
mov [mmx_size],8
jmp avx_instruction
avx_haddps_instruction:
mov [opcode_prefix],0F2h
mov [mmx_size],0
jmp avx_instruction
avx_movshdup_instruction:
or [vex_required],2
jmp avx_pd_instruction
avx_pd_instruction_imm8:
mov [immediate_size],1
avx_pd_instruction:
mov [opcode_prefix],66h
mov [mmx_size],0
jmp avx_instruction
avx_single_source_ps_instruction:
or [vex_required],2
jmp avx_ps_instruction
avx_ps_instruction_imm8:
mov [immediate_size],1
avx_ps_instruction:
mov [mmx_size],0
jmp avx_instruction
avx_sd_instruction_imm8:
mov [immediate_size],1
avx_sd_instruction:
mov [opcode_prefix],0F2h
mov [mmx_size],8
jmp avx_instruction
avx_ss_instruction_imm8:
mov [immediate_size],1
avx_ss_instruction:
mov [opcode_prefix],0F3h
mov [mmx_size],4
jmp avx_instruction
avx_cmp_pd_instruction:
mov [opcode_prefix],66h
avx_cmp_ps_instruction:
mov [mmx_size],0
mov byte [value],al
mov al,0C2h
jmp avx_instruction
avx_cmp_sd_instruction:
mov [opcode_prefix],0F2h
mov [mmx_size],8
mov byte [value],al
mov al,0C2h
jmp avx_instruction
avx_cmp_ss_instruction:
mov [opcode_prefix],0F3h
mov [mmx_size],4
mov byte [value],al
mov al,0C2h
jmp avx_instruction
avx_comiss_instruction:
or [vex_required],2
mov [mmx_size],4
jmp avx_instruction
avx_comisd_instruction:
or [vex_required],2
mov [opcode_prefix],66h
mov [mmx_size],8
jmp avx_instruction
avx_haddps_instruction:
mov [opcode_prefix],0F2h
mov [mmx_size],0
jmp avx_instruction
avx_movshdup_instruction:
or [vex_required],2
mov [opcode_prefix],0F3h
mov [mmx_size],0
jmp avx_instruction
avx_128bit_instruction:
mov [mmx_size],16
mov [opcode_prefix],66h
75,140 → 75,140
avx_instruction:
mov [base_code],0Fh
mov [extended_code],al
avx_common:
or [vex_required],1
lods byte [esi]
call get_size_operator
cmp al,10h
jne invalid_operand
avx_reg:
lods byte [esi]
call convert_avx_register
mov [postbyte_register],al
avx_vex_reg:
test [vex_required],2
jnz avx_vex_reg_ok
lods byte [esi]
cmp al,','
jne invalid_operand
call take_avx_register
mov [vex_register],al
avx_vex_reg_ok:
cmp [mmx_size],0
je avx_regs_size_ok
cmp ah,16
jne invalid_operand
avx_regs_size_ok:
lods byte [esi]
cmp al,','
jne invalid_operand
call take_avx_rm
jc avx_regs_reg
mov al,[extended_code]
mov ah,[supplemental_code]
cmp al,0C2h
je sse_cmp_mem_ok
cmp ax,443Ah
je sse_cmp_mem_ok
mov al,[base_code]
and al,11011100b
cmp al,11001100b
je sse_cmp_mem_ok
cmp [immediate_size],1
je mmx_imm8
cmp [immediate_size],0
jge instruction_ready
cmp byte [esi],','
jne invalid_operand
inc esi
call take_avx_register
shl al,4
or byte [value],al
test al,80h
jz avx_regs_mem_reg_store
cmp [code_type],64
jne invalid_operand
avx_regs_mem_reg_store:
call take_imm4_if_needed
call store_instruction_with_imm8
jmp instruction_assembled
avx_regs_reg:
mov bl,al
mov al,[extended_code]
mov ah,[supplemental_code]
cmp al,0C2h
je sse_cmp_nomem_ok
cmp ax,443Ah
je sse_cmp_nomem_ok
mov al,[base_code]
and al,11011100b
cmp al,11001100b
je sse_cmp_nomem_ok
cmp [immediate_size],1
je mmx_nomem_imm8
cmp [immediate_size],0
jge nomem_instruction_ready
lods byte [esi]
cmp al,','
jne invalid_operand
mov al,bl
shl al,4
or byte [value],al
test al,80h
jz avx_regs_reg_
cmp [code_type],64
jne invalid_operand
avx_regs_reg_:
call take_avx_rm
jc avx_regs_reg_reg
cmp [immediate_size],-2
jg invalid_operand
or [rex_prefix],8
call take_imm4_if_needed
call store_instruction_with_imm8
jmp instruction_assembled
avx_regs_reg_reg:
shl al,4
and byte [value],1111b
or byte [value],al
call take_imm4_if_needed
call store_nomem_instruction
mov al,byte [value]
stos byte [edi]
jmp instruction_assembled
take_avx_rm:
xor cl,cl
xchg cl,[operand_size]
lods byte [esi]
call get_size_operator
cmp al,'['
je take_avx_mem
mov [operand_size],cl
cmp al,10h
jne invalid_operand
lods byte [esi]
call convert_avx_register
cmp [mmx_size],0
je avx_reg_ok
cmp ah,16
jne invalid_operand
avx_reg_ok:
stc
ret
take_avx_mem:
push ecx
call get_address
pop eax
cmp [mmx_size],0
jne avx_smem
xchg al,[operand_size]
or al,al
jz avx_mem_ok
cmp al,[operand_size]
jne operand_sizes_do_not_match
avx_mem_ok:
clc
avx_common:
or [vex_required],1
lods byte [esi]
call get_size_operator
cmp al,10h
jne invalid_operand
avx_reg:
lods byte [esi]
call convert_avx_register
mov [postbyte_register],al
avx_vex_reg:
test [vex_required],2
jnz avx_vex_reg_ok
lods byte [esi]
cmp al,','
jne invalid_operand
call take_avx_register
mov [vex_register],al
avx_vex_reg_ok:
cmp [mmx_size],0
je avx_regs_size_ok
cmp ah,16
jne invalid_operand
avx_regs_size_ok:
lods byte [esi]
cmp al,','
jne invalid_operand
call take_avx_rm
jc avx_regs_reg
mov al,[extended_code]
mov ah,[supplemental_code]
cmp al,0C2h
je sse_cmp_mem_ok
cmp ax,443Ah
je sse_cmp_mem_ok
mov al,[base_code]
and al,11011100b
cmp al,11001100b
je sse_cmp_mem_ok
cmp [immediate_size],1
je mmx_imm8
cmp [immediate_size],0
jge instruction_ready
cmp byte [esi],','
jne invalid_operand
inc esi
call take_avx_register
shl al,4
or byte [value],al
test al,80h
jz avx_regs_mem_reg_store
cmp [code_type],64
jne invalid_operand
avx_regs_mem_reg_store:
call take_imm4_if_needed
call store_instruction_with_imm8
jmp instruction_assembled
avx_regs_reg:
mov bl,al
mov al,[extended_code]
mov ah,[supplemental_code]
cmp al,0C2h
je sse_cmp_nomem_ok
cmp ax,443Ah
je sse_cmp_nomem_ok
mov al,[base_code]
and al,11011100b
cmp al,11001100b
je sse_cmp_nomem_ok
cmp [immediate_size],1
je mmx_nomem_imm8
cmp [immediate_size],0
jge nomem_instruction_ready
lods byte [esi]
cmp al,','
jne invalid_operand
mov al,bl
shl al,4
or byte [value],al
test al,80h
jz avx_regs_reg_
cmp [code_type],64
jne invalid_operand
avx_regs_reg_:
call take_avx_rm
jc avx_regs_reg_reg
cmp [immediate_size],-2
jg invalid_operand
or [rex_prefix],8
call take_imm4_if_needed
call store_instruction_with_imm8
jmp instruction_assembled
avx_regs_reg_reg:
shl al,4
and byte [value],1111b
or byte [value],al
call take_imm4_if_needed
call store_nomem_instruction
mov al,byte [value]
stos byte [edi]
jmp instruction_assembled
take_avx_rm:
xor cl,cl
xchg cl,[operand_size]
lods byte [esi]
call get_size_operator
cmp al,'['
je take_avx_mem
mov [operand_size],cl
cmp al,10h
jne invalid_operand
lods byte [esi]
call convert_avx_register
cmp [mmx_size],0
je avx_reg_ok
cmp ah,16
jne invalid_operand
avx_reg_ok:
stc
ret
take_avx_mem:
push ecx
call get_address
pop eax
cmp [mmx_size],0
jne avx_smem
xchg al,[operand_size]
or al,al
jz avx_mem_ok
cmp al,[operand_size]
jne operand_sizes_do_not_match
avx_mem_ok:
clc
ret
avx_smem:
xchg al,[operand_size]
or al,al
219,20 → 219,20
clc
ret
take_imm4_if_needed:
cmp [immediate_size],-3
jne imm4_ok
push ebx ecx edx
lods byte [esi]
cmp al,','
jne invalid_operand
lods byte [esi]
cmp al,'('
jne invalid_operand
call get_byte_value
test al,11110000b
jnz value_out_of_range
or byte [value],al
pop edx ecx ebx
cmp [immediate_size],-3
jne imm4_ok
push ebx ecx edx
lods byte [esi]
cmp al,','
jne invalid_operand
lods byte [esi]
cmp al,'('
jne invalid_operand
call get_byte_value
test al,11110000b
jnz value_out_of_range
or byte [value],al
pop edx ecx ebx
imm4_ok:
ret
 
257,16 → 257,16
avx_ss_instruction_3a_imm8:
mov [mmx_size],4
jmp avx_instruction_3a_imm8_setup
avx_sd_instruction_3a_imm8:
mov [mmx_size],8
jmp avx_instruction_3a_imm8_setup
avx_single_source_128bit_instruction_3a_imm8:
or [vex_required],2
avx_128bit_instruction_3a_imm8:
mov [mmx_size],16
jmp avx_instruction_3a_imm8_setup
avx_triple_source_instruction_3a:
mov [mmx_size],0
avx_sd_instruction_3a_imm8:
mov [mmx_size],8
jmp avx_instruction_3a_imm8_setup
avx_single_source_128bit_instruction_3a_imm8:
or [vex_required],2
avx_128bit_instruction_3a_imm8:
mov [mmx_size],16
jmp avx_instruction_3a_imm8_setup
avx_triple_source_instruction_3a:
mov [mmx_size],0
mov [immediate_size],-1
mov byte [value],0
jmp avx_instruction_3a_setup
273,16 → 273,16
avx_single_source_instruction_3a_imm8:
or [vex_required],2
avx_instruction_3a_imm8:
mov [mmx_size],0
avx_instruction_3a_imm8_setup:
mov [immediate_size],1
avx_instruction_3a_setup:
mov [opcode_prefix],66h
mov [supplemental_code],al
mov al,3Ah
jmp avx_instruction
avx_pclmulqdq_instruction:
mov byte [value],al
mov [mmx_size],0
avx_instruction_3a_imm8_setup:
mov [immediate_size],1
avx_instruction_3a_setup:
mov [opcode_prefix],66h
mov [supplemental_code],al
mov al,3Ah
jmp avx_instruction
avx_pclmulqdq_instruction:
mov byte [value],al
mov [mmx_size],16
mov al,44h
jmp avx_instruction_3a_setup
304,7 → 304,7
mov [mmx_size],0
or [vex_required],1
call take_avx_register
cmp ah,32
cmp ah,32
jne invalid_operand_size
mov [postbyte_register],al
jmp avx_vex_reg
311,41 → 311,41
 
avx_movdqu_instruction:
mov [opcode_prefix],0F3h
jmp avx_movps_instruction
avx_movpd_instruction:
mov [opcode_prefix],66h
avx_movps_instruction:
mov [mmx_size],0
or [vex_required],2
mov [base_code],0Fh
mov [extended_code],al
lods byte [esi]
call get_size_operator
cmp al,10h
je avx_reg
inc [extended_code]
test [extended_code],1
jnz avx_mem
add [extended_code],-1+10h
avx_mem:
cmp al,'['
jne invalid_operand
call get_address
lods byte [esi]
cmp al,','
jne invalid_operand
call take_avx_register
mov [postbyte_register],al
jmp instruction_ready
avx_movntpd_instruction:
mov [opcode_prefix],66h
avx_movntps_instruction:
or [vex_required],1
mov [base_code],0Fh
mov [extended_code],al
lods byte [esi]
call get_size_operator
jmp avx_mem
jmp avx_movps_instruction
avx_movpd_instruction:
mov [opcode_prefix],66h
avx_movps_instruction:
mov [mmx_size],0
or [vex_required],2
mov [base_code],0Fh
mov [extended_code],al
lods byte [esi]
call get_size_operator
cmp al,10h
je avx_reg
inc [extended_code]
test [extended_code],1
jnz avx_mem
add [extended_code],-1+10h
avx_mem:
cmp al,'['
jne invalid_operand
call get_address
lods byte [esi]
cmp al,','
jne invalid_operand
call take_avx_register
mov [postbyte_register],al
jmp instruction_ready
avx_movntpd_instruction:
mov [opcode_prefix],66h
avx_movntps_instruction:
or [vex_required],1
mov [base_code],0Fh
mov [extended_code],al
lods byte [esi]
call get_size_operator
jmp avx_mem
avx_lddqu_instruction:
mov [opcode_prefix],0F2h
mov [mmx_size],0
353,23 → 353,23
avx_load_instruction:
mov [base_code],0Fh
mov [extended_code],al
or [vex_required],1
call take_avx_register
or cl,cl
jz avx_load_reg_ok
cmp ah,cl
jne invalid_operand
avx_load_reg_ok:
cmp [mmx_size],0
je avx_load_reg_
xor ah,ah
avx_load_reg_:
xchg ah,[operand_size]
push eax
lods byte [esi]
cmp al,','
or [vex_required],1
call take_avx_register
or cl,cl
jz avx_load_reg_ok
cmp ah,cl
jne invalid_operand
avx_load_reg_ok:
cmp [mmx_size],0
je avx_load_reg_
xor ah,ah
avx_load_reg_:
xchg ah,[operand_size]
push eax
lods byte [esi]
cmp al,','
jne invalid_operand
lods byte [esi]
call get_size_operator
cmp al,10h
je avx_load_reg_reg
376,14 → 376,14
cmp al,'['
jne invalid_operand
call get_address
pop eax
xchg ah,[operand_size]
mov [postbyte_register],al
mov al,[mmx_size]
or al,al
jz instruction_ready
or ah,ah
jz instruction_ready
pop eax
xchg ah,[operand_size]
mov [postbyte_register],al
mov al,[mmx_size]
or al,al
jz instruction_ready
or ah,ah
jz instruction_ready
cmp al,ah
jne invalid_operand_size
jmp instruction_ready
434,73 → 434,73
avx_load_instruction_38:
mov [opcode_prefix],66h
mov [supplemental_code],al
mov al,38h
jmp avx_load_instruction
avx_movlpd_instruction:
mov [opcode_prefix],66h
avx_movlps_instruction:
mov [base_code],0Fh
mov [extended_code],al
mov [mmx_size],8
or [vex_required],1
lods byte [esi]
call get_size_operator
cmp al,10h
jne avx_movlps_mem
lods byte [esi]
call convert_avx_register
mov [postbyte_register],al
lods byte [esi]
cmp al,','
jne invalid_operand
call take_avx_register
mov [vex_register],al
cmp [operand_size],16
jne invalid_operand
mov [operand_size],0
lods byte [esi]
cmp al,','
jne invalid_operand
call take_avx_rm
jc invalid_operand
jmp instruction_ready
avx_movlps_mem:
cmp al,'['
jne invalid_operand
call get_address
mov al,[operand_size]
or al,al
jz avx_movlps_mem_size_ok
cmp al,[mmx_size]
jne invalid_operand_size
mov [operand_size],0
avx_movlps_mem_size_ok:
lods byte [esi]
cmp al,','
jne invalid_operand
call take_avx_register
cmp ah,16
jne invalid_operand
mov [postbyte_register],al
inc [extended_code]
jmp instruction_ready
avx_movhlps_instruction:
mov [base_code],0Fh
mov [extended_code],al
or [vex_required],1
call take_avx_register
cmp ah,16
jne invalid_operand
mov [postbyte_register],al
lods byte [esi]
cmp al,','
jne invalid_operand
call take_avx_register
mov [vex_register],al
lods byte [esi]
cmp al,','
jne invalid_operand
mov al,38h
jmp avx_load_instruction
avx_movlpd_instruction:
mov [opcode_prefix],66h
avx_movlps_instruction:
mov [base_code],0Fh
mov [extended_code],al
mov [mmx_size],8
or [vex_required],1
lods byte [esi]
call get_size_operator
cmp al,10h
jne avx_movlps_mem
lods byte [esi]
call convert_avx_register
mov [postbyte_register],al
lods byte [esi]
cmp al,','
jne invalid_operand
call take_avx_register
mov [vex_register],al
cmp [operand_size],16
jne invalid_operand
mov [operand_size],0
lods byte [esi]
cmp al,','
jne invalid_operand
call take_avx_rm
jc invalid_operand
jmp instruction_ready
avx_movlps_mem:
cmp al,'['
jne invalid_operand
call get_address
mov al,[operand_size]
or al,al
jz avx_movlps_mem_size_ok
cmp al,[mmx_size]
jne invalid_operand_size
mov [operand_size],0
avx_movlps_mem_size_ok:
lods byte [esi]
cmp al,','
jne invalid_operand
call take_avx_register
cmp ah,16
jne invalid_operand
mov [postbyte_register],al
inc [extended_code]
jmp instruction_ready
avx_movhlps_instruction:
mov [base_code],0Fh
mov [extended_code],al
or [vex_required],1
call take_avx_register
cmp ah,16
jne invalid_operand
mov [postbyte_register],al
lods byte [esi]
cmp al,','
jne invalid_operand
call take_avx_register
mov [vex_register],al
lods byte [esi]
cmp al,','
jne invalid_operand
call take_avx_register
mov bl,al
jmp nomem_instruction_ready
avx_maskmov_w1_instruction:
510,37 → 510,37
mov [mmx_size],0
or [vex_required],1
lods byte [esi]
call get_size_operator
cmp al,10h
jne avx_maskmov_mem
lods byte [esi]
call convert_avx_register
mov [postbyte_register],al
lods byte [esi]
cmp al,','
jne invalid_operand
call take_avx_register
mov [vex_register],al
lods byte [esi]
cmp al,','
jne invalid_operand
call take_avx_rm
jc invalid_operand
jmp instruction_ready
avx_maskmov_mem:
cmp al,'['
jne invalid_operand
call get_address
lods byte [esi]
cmp al,','
jne invalid_operand
call take_avx_register
mov [vex_register],al
lods byte [esi]
cmp al,','
jne invalid_operand
call take_avx_register
call get_size_operator
cmp al,10h
jne avx_maskmov_mem
lods byte [esi]
call convert_avx_register
mov [postbyte_register],al
lods byte [esi]
cmp al,','
jne invalid_operand
call take_avx_register
mov [vex_register],al
lods byte [esi]
cmp al,','
jne invalid_operand
call take_avx_rm
jc invalid_operand
jmp instruction_ready
avx_maskmov_mem:
cmp al,'['
jne invalid_operand
call get_address
lods byte [esi]
cmp al,','
jne invalid_operand
call take_avx_register
mov [vex_register],al
lods byte [esi]
cmp al,','
jne invalid_operand
call take_avx_register
mov [postbyte_register],al
add [supplemental_code],2
jmp instruction_ready
setup_66_0f_38:
552,131 → 552,131
avx_movd_instruction:
or [vex_required],1
jmp movd_instruction
avx_movq_instruction:
or [vex_required],1
jmp movq_instruction
avx_movddup_instruction:
or [vex_required],1
mov [opcode_prefix],0F2h
mov [base_code],0Fh
mov [extended_code],al
lods byte [esi]
call get_size_operator
cmp al,10h
jne invalid_operand
lods byte [esi]
call convert_avx_register
mov [postbyte_register],al
mov [mmx_size],0
cmp ah,32
je avx_regs_size_ok
mov [mmx_size],8
jmp avx_regs_size_ok
avx_movmskpd_instruction:
mov [opcode_prefix],66h
avx_movmskps_instruction:
mov [base_code],0Fh
mov [extended_code],50h
or [vex_required],1
lods byte [esi]
call get_size_operator
cmp al,10h
jne invalid_operand
lods byte [esi]
call convert_register
mov [postbyte_register],al
cmp ah,4
je avx_movmskps_reg_ok
cmp ah,8
jne invalid_operand_size
cmp [code_type],64
jne invalid_operand
avx_movmskps_reg_ok:
mov [operand_size],0
lods byte [esi]
cmp al,','
jne invalid_operand
call take_avx_register
mov bl,al
jmp nomem_instruction_ready
avx_movsd_instruction:
mov [opcode_prefix],0F2h
mov [mmx_size],8
jmp avx_movs_instruction
avx_movss_instruction:
mov [opcode_prefix],0F3h
mov [mmx_size],4
avx_movs_instruction:
or [vex_required],1
mov [base_code],0Fh
mov [extended_code],10h
lods byte [esi]
call get_size_operator
cmp al,10h
jne avx_movlps_mem
lods byte [esi]
call convert_xmm_register
mov [postbyte_register],al
xor cl,cl
xchg cl,[operand_size]
lods byte [esi]
cmp al,','
jne invalid_operand
lods byte [esi]
call get_size_operator
cmp al,10h
jne avx_movs_reg_mem
mov [operand_size],cl
lods byte [esi]
call convert_avx_register
mov [vex_register],al
lods byte [esi]
cmp al,','
jne invalid_operand
call take_avx_register
mov bl,al
cmp bl,8
jb nomem_instruction_ready
inc [extended_code]
xchg bl,[postbyte_register]
jmp nomem_instruction_ready
avx_movs_reg_mem:
cmp al,'['
jne invalid_operand
call get_address
mov al,[operand_size]
or al,al
jz avx_movs_reg_mem_ok
cmp al,[mmx_size]
jne invalid_operand_size
avx_movs_reg_mem_ok:
jmp instruction_ready
 
avx_cvtdq2pd_instruction:
mov [opcode_prefix],0F3h
avx_cvtps2pd_instruction:
mov [base_code],0Fh
mov [extended_code],al
or [vex_required],1
call take_avx_register
mov [postbyte_register],al
lods byte [esi]
cmp al,','
jne invalid_operand
xor cl,cl
xchg cl,[operand_size]
lods byte [esi]
call get_size_operator
cmp al,10h
jne avx_cvtdq2pd_reg_mem
lods byte [esi]
call convert_xmm_register
mov bl,al
mov [operand_size],cl
jmp nomem_instruction_ready
avx_cvtdq2pd_reg_mem:
cmp al,'['
avx_movq_instruction:
or [vex_required],1
jmp movq_instruction
avx_movddup_instruction:
or [vex_required],1
mov [opcode_prefix],0F2h
mov [base_code],0Fh
mov [extended_code],al
lods byte [esi]
call get_size_operator
cmp al,10h
jne invalid_operand
lods byte [esi]
call convert_avx_register
mov [postbyte_register],al
mov [mmx_size],0
cmp ah,32
je avx_regs_size_ok
mov [mmx_size],8
jmp avx_regs_size_ok
avx_movmskpd_instruction:
mov [opcode_prefix],66h
avx_movmskps_instruction:
mov [base_code],0Fh
mov [extended_code],50h
or [vex_required],1
lods byte [esi]
call get_size_operator
cmp al,10h
jne invalid_operand
lods byte [esi]
call convert_register
mov [postbyte_register],al
cmp ah,4
je avx_movmskps_reg_ok
cmp ah,8
jne invalid_operand_size
cmp [code_type],64
jne invalid_operand
avx_movmskps_reg_ok:
mov [operand_size],0
lods byte [esi]
cmp al,','
jne invalid_operand
call take_avx_register
mov bl,al
jmp nomem_instruction_ready
avx_movsd_instruction:
mov [opcode_prefix],0F2h
mov [mmx_size],8
jmp avx_movs_instruction
avx_movss_instruction:
mov [opcode_prefix],0F3h
mov [mmx_size],4
avx_movs_instruction:
or [vex_required],1
mov [base_code],0Fh
mov [extended_code],10h
lods byte [esi]
call get_size_operator
cmp al,10h
jne avx_movlps_mem
lods byte [esi]
call convert_xmm_register
mov [postbyte_register],al
xor cl,cl
xchg cl,[operand_size]
lods byte [esi]
cmp al,','
jne invalid_operand
lods byte [esi]
call get_size_operator
cmp al,10h
jne avx_movs_reg_mem
mov [operand_size],cl
lods byte [esi]
call convert_avx_register
mov [vex_register],al
lods byte [esi]
cmp al,','
jne invalid_operand
call take_avx_register
mov bl,al
cmp bl,8
jb nomem_instruction_ready
inc [extended_code]
xchg bl,[postbyte_register]
jmp nomem_instruction_ready
avx_movs_reg_mem:
cmp al,'['
jne invalid_operand
call get_address
mov al,[operand_size]
or al,al
jz avx_movs_reg_mem_ok
cmp al,[mmx_size]
jne invalid_operand_size
avx_movs_reg_mem_ok:
jmp instruction_ready
 
avx_cvtdq2pd_instruction:
mov [opcode_prefix],0F3h
avx_cvtps2pd_instruction:
mov [base_code],0Fh
mov [extended_code],al
or [vex_required],1
call take_avx_register
mov [postbyte_register],al
lods byte [esi]
cmp al,','
jne invalid_operand
xor cl,cl
xchg cl,[operand_size]
lods byte [esi]
call get_size_operator
cmp al,10h
jne avx_cvtdq2pd_reg_mem
lods byte [esi]
call convert_xmm_register
mov bl,al
mov [operand_size],cl
jmp nomem_instruction_ready
avx_cvtdq2pd_reg_mem:
cmp al,'['
jne invalid_operand
mov [mmx_size],cl
call get_address
mov al,[mmx_size]
690,109 → 690,109
jmp instruction_ready
avx_cvtpd2dq_instruction:
mov [opcode_prefix],0F2h
jmp avx_cvtpd_instruction
avx_cvtpd2ps_instruction:
mov [opcode_prefix],66h
avx_cvtpd_instruction:
mov [base_code],0Fh
mov [extended_code],al
or [vex_required],1
call take_avx_register
mov [postbyte_register],al
cmp ah,16
jne invalid_operand
lods byte [esi]
cmp al,','
jne invalid_operand
mov [operand_size],0
lods byte [esi]
call get_size_operator
cmp al,10h
jne avx_cvtpd2dq_reg_mem
lods byte [esi]
call convert_avx_register
mov bl,al
jmp nomem_instruction_ready
avx_cvtpd2dq_reg_mem:
cmp al,'['
jne invalid_operand
call get_address
mov al,[operand_size]
or al,al
jz operand_size_not_specified
cmp al,16
je instruction_ready
cmp al,32
jne invalid_operand_size
jmp instruction_ready
avx_cvttps2dq_instruction:
or [vex_required],2
mov [opcode_prefix],0F3h
mov [mmx_size],0
jmp avx_instruction
avx_cvtsd2si_instruction:
or [vex_required],1
jmp cvtsd2si_instruction
avx_cvtss2si_instruction:
or [vex_required],1
jmp cvtss2si_instruction
avx_cvtsi2ss_instruction:
mov [opcode_prefix],0F3h
jmp avx_cvtsi_instruction
avx_cvtsi2sd_instruction:
mov [opcode_prefix],0F2h
avx_cvtsi_instruction:
mov [base_code],0Fh
mov [extended_code],al
or [vex_required],1
call take_avx_register
cmp ah,16
jne invalid_operand_size
mov [postbyte_register],al
lods byte [esi]
cmp al,','
jne invalid_operand
call take_avx_register
mov [vex_register],al
jmp cvtsi_xmmreg
 
avx_extractf128_instruction:
or [vex_required],1
call setup_66_0f_3a
lods byte [esi]
call get_size_operator
cmp al,10h
je avx_extractf128_reg
cmp al,'['
jne invalid_operand
call get_address
xor al,al
xchg al,[operand_size]
or al,al
jz avx_extractf128_mem_size_ok
cmp al,16
jne invalid_operand_size
avx_extractf128_mem_size_ok:
lods byte [esi]
cmp al,','
jne invalid_operand
call take_avx_register
cmp ah,32
jne invalid_operand_size
mov [postbyte_register],al
jmp mmx_imm8
avx_extractf128_reg:
lods byte [esi]
call convert_xmm_register
mov [operand_size],0
push eax
lods byte [esi]
cmp al,','
jne invalid_operand
call take_avx_register
cmp ah,32
jne invalid_operand_size
jmp avx_cvtpd_instruction
avx_cvtpd2ps_instruction:
mov [opcode_prefix],66h
avx_cvtpd_instruction:
mov [base_code],0Fh
mov [extended_code],al
or [vex_required],1
call take_avx_register
mov [postbyte_register],al
cmp ah,16
jne invalid_operand
lods byte [esi]
cmp al,','
jne invalid_operand
mov [operand_size],0
lods byte [esi]
call get_size_operator
cmp al,10h
jne avx_cvtpd2dq_reg_mem
lods byte [esi]
call convert_avx_register
mov bl,al
jmp nomem_instruction_ready
avx_cvtpd2dq_reg_mem:
cmp al,'['
jne invalid_operand
call get_address
mov al,[operand_size]
or al,al
jz operand_size_not_specified
cmp al,16
je instruction_ready
cmp al,32
jne invalid_operand_size
jmp instruction_ready
avx_cvttps2dq_instruction:
or [vex_required],2
mov [opcode_prefix],0F3h
mov [mmx_size],0
jmp avx_instruction
avx_cvtsd2si_instruction:
or [vex_required],1
jmp cvtsd2si_instruction
avx_cvtss2si_instruction:
or [vex_required],1
jmp cvtss2si_instruction
avx_cvtsi2ss_instruction:
mov [opcode_prefix],0F3h
jmp avx_cvtsi_instruction
avx_cvtsi2sd_instruction:
mov [opcode_prefix],0F2h
avx_cvtsi_instruction:
mov [base_code],0Fh
mov [extended_code],al
or [vex_required],1
call take_avx_register
cmp ah,16
jne invalid_operand_size
mov [postbyte_register],al
lods byte [esi]
cmp al,','
jne invalid_operand
call take_avx_register
mov [vex_register],al
jmp cvtsi_xmmreg
 
avx_extractf128_instruction:
or [vex_required],1
call setup_66_0f_3a
lods byte [esi]
call get_size_operator
cmp al,10h
je avx_extractf128_reg
cmp al,'['
jne invalid_operand
call get_address
xor al,al
xchg al,[operand_size]
or al,al
jz avx_extractf128_mem_size_ok
cmp al,16
jne invalid_operand_size
avx_extractf128_mem_size_ok:
lods byte [esi]
cmp al,','
jne invalid_operand
call take_avx_register
cmp ah,32
jne invalid_operand_size
mov [postbyte_register],al
jmp mmx_imm8
avx_extractf128_reg:
lods byte [esi]
call convert_xmm_register
mov [operand_size],0
push eax
lods byte [esi]
cmp al,','
jne invalid_operand
call take_avx_register
cmp ah,32
jne invalid_operand_size
mov [postbyte_register],al
pop ebx
jmp mmx_nomem_imm8
setup_66_0f_3a:
804,87 → 804,87
avx_insertf128_instruction:
or [vex_required],1
call setup_66_0f_3a
call take_avx_register
cmp ah,32
jne invalid_operand
mov [postbyte_register],al
lods byte [esi]
cmp al,','
jne invalid_operand
call take_avx_register
mov [vex_register],al
mov [operand_size],0
mov [mmx_size],16
lods byte [esi]
cmp al,','
jne invalid_operand
call take_avx_rm
mov [operand_size],32
jnc mmx_imm8
mov bl,al
jmp mmx_nomem_imm8
avx_extractps_instruction:
or [vex_required],1
jmp extractps_instruction
avx_insertps_instruction:
or [vex_required],1
call take_avx_register
cmp ah,16
jne invalid_operand_size
mov [postbyte_register],al
lods byte [esi]
cmp al,','
jne invalid_operand
call take_avx_register
mov [vex_register],al
jmp insertps_xmmreg
avx_pextrb_instruction:
or [vex_required],1
jmp pextrb_instruction
avx_pextrw_instruction:
or [vex_required],1
jmp pextrw_instruction
avx_pextrd_instruction:
or [vex_required],1
jmp pextrd_instruction
avx_pextrq_instruction:
or [vex_required],1
jmp pextrq_instruction
avx_pinsrb_instruction:
mov [mmx_size],1
or [vex_required],1
jmp avx_pinsr_instruction_3a
avx_pinsrw_instruction:
mov [mmx_size],2
or [vex_required],1
jmp avx_pinsr_instruction
avx_pinsrd_instruction:
mov [mmx_size],4
or [vex_required],1
jmp avx_pinsr_instruction_3a
avx_pinsrq_instruction:
mov [mmx_size],8
or [vex_required],1
call operand_64bit
avx_pinsr_instruction_3a:
mov [supplemental_code],al
mov al,3Ah
avx_pinsr_instruction:
mov [opcode_prefix],66h
mov [base_code],0Fh
mov [extended_code],al
call take_avx_register
cmp ah,16
jne invalid_operand_size
mov [postbyte_register],al
lods byte [esi]
cmp al,','
jne invalid_operand
call take_avx_register
mov [vex_register],al
jmp pinsr_xmmreg
avx_maskmovdqu_instruction:
or [vex_required],1
call take_avx_register
cmp ah,32
jne invalid_operand
mov [postbyte_register],al
lods byte [esi]
cmp al,','
jne invalid_operand
call take_avx_register
mov [vex_register],al
mov [operand_size],0
mov [mmx_size],16
lods byte [esi]
cmp al,','
jne invalid_operand
call take_avx_rm
mov [operand_size],32
jnc mmx_imm8
mov bl,al
jmp mmx_nomem_imm8
avx_extractps_instruction:
or [vex_required],1
jmp extractps_instruction
avx_insertps_instruction:
or [vex_required],1
call take_avx_register
cmp ah,16
jne invalid_operand_size
mov [postbyte_register],al
lods byte [esi]
cmp al,','
jne invalid_operand
call take_avx_register
mov [vex_register],al
jmp insertps_xmmreg
avx_pextrb_instruction:
or [vex_required],1
jmp pextrb_instruction
avx_pextrw_instruction:
or [vex_required],1
jmp pextrw_instruction
avx_pextrd_instruction:
or [vex_required],1
jmp pextrd_instruction
avx_pextrq_instruction:
or [vex_required],1
jmp pextrq_instruction
avx_pinsrb_instruction:
mov [mmx_size],1
or [vex_required],1
jmp avx_pinsr_instruction_3a
avx_pinsrw_instruction:
mov [mmx_size],2
or [vex_required],1
jmp avx_pinsr_instruction
avx_pinsrd_instruction:
mov [mmx_size],4
or [vex_required],1
jmp avx_pinsr_instruction_3a
avx_pinsrq_instruction:
mov [mmx_size],8
or [vex_required],1
call operand_64bit
avx_pinsr_instruction_3a:
mov [supplemental_code],al
mov al,3Ah
avx_pinsr_instruction:
mov [opcode_prefix],66h
mov [base_code],0Fh
mov [extended_code],al
call take_avx_register
cmp ah,16
jne invalid_operand_size
mov [postbyte_register],al
lods byte [esi]
cmp al,','
jne invalid_operand
call take_avx_register
mov [vex_register],al
jmp pinsr_xmmreg
avx_maskmovdqu_instruction:
or [vex_required],1
jmp maskmovdqu_instruction
avx_pmovmskb_instruction:
or [vex_required],1
931,20 → 931,20
avx_pmovsxbw_instruction:
mov [mmx_size],8
jmp avx_pmovsx_instruction
avx_pmovsxbd_instruction:
mov [mmx_size],4
jmp avx_pmovsx_instruction
avx_pmovsxbq_instruction:
mov [mmx_size],2
jmp avx_pmovsx_instruction
avx_pmovsxwd_instruction:
mov [mmx_size],8
jmp avx_pmovsx_instruction
avx_pmovsxwq_instruction:
mov [mmx_size],4
jmp avx_pmovsx_instruction
avx_pmovsxdq_instruction:
avx_pmovsxbd_instruction:
mov [mmx_size],4
jmp avx_pmovsx_instruction
avx_pmovsxbq_instruction:
mov [mmx_size],2
jmp avx_pmovsx_instruction
avx_pmovsxwd_instruction:
mov [mmx_size],8
jmp avx_pmovsx_instruction
avx_pmovsxwq_instruction:
mov [mmx_size],4
jmp avx_pmovsx_instruction
avx_pmovsxdq_instruction:
mov [mmx_size],8
avx_pmovsx_instruction:
or [vex_required],1
call setup_66_0f_38
984,51 → 984,51
avx_permil_instruction:
call setup_66_0f_3a
or [vex_required],1
call take_avx_register
mov [postbyte_register],al
lods byte [esi]
cmp al,','
jne invalid_operand
lods byte [esi]
call get_size_operator
cmp al,'['
je avx_permil_reg_mem
cmp al,10h
jne invalid_operand
lods byte [esi]
call convert_avx_register
mov [vex_register],al
lods byte [esi]
cmp al,','
jne invalid_operand
push esi
xor cl,cl
xchg cl,[operand_size]
lods byte [esi]
call get_size_operator
xchg cl,[operand_size]
pop esi
cmp al,'['
je avx_permil_reg_reg_mem
cmp al,10h
jne avx_permil_reg_reg_imm8
call take_avx_register
mov bl,al
mov [extended_code],38h
add [supplemental_code],8
jmp nomem_instruction_ready
avx_permil_reg_reg_mem:
lods byte [esi]
call get_size_operator
call get_address
mov [extended_code],38h
add [supplemental_code],8
jmp instruction_ready
avx_permil_reg_reg_imm8:
dec esi
xor bl,bl
xchg bl,[vex_register]
jmp mmx_nomem_imm8
call take_avx_register
mov [postbyte_register],al
lods byte [esi]
cmp al,','
jne invalid_operand
lods byte [esi]
call get_size_operator
cmp al,'['
je avx_permil_reg_mem
cmp al,10h
jne invalid_operand
lods byte [esi]
call convert_avx_register
mov [vex_register],al
lods byte [esi]
cmp al,','
jne invalid_operand
push esi
xor cl,cl
xchg cl,[operand_size]
lods byte [esi]
call get_size_operator
xchg cl,[operand_size]
pop esi
cmp al,'['
je avx_permil_reg_reg_mem
cmp al,10h
jne avx_permil_reg_reg_imm8
call take_avx_register
mov bl,al
mov [extended_code],38h
add [supplemental_code],8
jmp nomem_instruction_ready
avx_permil_reg_reg_mem:
lods byte [esi]
call get_size_operator
call get_address
mov [extended_code],38h
add [supplemental_code],8
jmp instruction_ready
avx_permil_reg_reg_imm8:
dec esi
xor bl,bl
xchg bl,[vex_register]
jmp mmx_nomem_imm8
avx_permil_reg_mem:
call get_address
jmp mmx_imm8
1041,14 → 1041,14
mov [postbyte_register],al
lods byte [esi]
cmp al,','
jne invalid_operand
call take_avx_register
mov [vex_register],al
lods byte [esi]
cmp al,','
jne invalid_operand
push esi
xor cl,cl
jne invalid_operand
call take_avx_register
mov [vex_register],al
lods byte [esi]
cmp al,','
jne invalid_operand
push esi
xor cl,cl
xchg cl,[operand_size]
lods byte [esi]
call get_size_operator
1061,13 → 1061,13
dec esi
mov bl,[extended_code]
mov al,bl
shr bl,4
and al,1111b
add al,70h
mov [extended_code],al
sub bl,0Ch
shl bl,1
xchg bl,[postbyte_register]
shr bl,4
and al,1111b
add al,70h
mov [extended_code],al
sub bl,0Ch
shl bl,1
xchg bl,[postbyte_register]
xchg bl,[vex_register]
jmp mmx_nomem_imm8
avx_bit_shift_regs_reg:
1106,47 → 1106,47
 
vzeroall_instruction:
mov [operand_size],32
vzeroupper_instruction:
mov [base_code],0Fh
mov [extended_code],al
or [vex_required],1
call store_instruction_code
jmp instruction_assembled
vldmxcsr_instruction:
or [vex_required],1
jmp fxsave_instruction
vcvtph2ps_instruction:
mov [opcode_prefix],66h
mov [supplemental_code],al
mov al,38h
jmp avx_cvtps2pd_instruction
vcvtps2ph_instruction:
call setup_66_0f_3a
or [vex_required],1
lods byte [esi]
call get_size_operator
cmp al,10h
je vcvtps2ph_reg
cmp al,'['
jne invalid_operand
call get_address
lods byte [esi]
cmp al,','
jne invalid_operand
shl [operand_size],1
call take_avx_register
mov [postbyte_register],al
jmp mmx_imm8
vcvtps2ph_reg:
lods byte [esi]
call convert_xmm_register
mov bl,al
mov [operand_size],0
lods byte [esi]
cmp al,','
jne invalid_operand
call take_avx_register
vzeroupper_instruction:
mov [base_code],0Fh
mov [extended_code],al
or [vex_required],1
call store_instruction_code
jmp instruction_assembled
vldmxcsr_instruction:
or [vex_required],1
jmp fxsave_instruction
vcvtph2ps_instruction:
mov [opcode_prefix],66h
mov [supplemental_code],al
mov al,38h
jmp avx_cvtps2pd_instruction
vcvtps2ph_instruction:
call setup_66_0f_3a
or [vex_required],1
lods byte [esi]
call get_size_operator
cmp al,10h
je vcvtps2ph_reg
cmp al,'['
jne invalid_operand
call get_address
lods byte [esi]
cmp al,','
jne invalid_operand
shl [operand_size],1
call take_avx_register
mov [postbyte_register],al
jmp mmx_imm8
vcvtps2ph_reg:
lods byte [esi]
call convert_xmm_register
mov bl,al
mov [operand_size],0
lods byte [esi]
cmp al,','
jne invalid_operand
call take_avx_register
mov [postbyte_register],al
jmp mmx_nomem_imm8
 
bmi_instruction:
1312,194 → 1312,194
fma_instruction_pd:
or [rex_prefix],8
fma_instruction_ps:
mov [mmx_size],0
jmp avx_instruction_38_setup
fma_instruction_sd:
or [rex_prefix],8
mov [mmx_size],8
jmp avx_instruction_38_setup
fma_instruction_ss:
mov [mmx_size],4
jmp avx_instruction_38_setup
 
fma4_instruction_p:
mov [mmx_size],0
jmp fma4_instruction_setup
fma4_instruction_sd:
mov [mmx_size],8
jmp fma4_instruction_setup
fma4_instruction_ss:
mov [mmx_size],4
fma4_instruction_setup:
mov [immediate_size],-2
mov byte [value],0
jmp avx_instruction_3a_setup
 
xop_single_source_sd_instruction:
or [vex_required],2
mov [mmx_size],8
jmp xop_instruction_9
xop_single_source_ss_instruction:
or [vex_required],2
mov [mmx_size],4
jmp xop_instruction_9
xop_single_source_instruction:
or [vex_required],2
mov [mmx_size],0
xop_instruction_9:
mov [base_code],al
mov [xop_opcode_map],9
jmp avx_common
xop_single_source_128bit_instruction:
or [vex_required],2
mov [mmx_size],16
jmp xop_instruction_9
xop_triple_source_128bit_instruction:
mov [immediate_size],-1
mov byte [value],0
mov [mmx_size],16
jmp xop_instruction_8
xop_128bit_instruction:
mov [immediate_size],-2
mov byte [value],0
mov [mmx_size],16
xop_instruction_8:
mov [base_code],al
mov [xop_opcode_map],8
jmp avx_common
xop_pcom_b_instruction:
mov ah,0CCh
jmp xop_pcom_instruction
xop_pcom_d_instruction:
mov ah,0CEh
jmp xop_pcom_instruction
xop_pcom_q_instruction:
mov ah,0CFh
jmp xop_pcom_instruction
xop_pcom_w_instruction:
mov ah,0CDh
jmp xop_pcom_instruction
xop_pcom_ub_instruction:
mov ah,0ECh
jmp xop_pcom_instruction
xop_pcom_ud_instruction:
mov ah,0EEh
jmp xop_pcom_instruction
xop_pcom_uq_instruction:
mov ah,0EFh
jmp xop_pcom_instruction
xop_pcom_uw_instruction:
mov ah,0EDh
xop_pcom_instruction:
mov byte [value],al
mov [mmx_size],16
mov [base_code],ah
mov [xop_opcode_map],8
jmp avx_common
vpcmov_instruction:
or [vex_required],1
mov [immediate_size],-2
mov byte [value],0
mov [mmx_size],0
mov [base_code],al
mov [xop_opcode_map],8
jmp avx_common
xop_shift_instruction:
mov [base_code],al
or [vex_required],1
mov [xop_opcode_map],9
call take_avx_register
cmp ah,16
jne invalid_operand
mov [postbyte_register],al
lods byte [esi]
cmp al,','
jne invalid_operand
lods byte [esi]
call get_size_operator
cmp al,'['
je xop_shift_reg_mem
cmp al,10h
jne invalid_operand
lods byte [esi]
call convert_xmm_register
mov [vex_register],al
lods byte [esi]
cmp al,','
jne invalid_operand
push esi
xor cl,cl
xchg cl,[operand_size]
lods byte [esi]
call get_size_operator
pop esi
xchg cl,[operand_size]
cmp al,'['
je xop_shift_reg_reg_mem
cmp al,10h
jne xop_shift_reg_reg_imm
call take_avx_register
mov bl,al
xchg bl,[vex_register]
jmp nomem_instruction_ready
xop_shift_reg_reg_mem:
or [rex_prefix],8
lods byte [esi]
call get_size_operator
call get_address
jmp instruction_ready
xop_shift_reg_reg_imm:
xor bl,bl
xchg bl,[vex_register]
cmp [base_code],94h
jae invalid_operand
add [base_code],30h
mov [xop_opcode_map],8
dec esi
jmp mmx_nomem_imm8
xop_shift_reg_mem:
call get_address
lods byte [esi]
cmp al,','
jne invalid_operand
push esi
xor cl,cl
xchg cl,[operand_size]
lods byte [esi]
call get_size_operator
pop esi
xchg cl,[operand_size]
cmp al,10h
jne xop_shift_reg_mem_imm
call take_avx_register
mov [vex_register],al
jmp instruction_ready
xop_shift_reg_mem_imm:
cmp [base_code],94h
jae invalid_operand
add [base_code],30h
mov [xop_opcode_map],8
dec esi
jmp mmx_imm8
 
vpermil_2pd_instruction:
mov [immediate_size],-2
mov byte [value],al
mov al,49h
jmp vpermil2_instruction_setup
vpermil_2ps_instruction:
mov [immediate_size],-2
mov byte [value],al
mov al,48h
jmp vpermil2_instruction_setup
vpermil2_instruction:
mov [immediate_size],-3
mov byte [value],0
vpermil2_instruction_setup:
mov [base_code],0Fh
mov [supplemental_code],al
mov al,3Ah
mov [mmx_size],0
jmp avx_instruction_38_setup
fma_instruction_sd:
or [rex_prefix],8
mov [mmx_size],8
jmp avx_instruction_38_setup
fma_instruction_ss:
mov [mmx_size],4
jmp avx_instruction_38_setup
 
fma4_instruction_p:
mov [mmx_size],0
jmp fma4_instruction_setup
fma4_instruction_sd:
mov [mmx_size],8
jmp fma4_instruction_setup
fma4_instruction_ss:
mov [mmx_size],4
fma4_instruction_setup:
mov [immediate_size],-2
mov byte [value],0
jmp avx_instruction_3a_setup
 
xop_single_source_sd_instruction:
or [vex_required],2
mov [mmx_size],8
jmp xop_instruction_9
xop_single_source_ss_instruction:
or [vex_required],2
mov [mmx_size],4
jmp xop_instruction_9
xop_single_source_instruction:
or [vex_required],2
mov [mmx_size],0
xop_instruction_9:
mov [base_code],al
mov [xop_opcode_map],9
jmp avx_common
xop_single_source_128bit_instruction:
or [vex_required],2
mov [mmx_size],16
jmp xop_instruction_9
xop_triple_source_128bit_instruction:
mov [immediate_size],-1
mov byte [value],0
mov [mmx_size],16
jmp xop_instruction_8
xop_128bit_instruction:
mov [immediate_size],-2
mov byte [value],0
mov [mmx_size],16
xop_instruction_8:
mov [base_code],al
mov [xop_opcode_map],8
jmp avx_common
xop_pcom_b_instruction:
mov ah,0CCh
jmp xop_pcom_instruction
xop_pcom_d_instruction:
mov ah,0CEh
jmp xop_pcom_instruction
xop_pcom_q_instruction:
mov ah,0CFh
jmp xop_pcom_instruction
xop_pcom_w_instruction:
mov ah,0CDh
jmp xop_pcom_instruction
xop_pcom_ub_instruction:
mov ah,0ECh
jmp xop_pcom_instruction
xop_pcom_ud_instruction:
mov ah,0EEh
jmp xop_pcom_instruction
xop_pcom_uq_instruction:
mov ah,0EFh
jmp xop_pcom_instruction
xop_pcom_uw_instruction:
mov ah,0EDh
xop_pcom_instruction:
mov byte [value],al
mov [mmx_size],16
mov [base_code],ah
mov [xop_opcode_map],8
jmp avx_common
vpcmov_instruction:
or [vex_required],1
mov [immediate_size],-2
mov byte [value],0
mov [mmx_size],0
mov [base_code],al
mov [xop_opcode_map],8
jmp avx_common
xop_shift_instruction:
mov [base_code],al
or [vex_required],1
mov [xop_opcode_map],9
call take_avx_register
cmp ah,16
jne invalid_operand
mov [postbyte_register],al
lods byte [esi]
cmp al,','
jne invalid_operand
lods byte [esi]
call get_size_operator
cmp al,'['
je xop_shift_reg_mem
cmp al,10h
jne invalid_operand
lods byte [esi]
call convert_xmm_register
mov [vex_register],al
lods byte [esi]
cmp al,','
jne invalid_operand
push esi
xor cl,cl
xchg cl,[operand_size]
lods byte [esi]
call get_size_operator
pop esi
xchg cl,[operand_size]
cmp al,'['
je xop_shift_reg_reg_mem
cmp al,10h
jne xop_shift_reg_reg_imm
call take_avx_register
mov bl,al
xchg bl,[vex_register]
jmp nomem_instruction_ready
xop_shift_reg_reg_mem:
or [rex_prefix],8
lods byte [esi]
call get_size_operator
call get_address
jmp instruction_ready
xop_shift_reg_reg_imm:
xor bl,bl
xchg bl,[vex_register]
cmp [base_code],94h
jae invalid_operand
add [base_code],30h
mov [xop_opcode_map],8
dec esi
jmp mmx_nomem_imm8
xop_shift_reg_mem:
call get_address
lods byte [esi]
cmp al,','
jne invalid_operand
push esi
xor cl,cl
xchg cl,[operand_size]
lods byte [esi]
call get_size_operator
pop esi
xchg cl,[operand_size]
cmp al,10h
jne xop_shift_reg_mem_imm
call take_avx_register
mov [vex_register],al
jmp instruction_ready
xop_shift_reg_mem_imm:
cmp [base_code],94h
jae invalid_operand
add [base_code],30h
mov [xop_opcode_map],8
dec esi
jmp mmx_imm8
 
vpermil_2pd_instruction:
mov [immediate_size],-2
mov byte [value],al
mov al,49h
jmp vpermil2_instruction_setup
vpermil_2ps_instruction:
mov [immediate_size],-2
mov byte [value],al
mov al,48h
jmp vpermil2_instruction_setup
vpermil2_instruction:
mov [immediate_size],-3
mov byte [value],0
vpermil2_instruction_setup:
mov [base_code],0Fh
mov [supplemental_code],al
mov al,3Ah
mov [mmx_size],0
jmp avx_instruction
 
tbm_instruction:
1656,57 → 1656,57
take_avx_register:
lods byte [esi]
call get_size_operator
cmp al,10h
jne invalid_operand
lods byte [esi]
convert_avx_register:
mov ah,al
and al,0Fh
and ah,0F0h
sub ah,0B0h
jbe invalid_operand
cmp ah,32
ja invalid_operand
cmp al,8
jb match_register_size
cmp [code_type],64
jne invalid_operand
jmp match_register_size
store_vex_instruction_code:
mov al,[base_code]
cmp al,0Fh
jne store_xop_instruction_code
mov ah,[extended_code]
cmp ah,38h
je store_vex_0f38_instruction_code
cmp ah,3Ah
je store_vex_0f3a_instruction_code
test [rex_prefix],1011b
jnz store_vex_0f_instruction_code
mov [edi+2],ah
mov byte [edi],0C5h
mov al,[vex_register]
not al
shl al,3
mov ah,[rex_prefix]
shl ah,5
and ah,80h
xor al,ah
call get_vex_lpp_bits
mov [edi+1],al
call check_vex
add edi,3
ret
get_vex_lpp_bits:
cmp [operand_size],32
jne vex_l_bit_ok
or al,100b
vex_l_bit_ok:
mov ah,[opcode_prefix]
cmp ah,66h
je vex_66
cmp ah,0F3h
je vex_f3
cmp al,10h
jne invalid_operand
lods byte [esi]
convert_avx_register:
mov ah,al
and al,0Fh
and ah,0F0h
sub ah,0B0h
jbe invalid_operand
cmp ah,32
ja invalid_operand
cmp al,8
jb match_register_size
cmp [code_type],64
jne invalid_operand
jmp match_register_size
store_vex_instruction_code:
mov al,[base_code]
cmp al,0Fh
jne store_xop_instruction_code
mov ah,[extended_code]
cmp ah,38h
je store_vex_0f38_instruction_code
cmp ah,3Ah
je store_vex_0f3a_instruction_code
test [rex_prefix],1011b
jnz store_vex_0f_instruction_code
mov [edi+2],ah
mov byte [edi],0C5h
mov al,[vex_register]
not al
shl al,3
mov ah,[rex_prefix]
shl ah,5
and ah,80h
xor al,ah
call get_vex_lpp_bits
mov [edi+1],al
call check_vex
add edi,3
ret
get_vex_lpp_bits:
cmp [operand_size],32
jne vex_l_bit_ok
or al,100b
vex_l_bit_ok:
mov ah,[opcode_prefix]
cmp ah,66h
je vex_66
cmp ah,0F3h
je vex_f3
cmp ah,0F2h
je vex_f2
test ah,ah
1714,74 → 1714,74
ret
vex_f2:
or al,11b
ret
vex_f3:
or al,10b
ret
vex_66:
or al,1
ret
store_vex_0f38_instruction_code:
mov al,11100010b
mov ah,[supplemental_code]
jmp make_c4_vex
store_vex_0f3a_instruction_code:
mov al,11100011b
mov ah,[supplemental_code]
jmp make_c4_vex
store_vex_0f_instruction_code:
mov al,11100001b
make_c4_vex:
mov [edi+3],ah
mov byte [edi],0C4h
mov ah,[rex_prefix]
shl ah,5
xor al,ah
mov [edi+1],al
call check_vex
mov al,[vex_register]
xor al,1111b
shl al,3
mov ah,[rex_prefix]
shl ah,4
and ah,80h
or al,ah
call get_vex_lpp_bits
mov [edi+2],al
add edi,4
ret
check_vex:
cmp [code_type],64
je vex_ok
not al
test al,11000000b
jnz invalid_operand
test [rex_prefix],40h
jnz invalid_operand
vex_ok:
ret
store_xop_instruction_code:
mov [edi+3],al
mov byte [edi],8Fh
mov al,[xop_opcode_map]
mov ah,[rex_prefix]
test ah,40h
jz xop_ok
cmp [code_type],64
jne invalid_operand
xop_ok:
not ah
shl ah,5
xor al,ah
mov [edi+1],al
mov al,[vex_register]
xor al,1111b
shl al,3
mov ah,[rex_prefix]
shl ah,4
and ah,80h
or al,ah
call get_vex_lpp_bits
mov [edi+2],al
add edi,4
ret
ret
vex_f3:
or al,10b
ret
vex_66:
or al,1
ret
store_vex_0f38_instruction_code:
mov al,11100010b
mov ah,[supplemental_code]
jmp make_c4_vex
store_vex_0f3a_instruction_code:
mov al,11100011b
mov ah,[supplemental_code]
jmp make_c4_vex
store_vex_0f_instruction_code:
mov al,11100001b
make_c4_vex:
mov [edi+3],ah
mov byte [edi],0C4h
mov ah,[rex_prefix]
shl ah,5
xor al,ah
mov [edi+1],al
call check_vex
mov al,[vex_register]
xor al,1111b
shl al,3
mov ah,[rex_prefix]
shl ah,4
and ah,80h
or al,ah
call get_vex_lpp_bits
mov [edi+2],al
add edi,4
ret
check_vex:
cmp [code_type],64
je vex_ok
not al
test al,11000000b
jnz invalid_operand
test [rex_prefix],40h
jnz invalid_operand
vex_ok:
ret
store_xop_instruction_code:
mov [edi+3],al
mov byte [edi],8Fh
mov al,[xop_opcode_map]
mov ah,[rex_prefix]
test ah,40h
jz xop_ok
cmp [code_type],64
jne invalid_operand
xop_ok:
not ah
shl ah,5
xor al,ah
mov [edi+1],al
mov al,[vex_register]
xor al,1111b
shl al,3
mov ah,[rex_prefix]
shl ah,4
and ah,80h
or al,ah
call get_vex_lpp_bits
mov [edi+2],al
add edi,4
ret
/programs/develop/fasm/trunk/exprcalc.inc
4,51 → 4,51
; All rights reserved.
 
calculate_expression:
mov [current_offset],edi
mov [value_undefined],0
cmp byte [esi],0
je get_string_value
cmp byte [esi],'.'
je convert_fp
calculation_loop:
lods byte [esi]
cmp al,1
je get_byte_number
cmp al,2
je get_word_number
cmp al,4
je get_dword_number
cmp al,8
je get_qword_number
cmp al,0Fh
je value_out_of_range
cmp al,10h
je get_register
cmp al,11h
je get_label
cmp al,')'
je expression_calculated
cmp al,']'
je expression_calculated
cmp al,'!'
je invalid_expression
sub edi,14h
mov ebx,edi
sub ebx,14h
cmp al,0E0h
je calculate_rva
cmp al,0E1h
je calculate_plt
cmp al,0D0h
je calculate_not
cmp al,083h
je calculate_neg
mov dx,[ebx+8]
or dx,[edi+8]
cmp al,80h
je calculate_add
cmp al,81h
je calculate_sub
mov [current_offset],edi
mov [value_undefined],0
cmp byte [esi],0
je get_string_value
cmp byte [esi],'.'
je convert_fp
calculation_loop:
lods byte [esi]
cmp al,1
je get_byte_number
cmp al,2
je get_word_number
cmp al,4
je get_dword_number
cmp al,8
je get_qword_number
cmp al,0Fh
je value_out_of_range
cmp al,10h
je get_register
cmp al,11h
je get_label
cmp al,')'
je expression_calculated
cmp al,']'
je expression_calculated
cmp al,'!'
je invalid_expression
sub edi,14h
mov ebx,edi
sub ebx,14h
cmp al,0E0h
je calculate_rva
cmp al,0E1h
je calculate_plt
cmp al,0D0h
je calculate_not
cmp al,083h
je calculate_neg
mov dx,[ebx+8]
or dx,[edi+8]
cmp al,80h
je calculate_add
cmp al,81h
je calculate_sub
mov ah,[ebx+12]
or ah,[edi+12]
jz absolute_values_calculation
56,27 → 56,27
absolute_values_calculation:
cmp al,90h
je calculate_mul
cmp al,91h
je calculate_div
or dx,dx
jnz invalid_expression
cmp al,0A0h
je calculate_mod
cmp al,0B0h
je calculate_and
cmp al,0B1h
je calculate_or
cmp al,0B2h
je calculate_xor
cmp al,0C0h
je calculate_shl
cmp al,0C1h
je calculate_shr
jmp invalid_expression
expression_calculated:
sub edi,14h
cmp [value_undefined],0
je expression_value_ok
cmp al,91h
je calculate_div
or dx,dx
jnz invalid_expression
cmp al,0A0h
je calculate_mod
cmp al,0B0h
je calculate_and
cmp al,0B1h
je calculate_or
cmp al,0B2h
je calculate_xor
cmp al,0C0h
je calculate_shl
cmp al,0C1h
je calculate_shr
jmp invalid_expression
expression_calculated:
sub edi,14h
cmp [value_undefined],0
je expression_value_ok
xor eax,eax
mov [edi],eax
mov [edi+4],eax
84,9 → 84,9
expression_value_ok:
ret
get_byte_number:
xor eax,eax
lods byte [esi]
stos dword [edi]
xor eax,eax
lods byte [esi]
stos dword [edi]
xor al,al
stos dword [edi]
got_number:
96,21 → 96,21
add edi,0Ch
jmp calculation_loop
get_word_number:
xor eax,eax
lods word [esi]
stos dword [edi]
xor ax,ax
stos dword [edi]
jmp got_number
get_dword_number:
movs dword [edi],[esi]
xor eax,eax
stos dword [edi]
jmp got_number
get_qword_number:
movs dword [edi],[esi]
movs dword [edi],[esi]
xor eax,eax
lods word [esi]
stos dword [edi]
xor ax,ax
stos dword [edi]
jmp got_number
get_dword_number:
movs dword [edi],[esi]
xor eax,eax
stos dword [edi]
jmp got_number
get_qword_number:
movs dword [edi],[esi]
movs dword [edi],[esi]
jmp got_number
get_register:
mov byte [edi+9],0
and word [edi+12],0
117,12 → 117,12
lods byte [esi]
mov [edi+8],al
mov byte [edi+10],1
xor eax,eax
mov [edi+16],eax
stos dword [edi]
stos dword [edi]
add edi,0Ch
jmp calculation_loop
xor eax,eax
mov [edi+16],eax
stos dword [edi]
stos dword [edi]
add edi,0Ch
jmp calculation_loop
get_label:
xor eax,eax
mov [edi+8],eax
130,8 → 130,8
mov [edi+20],eax
lods dword [esi]
cmp eax,0Fh
jb predefined_label
je reserved_word_used_as_symbol
jb predefined_label
je reserved_word_used_as_symbol
mov ebx,eax
mov ax,[current_pass]
mov [ebx+18],ax
191,25 → 191,25
mov eax,[ebx+20]
mov [edi-8+16],eax
add edi,0Ch
mov al,[ebx+10]
or al,al
jz calculation_loop
cmp [size_override],-1
je calculation_loop
cmp [size_override],0
je check_size
cmp [operand_size],0
jne calculation_loop
mov [operand_size],al
jmp calculation_loop
check_size:
xchg [operand_size],al
or al,al
jz calculation_loop
cmp al,[operand_size]
jne operand_sizes_do_not_match
jmp calculation_loop
current_offset_label:
mov al,[ebx+10]
or al,al
jz calculation_loop
cmp [size_override],-1
je calculation_loop
cmp [size_override],0
je check_size
cmp [operand_size],0
jne calculation_loop
mov [operand_size],al
jmp calculation_loop
check_size:
xchg [operand_size],al
or al,al
jz calculation_loop
cmp al,[operand_size]
jne operand_sizes_do_not_match
jmp calculation_loop
current_offset_label:
mov eax,[current_offset]
make_current_offset_label:
xor edx,edx
230,36 → 230,36
mov eax,[org_symbol]
mov [edi-12+16],eax
add edi,8
jmp calculation_loop
org_origin_label:
mov eax,[org_start]
jmp make_current_offset_label
counter_label:
mov eax,[counter]
make_dword_label_value:
stos dword [edi]
xor eax,eax
stos dword [edi]
add edi,0Ch
jmp calculation_loop
timestamp_label:
call make_timestamp
make_qword_label_value:
stos dword [edi]
mov eax,edx
stos dword [edi]
add edi,0Ch
jmp calculation_loop
predefined_label:
or eax,eax
jz current_offset_label
cmp eax,1
je counter_label
cmp eax,2
je timestamp_label
cmp eax,3
je org_origin_label
mov edx,invalid_value
jmp calculation_loop
org_origin_label:
mov eax,[org_start]
jmp make_current_offset_label
counter_label:
mov eax,[counter]
make_dword_label_value:
stos dword [edi]
xor eax,eax
stos dword [edi]
add edi,0Ch
jmp calculation_loop
timestamp_label:
call make_timestamp
make_qword_label_value:
stos dword [edi]
mov eax,edx
stos dword [edi]
add edi,0Ch
jmp calculation_loop
predefined_label:
or eax,eax
jz current_offset_label
cmp eax,1
je counter_label
cmp eax,2
je timestamp_label
cmp eax,3
je org_origin_label
mov edx,invalid_value
jmp error_undefined
label_out_of_scope:
mov edx,symbol_out_of_scope
287,8 → 287,8
jmp calculation_loop
calculate_add:
mov ecx,[ebx+16]
cmp byte [edi+12],0
je add_values
cmp byte [edi+12],0
je add_values
mov ecx,[edi+16]
cmp byte [ebx+12],0
je add_values
296,8 → 296,8
add_values:
mov al,[edi+12]
or [ebx+12],al
mov [ebx+16],ecx
mov eax,[edi]
mov [ebx+16],ecx
mov eax,[edi]
add [ebx],eax
mov eax,[edi+4]
adc [ebx+4],eax
309,20 → 309,20
or dx,dx
jz calculation_loop
push esi
mov esi,ebx
lea ebx,[edi+10]
mov cl,[edi+8]
call add_register
lea ebx,[edi+11]
mov cl,[edi+9]
call add_register
pop esi
jmp calculation_loop
add_register:
or cl,cl
jz add_register_done
add_register_start:
cmp [esi+8],cl
mov esi,ebx
lea ebx,[edi+10]
mov cl,[edi+8]
call add_register
lea ebx,[edi+11]
mov cl,[edi+9]
call add_register
pop esi
jmp calculation_loop
add_register:
or cl,cl
jz add_register_done
add_register_start:
cmp [esi+8],cl
jne add_in_second_slot
mov al,[ebx]
add [esi+10],al
330,8 → 330,8
jnz add_register_done
mov byte [esi+8],0
ret
add_in_second_slot:
cmp [esi+9],cl
add_in_second_slot:
cmp [esi+9],cl
jne create_in_first_slot
mov al,[ebx]
add [esi+11],al
339,18 → 339,18
jnz add_register_done
mov byte [esi+9],0
ret
create_in_first_slot:
cmp byte [esi+8],0
jne create_in_second_slot
mov [esi+8],cl
mov al,[ebx]
mov [esi+10],al
ret
create_in_second_slot:
cmp byte [esi+9],0
jne invalid_expression
mov [esi+9],cl
mov al,[ebx]
create_in_first_slot:
cmp byte [esi+8],0
jne create_in_second_slot
mov [esi+8],cl
mov al,[ebx]
mov [esi+10],al
ret
create_in_second_slot:
cmp byte [esi+9],0
jne invalid_expression
mov [esi+9],cl
mov al,[ebx]
mov [esi+11],al
add_register_done:
ret
359,11 → 359,11
calculate_sub:
xor ah,ah
mov ah,[ebx+12]
mov al,[edi+12]
or al,al
jz sub_values
cmp al,ah
jne invalid_sub
mov al,[edi+12]
or al,al
jz sub_values
cmp al,ah
jne invalid_sub
xor ah,ah
mov ecx,[edi+16]
cmp ecx,[ebx+16]
386,13 → 386,13
or dx,dx
jz calculation_loop
push esi
mov esi,ebx
lea ebx,[edi+10]
mov cl,[edi+8]
call sub_register
lea ebx,[edi+11]
mov cl,[edi+9]
mov esi,ebx
lea ebx,[edi+10]
mov cl,[edi+8]
call sub_register
lea ebx,[edi+11]
mov cl,[edi+9]
call sub_register
pop esi
jmp calculation_loop
sub_register:
485,7 → 485,7
pop edx
or dx,dx
jz mul_calculated
cmp word [edi+8],0
cmp word [edi+8],0
jne invalid_value
cmp byte [esi+8],0
je mul_first_register_ok
493,12 → 493,12
imul byte [esi+10]
mov dl,ah
cbw
cmp ah,dl
jne value_out_of_range
mov [esi+10],al
or al,al
jnz mul_first_register_ok
mov [esi+8],al
cmp ah,dl
jne value_out_of_range
mov [esi+10],al
or al,al
jnz mul_first_register_ok
mov [esi+8],al
mul_first_register_ok:
cmp byte [esi+9],0
je mul_calculated
506,12 → 506,12
imul byte [esi+11]
mov dl,ah
cbw
cmp ah,dl
jne value_out_of_range
mov [esi+11],al
or al,al
jnz mul_calculated
mov [esi+9],al
cmp ah,dl
jne value_out_of_range
mov [esi+11],al
or al,al
jnz mul_calculated
mov [esi+9],al
mul_calculated:
pop esi
jmp calculation_loop
532,9 → 532,9
calculate_div:
push esi edx
mov esi,ebx
call div_64
pop edx
or dx,dx
call div_64
pop edx
or dx,dx
jz div_calculated
cmp byte [esi+8],0
je div_first_register_ok
542,11 → 542,11
or al,al
jz value_out_of_range
mov al,[esi+10]
cbw
idiv byte [edi]
or ah,ah
jnz invalid_use_of_symbol
mov [esi+10],al
cbw
idiv byte [edi]
or ah,ah
jnz invalid_use_of_symbol
mov [esi+10],al
div_first_register_ok:
cmp byte [esi+9],0
je div_calculated
554,17 → 554,17
or al,al
jz value_out_of_range
mov al,[esi+11]
cbw
idiv byte [edi]
or ah,ah
jnz invalid_use_of_symbol
mov [esi+11],al
div_calculated:
pop esi
jmp calculation_loop
calculate_mod:
push esi
mov esi,ebx
cbw
idiv byte [edi]
or ah,ah
jnz invalid_use_of_symbol
mov [esi+11],al
div_calculated:
pop esi
jmp calculation_loop
calculate_mod:
push esi
mov esi,ebx
call div_64
mov [esi],eax
mov [esi+4],edx
848,10 → 848,10
add edi,14h
jmp calculation_loop
not_byte:
cmp dword [edi+4],0
jne not_qword
cmp word [edi+2],0
jne not_qword
cmp dword [edi+4],0
jne not_qword
cmp word [edi+2],0
jne not_qword
cmp byte [edi+1],0
jne not_qword
not byte [edi]
907,10 → 907,10
jne invalid_expression
test [format_flags],8
jnz pe64_rva
mov al,2
bt [resolver_flags],0
jc rva_type_ok
xor al,al
mov al,2
bt [resolver_flags],0
jc rva_type_ok
xor al,al
rva_type_ok:
cmp byte [edi+12],al
je rva_ok
930,10 → 930,10
add edi,14h
jmp calculation_loop
pe64_rva:
mov al,4
bt [resolver_flags],0
jc pe64_rva_type_ok
xor al,al
mov al,4
bt [resolver_flags],0
jc pe64_rva_type_ok
xor al,al
pe64_rva_type_ok:
cmp byte [edi+12],al
je pe64_rva_ok
947,8 → 947,8
calculate_gotoff:
test [format_flags],8+1
jnz invalid_expression
calculate_coff_rva:
mov dl,5
calculate_coff_rva:
mov dl,5
cmp byte [edi+12],2
je change_value_type
incorrect_change_of_value_type:
956,36 → 956,36
change_value_type:
mov byte [edi+12],dl
add edi,14h
jmp calculation_loop
calculate_plt:
cmp word [edi+8],0
jne invalid_expression
cmp [output_format],5
jne invalid_expression
test [format_flags],1
jnz invalid_expression
mov dl,6
mov dh,2
test [format_flags],8
jz check_value_for_plt
mov dh,4
check_value_for_plt:
mov eax,[edi]
or eax,[edi+4]
jnz incorrect_change_of_value_type
cmp byte [edi+12],dh
jne incorrect_change_of_value_type
mov eax,[edi+16]
cmp byte [eax],80h
jne incorrect_change_of_value_type
jmp change_value_type
div_64:
xor ebx,ebx
cmp dword [edi],0
jne divider_ok
cmp dword [edi+4],0
jne divider_ok
cmp [next_pass_needed],0
jmp calculation_loop
calculate_plt:
cmp word [edi+8],0
jne invalid_expression
cmp [output_format],5
jne invalid_expression
test [format_flags],1
jnz invalid_expression
mov dl,6
mov dh,2
test [format_flags],8
jz check_value_for_plt
mov dh,4
check_value_for_plt:
mov eax,[edi]
or eax,[edi+4]
jnz incorrect_change_of_value_type
cmp byte [edi+12],dh
jne incorrect_change_of_value_type
mov eax,[edi+16]
cmp byte [eax],80h
jne incorrect_change_of_value_type
jmp change_value_type
div_64:
xor ebx,ebx
cmp dword [edi],0
jne divider_ok
cmp dword [edi+4],0
jne divider_ok
cmp [next_pass_needed],0
je value_out_of_range
jmp div_done
divider_ok:
1019,16 → 1019,16
div_second_sign_ok:
cmp dword [edi+4],0
jne div_high
mov ecx,[edi]
mov eax,[esi+4]
xor edx,edx
div ecx
mov [esi+4],eax
mov eax,[esi]
div ecx
mov [esi],eax
mov eax,edx
mov ecx,[edi]
mov eax,[esi+4]
xor edx,edx
div ecx
mov [esi+4],eax
mov eax,[esi]
div ecx
mov [esi],eax
mov eax,edx
xor edx,edx
jmp div_done
div_high:
push ebx
1041,18 → 1041,18
mov ecx,edx
mul dword [edi]
div_high_loop:
cmp ecx,edx
ja div_high_done
jb div_high_large_correction
cmp ebx,eax
jae div_high_done
div_high_correction:
dec dword [esi]
sub eax,[edi]
sbb edx,[edi+4]
jnc div_high_loop
div_high_done:
sub ebx,eax
cmp ecx,edx
ja div_high_done
jb div_high_large_correction
cmp ebx,eax
jae div_high_done
div_high_correction:
dec dword [esi]
sub eax,[edi]
sbb edx,[edi+4]
jnc div_high_loop
div_high_done:
sub ebx,eax
sbb ecx,edx
mov edx,ecx
mov eax,ebx
1061,28 → 1061,28
div_high_large_correction:
push eax edx
mov eax,edx
sub eax,ecx
xor edx,edx
div dword [edi+4]
shr eax,1
jz div_high_small_correction
sub [esi],eax
push eax
mul dword [edi+4]
sub dword [esp+4],eax
pop eax
mul dword [edi]
sub dword [esp+4],eax
sbb dword [esp],edx
pop edx eax
jmp div_high_loop
div_high_small_correction:
pop edx eax
jmp div_high_correction
div_done:
or bh,bh
jz remainder_ok
not eax
sub eax,ecx
xor edx,edx
div dword [edi+4]
shr eax,1
jz div_high_small_correction
sub [esi],eax
push eax
mul dword [edi+4]
sub dword [esp+4],eax
pop eax
mul dword [edi]
sub dword [esp+4],eax
sbb dword [esp],edx
pop edx eax
jmp div_high_loop
div_high_small_correction:
pop edx eax
jmp div_high_correction
div_done:
or bh,bh
jz remainder_ok
not eax
not edx
add eax,1
adc edx,0
1093,7 → 1093,7
remainder_ok:
or bl,bl
jz div_ok
not dword [esi]
not dword [esi]
not dword [esi+4]
add dword [esi],1
adc dword [esi+4],0
1193,108 → 1193,108
convert_fp_word:
xor eax,eax
cmp word [esi+8],8000h
je fp_word_store
mov bx,[esi+8]
mov ax,[esi+6]
shl ax,1
shr ax,6
jnc fp_word_ok
inc ax
bt ax,10
jnc fp_word_ok
and ax,1 shl 10 - 1
inc bx
shr ax,1
fp_word_ok:
add bx,0Fh
cmp bx,01Fh
jge value_out_of_range
cmp bx,0
jg fp_word_exp_ok
or ax,1 shl 10
mov cx,bx
neg cx
inc cx
cmp cx,10
ja value_out_of_range
xor bx,bx
shr ax,cl
jnc fp_word_exp_ok
inc ax
test ax,1 shl 10
jz fp_word_exp_ok
and ax,1 shl 10 - 1
inc bx
fp_word_exp_ok:
shl bx,10
or ax,bx
fp_word_store:
mov bl,[esi+11]
shl bx,15
or ax,bx
mov [edi],eax
xor eax,eax
mov [edi+4],eax
add esi,13
ret
convert_fp_dword:
xor eax,eax
cmp word [esi+8],8000h
je fp_dword_store
mov bx,[esi+8]
mov eax,[esi+4]
shl eax,1
shr eax,9
jnc fp_dword_ok
inc eax
bt eax,23
jnc fp_dword_ok
and eax,1 shl 23 - 1
inc bx
shr eax,1
fp_dword_ok:
add bx,7Fh
cmp bx,0FFh
jge value_out_of_range
cmp bx,0
jg fp_dword_exp_ok
or eax,1 shl 23
mov cx,bx
neg cx
inc cx
cmp cx,23
ja value_out_of_range
xor bx,bx
shr eax,cl
jnc fp_dword_exp_ok
inc eax
test eax,1 shl 23
jz fp_dword_exp_ok
and eax,1 shl 23 - 1
inc bx
fp_dword_exp_ok:
shl ebx,23
or eax,ebx
fp_dword_store:
mov bl,[esi+11]
shl ebx,31
or eax,ebx
mov [edi],eax
xor eax,eax
je fp_word_store
mov bx,[esi+8]
mov ax,[esi+6]
shl ax,1
shr ax,6
jnc fp_word_ok
inc ax
bt ax,10
jnc fp_word_ok
and ax,1 shl 10 - 1
inc bx
shr ax,1
fp_word_ok:
add bx,0Fh
cmp bx,01Fh
jge value_out_of_range
cmp bx,0
jg fp_word_exp_ok
or ax,1 shl 10
mov cx,bx
neg cx
inc cx
cmp cx,10
ja value_out_of_range
xor bx,bx
shr ax,cl
jnc fp_word_exp_ok
inc ax
test ax,1 shl 10
jz fp_word_exp_ok
and ax,1 shl 10 - 1
inc bx
fp_word_exp_ok:
shl bx,10
or ax,bx
fp_word_store:
mov bl,[esi+11]
shl bx,15
or ax,bx
mov [edi],eax
xor eax,eax
mov [edi+4],eax
add esi,13
ret
convert_fp_dword:
xor eax,eax
cmp word [esi+8],8000h
je fp_dword_store
mov bx,[esi+8]
mov eax,[esi+4]
shl eax,1
shr eax,9
jnc fp_dword_ok
inc eax
bt eax,23
jnc fp_dword_ok
and eax,1 shl 23 - 1
inc bx
shr eax,1
fp_dword_ok:
add bx,7Fh
cmp bx,0FFh
jge value_out_of_range
cmp bx,0
jg fp_dword_exp_ok
or eax,1 shl 23
mov cx,bx
neg cx
inc cx
cmp cx,23
ja value_out_of_range
xor bx,bx
shr eax,cl
jnc fp_dword_exp_ok
inc eax
test eax,1 shl 23
jz fp_dword_exp_ok
and eax,1 shl 23 - 1
inc bx
fp_dword_exp_ok:
shl ebx,23
or eax,ebx
fp_dword_store:
mov bl,[esi+11]
shl ebx,31
or eax,ebx
mov [edi],eax
xor eax,eax
mov [edi+4],eax
add esi,13
ret
get_string_value:
inc esi
lods dword [esi]
mov ecx,eax
cmp ecx,8
ja value_out_of_range
mov edx,edi
xor eax,eax
stos dword [edi]
stos dword [edi]
mov edi,edx
mov ecx,eax
cmp ecx,8
ja value_out_of_range
mov edx,edi
xor eax,eax
stos dword [edi]
stos dword [edi]
mov edi,edx
rep movs byte [edi],[esi]
mov edi,edx
inc esi
1325,7 → 1325,7
cmp eax,100h
jae range_exceeded
return_byte_value:
ret
ret
range_exceeded:
xor eax,eax
xor edx,edx
1376,7 → 1376,7
cmp al,4
jne check_dword_value
mov [value_type],2
mov eax,[edi]
mov eax,[edi]
cdq
cmp edx,[edi+4]
jne range_exceeded
1448,33 → 1448,33
mov eax,[edi]
mov edx,[edi+4]
or edx,edx
jnz invalid_count_value
ret
invalid_count_value:
cmp [error_line],0
jne zero_count
mov eax,[current_line]
mov [error_line],eax
mov [error],invalid_value
zero_count:
xor eax,eax
ret
get_value:
mov [operand_size],0
lods byte [esi]
call get_size_operator
cmp al,'('
jne invalid_value
mov al,[operand_size]
cmp al,1
je value_byte
cmp al,2
je value_word
cmp al,4
je value_dword
cmp al,6
je value_pword
cmp al,8
jnz invalid_count_value
ret
invalid_count_value:
cmp [error_line],0
jne zero_count
mov eax,[current_line]
mov [error_line],eax
mov [error],invalid_value
zero_count:
xor eax,eax
ret
get_value:
mov [operand_size],0
lods byte [esi]
call get_size_operator
cmp al,'('
jne invalid_value
mov al,[operand_size]
cmp al,1
je value_byte
cmp al,2
je value_word
cmp al,4
je value_dword
cmp al,6
je value_pword
cmp al,8
je value_qword
or al,al
jnz invalid_value
1520,21 → 1520,21
get_address_word_value:
mov [address_size],2
mov [value_size],2
jmp calculate_address
get_address_dword_value:
mov [address_size],4
mov [value_size],4
jmp calculate_address
get_address_qword_value:
mov [address_size],8
mov [value_size],8
jmp calculate_address
get_address_value:
mov [address_size],0
mov [value_size],8
calculate_address:
cmp byte [esi],'.'
je invalid_address
jmp calculate_address
get_address_dword_value:
mov [address_size],4
mov [value_size],4
jmp calculate_address
get_address_qword_value:
mov [address_size],8
mov [value_size],8
jmp calculate_address
get_address_value:
mov [address_size],0
mov [value_size],8
calculate_address:
cmp byte [esi],'.'
je invalid_address
call calculate_expression
mov eax,[edi+16]
mov [address_symbol],eax
1543,24 → 1543,24
mov al,[edi+12]
mov [value_type],al
cmp al,6
je special_address_type_32bit
cmp al,5
je special_address_type_32bit
ja invalid_use_of_symbol
test al,1
jnz invalid_use_of_symbol
or al,al
jz address_size_ok
shl al,5
jmp address_symbol_ok
special_address_type_32bit:
mov al,40h
address_symbol_ok:
mov ah,[address_size]
or [address_size],al
shr al,4
or ah,ah
je special_address_type_32bit
cmp al,5
je special_address_type_32bit
ja invalid_use_of_symbol
test al,1
jnz invalid_use_of_symbol
or al,al
jz address_size_ok
shl al,5
jmp address_symbol_ok
special_address_type_32bit:
mov al,40h
address_symbol_ok:
mov ah,[address_size]
or [address_size],al
shr al,4
or ah,ah
jz address_size_ok
cmp al,ah
je address_size_ok
cmp ax,0408h
1579,14 → 1579,14
address_size_ok:
xor ebx,ebx
xor ecx,ecx
mov cl,[value_type]
shl ecx,16
mov ch,[address_size]
cmp word [edi+8],0
je check_immediate_address
mov al,[edi+8]
mov dl,[edi+10]
call get_address_register
mov cl,[value_type]
shl ecx,16
mov ch,[address_size]
cmp word [edi+8],0
je check_immediate_address
mov al,[edi+8]
mov dl,[edi+10]
call get_address_register
mov al,[edi+9]
mov dl,[edi+11]
call get_address_register
1604,35 → 1604,35
or bh,bh
jz check_address_registers
or bl,bl
jz check_address_registers
cmp al,ah
jne invalid_address
check_address_registers:
or al,ah
mov ah,[address_size]
and ah,0Fh
jz address_registers_sizes_ok
cmp al,ah
jne address_sizes_do_not_match
address_registers_sizes_ok:
cmp al,4
je sib_allowed
cmp al,8
je sib_allowed
cmp al,0Fh
je check_ip_relative_address
or cl,cl
jz check_word_value
cmp cl,1
je check_word_value
jmp invalid_address
address_sizes_do_not_match:
cmp al,0Fh
jne invalid_address
mov al,bh
and al,0Fh
jz check_address_registers
cmp al,ah
jne invalid_address
check_address_registers:
or al,ah
mov ah,[address_size]
and ah,0Fh
jz address_registers_sizes_ok
cmp al,ah
jne address_sizes_do_not_match
address_registers_sizes_ok:
cmp al,4
je sib_allowed
cmp al,8
je sib_allowed
cmp al,0Fh
je check_ip_relative_address
or cl,cl
jz check_word_value
cmp cl,1
je check_word_value
jmp invalid_address
address_sizes_do_not_match:
cmp al,0Fh
jne invalid_address
mov al,bh
and al,0Fh
cmp al,ah
jne invalid_address
check_ip_relative_address:
or bl,bl
jnz invalid_address
1639,8 → 1639,8
cmp bh,0F4h
je check_dword_value
cmp bh,0F8h
jne invalid_address
mov eax,[edi]
jne invalid_address
mov eax,[edi]
cdq
cmp edx,[edi+4]
jne range_exceeded
1649,97 → 1649,97
ret
get_address_register:
or al,al
jz address_register_ok
cmp dl,1
jne scaled_register
or bh,bh
jnz scaled_register
mov bh,al
address_register_ok:
ret
scaled_register:
or bl,bl
jnz invalid_address
mov bl,al
mov cl,dl
jmp address_register_ok
sib_allowed:
or bh,bh
jnz check_index_with_base
cmp cl,3
je special_index_scale
cmp cl,5
je special_index_scale
cmp cl,9
je special_index_scale
cmp cl,2
jne check_index_scale
cmp bl,45h
jne special_index_scale
cmp [code_type],64
je special_index_scale
cmp [segment_register],4
jne special_index_scale
cmp [value_type],0
jne check_index_scale
mov al,[edi]
cbw
cwde
cmp eax,[edi]
jne check_index_scale
cdq
cmp edx,[edi+4]
jne check_immediate_address
special_index_scale:
mov bh,bl
dec cl
check_immediate_address:
mov al,[address_size]
and al,0Fh
cmp al,2
je check_word_value
cmp al,4
je check_dword_value
cmp al,8
je check_qword_value
or al,al
jnz invalid_value
cmp [code_type],64
jne check_dword_value
jmp check_qword_value
check_index_with_base:
cmp cl,1
jne check_index_scale
cmp bl,44h
je swap_base_with_index
cmp bl,84h
je swap_base_with_index
cmp [code_type],64
je check_for_rbp_base
cmp bl,45h
jne check_for_ebp_base
cmp [segment_register],3
je swap_base_with_index
jmp check_immediate_address
check_for_ebp_base:
cmp bh,45h
jne check_immediate_address
cmp [segment_register],4
jne check_immediate_address
swap_base_with_index:
xchg bl,bh
jmp check_immediate_address
check_for_rbp_base:
cmp bh,45h
je swap_base_with_index
cmp bh,85h
je swap_base_with_index
jmp check_immediate_address
check_index_scale:
test cl,not 1111b
jnz invalid_address
mov al,cl
dec al
jz address_register_ok
cmp dl,1
jne scaled_register
or bh,bh
jnz scaled_register
mov bh,al
address_register_ok:
ret
scaled_register:
or bl,bl
jnz invalid_address
mov bl,al
mov cl,dl
jmp address_register_ok
sib_allowed:
or bh,bh
jnz check_index_with_base
cmp cl,3
je special_index_scale
cmp cl,5
je special_index_scale
cmp cl,9
je special_index_scale
cmp cl,2
jne check_index_scale
cmp bl,45h
jne special_index_scale
cmp [code_type],64
je special_index_scale
cmp [segment_register],4
jne special_index_scale
cmp [value_type],0
jne check_index_scale
mov al,[edi]
cbw
cwde
cmp eax,[edi]
jne check_index_scale
cdq
cmp edx,[edi+4]
jne check_immediate_address
special_index_scale:
mov bh,bl
dec cl
check_immediate_address:
mov al,[address_size]
and al,0Fh
cmp al,2
je check_word_value
cmp al,4
je check_dword_value
cmp al,8
je check_qword_value
or al,al
jnz invalid_value
cmp [code_type],64
jne check_dword_value
jmp check_qword_value
check_index_with_base:
cmp cl,1
jne check_index_scale
cmp bl,44h
je swap_base_with_index
cmp bl,84h
je swap_base_with_index
cmp [code_type],64
je check_for_rbp_base
cmp bl,45h
jne check_for_ebp_base
cmp [segment_register],3
je swap_base_with_index
jmp check_immediate_address
check_for_ebp_base:
cmp bh,45h
jne check_immediate_address
cmp [segment_register],4
jne check_immediate_address
swap_base_with_index:
xchg bl,bh
jmp check_immediate_address
check_for_rbp_base:
cmp bh,45h
je swap_base_with_index
cmp bh,85h
je swap_base_with_index
jmp check_immediate_address
check_index_scale:
test cl,not 1111b
jnz invalid_address
mov al,cl
dec al
and al,cl
jz check_immediate_address
jmp invalid_address
1776,14 → 1776,14
calculate_relative_offset:
cmp [value_undefined],0
jne relative_offset_ok
test bh,bh
setne ch
cmp bx,word [org_registers]
je origin_registers_ok
xchg bh,bl
xchg ch,cl
cmp bx,word [org_registers]
jne invalid_value
test bh,bh
setne ch
cmp bx,word [org_registers]
je origin_registers_ok
xchg bh,bl
xchg ch,cl
cmp bx,word [org_registers]
jne invalid_value
origin_registers_ok:
cmp cx,word [org_registers+2]
jne invalid_value
1815,8 → 1815,8
mov [value_type],0
cmp ecx,[org_symbol]
je relative_offset_ok
mov [value_type],3
relative_offset_ok:
mov [value_type],3
relative_offset_ok:
ret
plt_relative_offset:
mov [value_type],7
1827,37 → 1827,37
ret
 
calculate_logical_expression:
xor al,al
calculate_embedded_logical_expression:
mov [logical_value_wrapping],al
call get_logical_value
logical_loop:
cmp byte [esi],'|'
je logical_or
cmp byte [esi],'&'
je logical_and
ret
logical_or:
inc esi
or al,al
jnz logical_value_already_determined
push eax
call get_logical_value
pop ebx
or al,bl
jmp logical_loop
logical_and:
inc esi
or al,al
jz logical_value_already_determined
push eax
call get_logical_value
pop ebx
and al,bl
jmp logical_loop
logical_value_already_determined:
push eax
call skip_logical_value
xor al,al
calculate_embedded_logical_expression:
mov [logical_value_wrapping],al
call get_logical_value
logical_loop:
cmp byte [esi],'|'
je logical_or
cmp byte [esi],'&'
je logical_and
ret
logical_or:
inc esi
or al,al
jnz logical_value_already_determined
push eax
call get_logical_value
pop ebx
or al,bl
jmp logical_loop
logical_and:
inc esi
or al,al
jz logical_value_already_determined
push eax
call get_logical_value
pop ebx
and al,bl
jmp logical_loop
logical_value_already_determined:
push eax
call skip_logical_value
jc invalid_expression
pop eax
jmp logical_loop
1886,23 → 1886,23
get_logical_value:
xor al,al
check_for_negation:
cmp byte [esi],'~'
jne negation_ok
inc esi
xor al,-1
jmp check_for_negation
negation_ok:
push eax
mov al,[esi]
cmp al,'{'
je logical_expression
cmp al,0FFh
je invalid_expression
cmp al,88h
je check_for_defined
cmp al,89h
je check_for_used
cmp al,'0'
cmp byte [esi],'~'
jne negation_ok
inc esi
xor al,-1
jmp check_for_negation
negation_ok:
push eax
mov al,[esi]
cmp al,'{'
je logical_expression
cmp al,0FFh
je invalid_expression
cmp al,88h
je check_for_defined
cmp al,89h
je check_for_used
cmp al,'0'
je given_false
cmp al,'1'
je given_true
1912,14 → 1912,14
mov al,[esi]
or al,al
jz logical_number
cmp al,0Fh
je logical_number
cmp al,'}'
je logical_number
cmp al,'&'
je logical_number
cmp al,'|'
cmp al,0Fh
je logical_number
cmp al,'}'
je logical_number
cmp al,'&'
je logical_number
cmp al,'|'
je logical_number
inc esi
mov [compare_type],al
call get_value_for_comparison
2041,200 → 2041,200
or eax,edx
jnz return_true
jmp return_false
check_for_defined:
or bl,-1
lods word [esi]
cmp ah,'('
jne invalid_expression
check_expression:
lods byte [esi]
or al,al
jz defined_string
cmp al,'.'
je defined_fp_value
cmp al,')'
je expression_checked
cmp al,'!'
je invalid_expression
cmp al,0Fh
je check_expression
cmp al,10h
je defined_register
cmp al,11h
je check_if_symbol_defined
cmp al,80h
jae check_expression
movzx eax,al
add esi,eax
jmp check_expression
defined_register:
inc esi
jmp check_expression
defined_fp_value:
add esi,12
jmp expression_checked
defined_string:
lods dword [esi]
add esi,eax
inc esi
jmp expression_checked
check_if_symbol_defined:
lods dword [esi]
cmp eax,-1
je invalid_expression
cmp eax,0Fh
jb check_expression
je reserved_word_used_as_symbol
test byte [eax+8],4
jnz no_prediction
test byte [eax+8],1
jz symbol_predicted_undefined
mov cx,[current_pass]
sub cx,[eax+16]
jz check_expression
cmp cx,1
ja symbol_predicted_undefined
or byte [eax+8],40h+80h
jmp check_expression
no_prediction:
test byte [eax+8],1
jz symbol_undefined
mov cx,[current_pass]
sub cx,[eax+16]
jz check_expression
jmp symbol_undefined
symbol_predicted_undefined:
or byte [eax+8],40h
and byte [eax+8],not 80h
symbol_undefined:
xor bl,bl
jmp check_expression
expression_checked:
mov al,bl
jmp logical_value_ok
check_for_used:
lods word [esi]
cmp ah,2
jne invalid_expression
lods dword [esi]
cmp eax,0Fh
jb invalid_use_of_symbol
je reserved_word_used_as_symbol
inc esi
test byte [eax+8],8
jz not_used
mov cx,[current_pass]
sub cx,[eax+18]
jz return_true
cmp cx,1
ja not_used
or byte [eax+8],10h+20h
jmp return_true
not_used:
or byte [eax+8],10h
and byte [eax+8],not 20h
jmp return_false
given_false:
inc esi
return_false:
xor al,al
jmp logical_value_ok
given_true:
inc esi
return_true:
or al,-1
jmp logical_value_ok
logical_expression:
lods byte [esi]
mov dl,[logical_value_wrapping]
push edx
call calculate_embedded_logical_expression
pop edx
mov [logical_value_wrapping],dl
push eax
lods byte [esi]
cmp al,'}'
jne invalid_expression
pop eax
logical_value_ok:
pop ebx
xor al,bl
ret
 
skip_symbol:
lods byte [esi]
or al,al
jz nothing_to_skip
cmp al,0Fh
je nothing_to_skip
cmp al,1
je skip_instruction
cmp al,2
je skip_label
cmp al,3
je skip_label
cmp al,20h
jb skip_assembler_symbol
cmp al,'('
je skip_expression
cmp al,'['
je skip_address
skip_done:
clc
ret
skip_label:
add esi,2
skip_instruction:
add esi,2
skip_assembler_symbol:
inc esi
jmp skip_done
skip_address:
mov al,[esi]
and al,11110000b
cmp al,60h
jb skip_expression
cmp al,70h
ja skip_expression
inc esi
jmp skip_address
skip_expression:
lods byte [esi]
or al,al
jz skip_string
cmp al,'.'
je skip_fp_value
cmp al,')'
je skip_done
cmp al,']'
je skip_done
cmp al,'!'
je skip_expression
cmp al,0Fh
je skip_expression
cmp al,10h
je skip_register
cmp al,11h
je skip_label_value
cmp al,80h
jae skip_expression
movzx eax,al
add esi,eax
jmp skip_expression
skip_label_value:
add esi,3
skip_register:
inc esi
jmp skip_expression
skip_fp_value:
add esi,12
jmp skip_done
skip_string:
lods dword [esi]
add esi,eax
inc esi
jmp skip_done
nothing_to_skip:
check_for_defined:
or bl,-1
lods word [esi]
cmp ah,'('
jne invalid_expression
check_expression:
lods byte [esi]
or al,al
jz defined_string
cmp al,'.'
je defined_fp_value
cmp al,')'
je expression_checked
cmp al,'!'
je invalid_expression
cmp al,0Fh
je check_expression
cmp al,10h
je defined_register
cmp al,11h
je check_if_symbol_defined
cmp al,80h
jae check_expression
movzx eax,al
add esi,eax
jmp check_expression
defined_register:
inc esi
jmp check_expression
defined_fp_value:
add esi,12
jmp expression_checked
defined_string:
lods dword [esi]
add esi,eax
inc esi
jmp expression_checked
check_if_symbol_defined:
lods dword [esi]
cmp eax,-1
je invalid_expression
cmp eax,0Fh
jb check_expression
je reserved_word_used_as_symbol
test byte [eax+8],4
jnz no_prediction
test byte [eax+8],1
jz symbol_predicted_undefined
mov cx,[current_pass]
sub cx,[eax+16]
jz check_expression
cmp cx,1
ja symbol_predicted_undefined
or byte [eax+8],40h+80h
jmp check_expression
no_prediction:
test byte [eax+8],1
jz symbol_undefined
mov cx,[current_pass]
sub cx,[eax+16]
jz check_expression
jmp symbol_undefined
symbol_predicted_undefined:
or byte [eax+8],40h
and byte [eax+8],not 80h
symbol_undefined:
xor bl,bl
jmp check_expression
expression_checked:
mov al,bl
jmp logical_value_ok
check_for_used:
lods word [esi]
cmp ah,2
jne invalid_expression
lods dword [esi]
cmp eax,0Fh
jb invalid_use_of_symbol
je reserved_word_used_as_symbol
inc esi
test byte [eax+8],8
jz not_used
mov cx,[current_pass]
sub cx,[eax+18]
jz return_true
cmp cx,1
ja not_used
or byte [eax+8],10h+20h
jmp return_true
not_used:
or byte [eax+8],10h
and byte [eax+8],not 20h
jmp return_false
given_false:
inc esi
return_false:
xor al,al
jmp logical_value_ok
given_true:
inc esi
return_true:
or al,-1
jmp logical_value_ok
logical_expression:
lods byte [esi]
mov dl,[logical_value_wrapping]
push edx
call calculate_embedded_logical_expression
pop edx
mov [logical_value_wrapping],dl
push eax
lods byte [esi]
cmp al,'}'
jne invalid_expression
pop eax
logical_value_ok:
pop ebx
xor al,bl
ret
 
skip_symbol:
lods byte [esi]
or al,al
jz nothing_to_skip
cmp al,0Fh
je nothing_to_skip
cmp al,1
je skip_instruction
cmp al,2
je skip_label
cmp al,3
je skip_label
cmp al,20h
jb skip_assembler_symbol
cmp al,'('
je skip_expression
cmp al,'['
je skip_address
skip_done:
clc
ret
skip_label:
add esi,2
skip_instruction:
add esi,2
skip_assembler_symbol:
inc esi
jmp skip_done
skip_address:
mov al,[esi]
and al,11110000b
cmp al,60h
jb skip_expression
cmp al,70h
ja skip_expression
inc esi
jmp skip_address
skip_expression:
lods byte [esi]
or al,al
jz skip_string
cmp al,'.'
je skip_fp_value
cmp al,')'
je skip_done
cmp al,']'
je skip_done
cmp al,'!'
je skip_expression
cmp al,0Fh
je skip_expression
cmp al,10h
je skip_register
cmp al,11h
je skip_label_value
cmp al,80h
jae skip_expression
movzx eax,al
add esi,eax
jmp skip_expression
skip_label_value:
add esi,3
skip_register:
inc esi
jmp skip_expression
skip_fp_value:
add esi,12
jmp skip_done
skip_string:
lods dword [esi]
add esi,eax
inc esi
jmp skip_done
nothing_to_skip:
dec esi
stc
ret
/programs/develop/fasm/trunk/exprpars.inc
4,14 → 4,14
; All rights reserved.
 
convert_expression:
push ebp
call get_fp_value
jnc fp_expression
mov [current_offset],esp
expression_loop:
push edi
mov edi,single_operand_operators
call get_operator
push ebp
call get_fp_value
jnc fp_expression
mov [current_offset],esp
expression_loop:
push edi
mov edi,single_operand_operators
call get_operator
pop edi
or al,al
jz expression_element
20,117 → 20,117
push eax
jmp expression_loop
expression_element:
mov al,[esi]
cmp al,1Ah
je expression_number
cmp al,22h
je expression_number
cmp al,'('
je expression_number
mov al,'!'
stos byte [edi]
jmp expression_operator
expression_number:
call convert_number
expression_operator:
push edi
mov edi,operators
call get_operator
pop edi
or al,al
jz expression_end
operators_loop:
cmp esp,[current_offset]
je push_operator
mov bl,al
and bl,0F0h
mov bh,byte [esp]
and bh,0F0h
cmp bl,bh
ja push_operator
pop ebx
mov byte [edi],bl
inc edi
jmp operators_loop
push_operator:
push eax
jmp expression_loop
expression_end:
cmp esp,[current_offset]
je expression_converted
pop eax
stos byte [edi]
jmp expression_end
expression_converted:
pop ebp
ret
fp_expression:
mov al,'.'
stos byte [edi]
mov eax,[fp_value]
stos dword [edi]
mov eax,[fp_value+4]
stos dword [edi]
mov eax,[fp_value+8]
stos dword [edi]
pop ebp
ret
 
convert_number:
lea eax,[edi-10h]
mov edx,[memory_end]
cmp [source_start],0
je check_memory_for_number
mov edx,[labels_list]
check_memory_for_number:
cmp eax,edx
jae out_of_memory
mov eax,esp
sub eax,100h
jc stack_overflow
cmp eax,[stack_limit]
jb stack_overflow
cmp byte [esi],'('
je expression_value
inc edi
call get_number
jc symbol_value
or ebp,ebp
jz valid_number
mov byte [edi-1],0Fh
ret
valid_number:
cmp dword [edi+4],0
jne qword_number
cmp word [edi+2],0
jne dword_number
cmp byte [edi+1],0
jne word_number
byte_number:
mov byte [edi-1],1
inc edi
ret
qword_number:
mov byte [edi-1],8
add edi,8
ret
dword_number:
mov byte [edi-1],4
scas dword [edi]
ret
word_number:
mov byte [edi-1],2
scas word [edi]
ret
expression_value:
inc esi
push [current_offset]
call convert_expression
pop [current_offset]
lods byte [esi]
cmp al,')'
jne invalid_expression
ret
mov al,[esi]
cmp al,1Ah
je expression_number
cmp al,22h
je expression_number
cmp al,'('
je expression_number
mov al,'!'
stos byte [edi]
jmp expression_operator
expression_number:
call convert_number
expression_operator:
push edi
mov edi,operators
call get_operator
pop edi
or al,al
jz expression_end
operators_loop:
cmp esp,[current_offset]
je push_operator
mov bl,al
and bl,0F0h
mov bh,byte [esp]
and bh,0F0h
cmp bl,bh
ja push_operator
pop ebx
mov byte [edi],bl
inc edi
jmp operators_loop
push_operator:
push eax
jmp expression_loop
expression_end:
cmp esp,[current_offset]
je expression_converted
pop eax
stos byte [edi]
jmp expression_end
expression_converted:
pop ebp
ret
fp_expression:
mov al,'.'
stos byte [edi]
mov eax,[fp_value]
stos dword [edi]
mov eax,[fp_value+4]
stos dword [edi]
mov eax,[fp_value+8]
stos dword [edi]
pop ebp
ret
 
convert_number:
lea eax,[edi-10h]
mov edx,[memory_end]
cmp [source_start],0
je check_memory_for_number
mov edx,[labels_list]
check_memory_for_number:
cmp eax,edx
jae out_of_memory
mov eax,esp
sub eax,100h
jc stack_overflow
cmp eax,[stack_limit]
jb stack_overflow
cmp byte [esi],'('
je expression_value
inc edi
call get_number
jc symbol_value
or ebp,ebp
jz valid_number
mov byte [edi-1],0Fh
ret
valid_number:
cmp dword [edi+4],0
jne qword_number
cmp word [edi+2],0
jne dword_number
cmp byte [edi+1],0
jne word_number
byte_number:
mov byte [edi-1],1
inc edi
ret
qword_number:
mov byte [edi-1],8
add edi,8
ret
dword_number:
mov byte [edi-1],4
scas dword [edi]
ret
word_number:
mov byte [edi-1],2
scas word [edi]
ret
expression_value:
inc esi
push [current_offset]
call convert_expression
pop [current_offset]
lods byte [esi]
cmp al,')'
jne invalid_expression
ret
symbol_value:
cmp [source_start],0
je preprocessor_value
170,19 → 170,19
mov edi,directive_operators
call get_operator
pop edi
or al,al
jnz broken_value
lods byte [esi]
cmp al,1Ah
jne invalid_value
lods byte [esi]
movzx ecx,al
call get_label_id
store_label_value:
mov byte [edi-1],11h
stos dword [edi]
ret
broken_value:
or al,al
jnz broken_value
lods byte [esi]
cmp al,1Ah
jne invalid_value
lods byte [esi]
movzx ecx,al
call get_label_id
store_label_value:
mov byte [edi-1],11h
stos dword [edi]
ret
broken_value:
mov eax,0Fh
jmp store_label_value
register_value:
190,237 → 190,237
mov byte [edi-1],10h
stos byte [edi]
ret
preprocessor_value:
dec edi
cmp [hash_tree],0
je invalid_value
lods byte [esi]
cmp al,1Ah
jne invalid_value
lods byte [esi]
mov cl,al
mov ch,10b
call get_preprocessor_symbol
jc invalid_value
push esi
mov esi,[edx+8]
push [current_offset]
call convert_expression
pop [current_offset]
pop esi
ret
 
get_number:
xor ebp,ebp
lods byte [esi]
cmp al,22h
je get_text_number
cmp al,1Ah
jne not_number
lods byte [esi]
movzx ecx,al
mov [number_start],esi
mov al,[esi]
cmp al,'$'
je number_begin
sub al,30h
cmp al,9
ja invalid_number
number_begin:
mov ebx,esi
add esi,ecx
push esi
dec esi
mov dword [edi],0
mov dword [edi+4],0
cmp byte [ebx],'$'
je pascal_hex_number
cmp word [ebx],'0x'
je get_hex_number
mov al,[esi]
dec esi
cmp al,'h'
je get_hex_number
cmp al,'b'
je get_bin_number
cmp al,'d'
je get_dec_number
cmp al,'o'
je get_oct_number
cmp al,'H'
je get_hex_number
cmp al,'B'
je get_bin_number
cmp al,'D'
je get_dec_number
cmp al,'O'
je get_oct_number
inc esi
get_dec_number:
mov ebx,esi
mov esi,[number_start]
get_dec_digit:
cmp esi,ebx
ja number_ok
cmp byte [esi],27h
je next_dec_digit
xor edx,edx
mov eax,[edi]
shld edx,eax,2
shl eax,2
add eax,[edi]
adc edx,0
add eax,eax
adc edx,edx
mov [edi],eax
mov eax,[edi+4]
add eax,eax
jc dec_out_of_range
add eax,eax
jc dec_out_of_range
add eax,[edi+4]
jc dec_out_of_range
add eax,eax
jc dec_out_of_range
add eax,edx
jc dec_out_of_range
mov [edi+4],eax
movzx eax,byte [esi]
sub al,30h
jc bad_number
cmp al,9
ja bad_number
add [edi],eax
adc dword [edi+4],0
jc dec_out_of_range
next_dec_digit:
inc esi
jmp get_dec_digit
dec_out_of_range:
cmp esi,ebx
ja dec_out_of_range_finished
lods byte [esi]
cmp al,27h
je bad_number
sub al,30h
jc bad_number
cmp al,9
ja bad_number
jmp dec_out_of_range
dec_out_of_range_finished:
or ebp,-1
jmp number_ok
bad_number:
pop eax
invalid_number:
mov esi,[number_start]
dec esi
not_number:
dec esi
stc
ret
get_bin_number:
xor bl,bl
get_bin_digit:
cmp esi,[number_start]
jb number_ok
movzx eax,byte [esi]
cmp al,27h
je bin_digit_skip
sub al,30h
cmp al,1
ja bad_number
xor edx,edx
mov cl,bl
dec esi
cmp bl,64
je bin_out_of_range
inc bl
cmp cl,32
jae bin_digit_high
shl eax,cl
or dword [edi],eax
jmp get_bin_digit
bin_digit_high:
sub cl,32
shl eax,cl
or dword [edi+4],eax
jmp get_bin_digit
bin_out_of_range:
or al,al
jz get_bin_digit
or ebp,-1
jmp get_bin_digit
bin_digit_skip:
dec esi
jmp get_bin_digit
pascal_hex_number:
cmp cl,1
je bad_number
get_hex_number:
xor bl,bl
get_hex_digit:
cmp esi,[number_start]
jb number_ok
movzx eax,byte [esi]
cmp al,27h
je hex_digit_skip
cmp al,'x'
je hex_number_ok
cmp al,'$'
je pascal_hex_ok
sub al,30h
cmp al,9
jbe hex_digit_ok
sub al,7
cmp al,15
jbe hex_letter_digit_ok
sub al,20h
cmp al,15
ja bad_number
hex_letter_digit_ok:
cmp al,10
jb bad_number
hex_digit_ok:
xor edx,edx
mov cl,bl
dec esi
cmp bl,64
je hex_out_of_range
add bl,4
cmp cl,32
jae hex_digit_high
shl eax,cl
or dword [edi],eax
jmp get_hex_digit
hex_digit_high:
sub cl,32
shl eax,cl
or dword [edi+4],eax
jmp get_hex_digit
hex_out_of_range:
or al,al
jz get_hex_digit
or ebp,-1
jmp get_hex_digit
hex_digit_skip:
dec esi
jmp get_hex_digit
get_oct_number:
xor bl,bl
get_oct_digit:
cmp esi,[number_start]
jb number_ok
movzx eax,byte [esi]
cmp al,27h
je oct_digit_skip
sub al,30h
cmp al,7
ja bad_number
oct_digit_ok:
preprocessor_value:
dec edi
cmp [hash_tree],0
je invalid_value
lods byte [esi]
cmp al,1Ah
jne invalid_value
lods byte [esi]
mov cl,al
mov ch,10b
call get_preprocessor_symbol
jc invalid_value
push esi
mov esi,[edx+8]
push [current_offset]
call convert_expression
pop [current_offset]
pop esi
ret
 
get_number:
xor ebp,ebp
lods byte [esi]
cmp al,22h
je get_text_number
cmp al,1Ah
jne not_number
lods byte [esi]
movzx ecx,al
mov [number_start],esi
mov al,[esi]
cmp al,'$'
je number_begin
sub al,30h
cmp al,9
ja invalid_number
number_begin:
mov ebx,esi
add esi,ecx
push esi
dec esi
mov dword [edi],0
mov dword [edi+4],0
cmp byte [ebx],'$'
je pascal_hex_number
cmp word [ebx],'0x'
je get_hex_number
mov al,[esi]
dec esi
cmp al,'h'
je get_hex_number
cmp al,'b'
je get_bin_number
cmp al,'d'
je get_dec_number
cmp al,'o'
je get_oct_number
cmp al,'H'
je get_hex_number
cmp al,'B'
je get_bin_number
cmp al,'D'
je get_dec_number
cmp al,'O'
je get_oct_number
inc esi
get_dec_number:
mov ebx,esi
mov esi,[number_start]
get_dec_digit:
cmp esi,ebx
ja number_ok
cmp byte [esi],27h
je next_dec_digit
xor edx,edx
mov eax,[edi]
shld edx,eax,2
shl eax,2
add eax,[edi]
adc edx,0
add eax,eax
adc edx,edx
mov [edi],eax
mov eax,[edi+4]
add eax,eax
jc dec_out_of_range
add eax,eax
jc dec_out_of_range
add eax,[edi+4]
jc dec_out_of_range
add eax,eax
jc dec_out_of_range
add eax,edx
jc dec_out_of_range
mov [edi+4],eax
movzx eax,byte [esi]
sub al,30h
jc bad_number
cmp al,9
ja bad_number
add [edi],eax
adc dword [edi+4],0
jc dec_out_of_range
next_dec_digit:
inc esi
jmp get_dec_digit
dec_out_of_range:
cmp esi,ebx
ja dec_out_of_range_finished
lods byte [esi]
cmp al,27h
je bad_number
sub al,30h
jc bad_number
cmp al,9
ja bad_number
jmp dec_out_of_range
dec_out_of_range_finished:
or ebp,-1
jmp number_ok
bad_number:
pop eax
invalid_number:
mov esi,[number_start]
dec esi
not_number:
dec esi
stc
ret
get_bin_number:
xor bl,bl
get_bin_digit:
cmp esi,[number_start]
jb number_ok
movzx eax,byte [esi]
cmp al,27h
je bin_digit_skip
sub al,30h
cmp al,1
ja bad_number
xor edx,edx
mov cl,bl
dec esi
cmp bl,64
je bin_out_of_range
inc bl
cmp cl,32
jae bin_digit_high
shl eax,cl
or dword [edi],eax
jmp get_bin_digit
bin_digit_high:
sub cl,32
shl eax,cl
or dword [edi+4],eax
jmp get_bin_digit
bin_out_of_range:
or al,al
jz get_bin_digit
or ebp,-1
jmp get_bin_digit
bin_digit_skip:
dec esi
jmp get_bin_digit
pascal_hex_number:
cmp cl,1
je bad_number
get_hex_number:
xor bl,bl
get_hex_digit:
cmp esi,[number_start]
jb number_ok
movzx eax,byte [esi]
cmp al,27h
je hex_digit_skip
cmp al,'x'
je hex_number_ok
cmp al,'$'
je pascal_hex_ok
sub al,30h
cmp al,9
jbe hex_digit_ok
sub al,7
cmp al,15
jbe hex_letter_digit_ok
sub al,20h
cmp al,15
ja bad_number
hex_letter_digit_ok:
cmp al,10
jb bad_number
hex_digit_ok:
xor edx,edx
mov cl,bl
dec esi
cmp bl,64
je hex_out_of_range
add bl,4
cmp cl,32
jae hex_digit_high
shl eax,cl
or dword [edi],eax
jmp get_hex_digit
hex_digit_high:
sub cl,32
shl eax,cl
or dword [edi+4],eax
jmp get_hex_digit
hex_out_of_range:
or al,al
jz get_hex_digit
or ebp,-1
jmp get_hex_digit
hex_digit_skip:
dec esi
jmp get_hex_digit
get_oct_number:
xor bl,bl
get_oct_digit:
cmp esi,[number_start]
jb number_ok
movzx eax,byte [esi]
cmp al,27h
je oct_digit_skip
sub al,30h
cmp al,7
ja bad_number
oct_digit_ok:
xor edx,edx
mov cl,bl
dec esi
cmp bl,63
ja oct_out_of_range
jne oct_range_ok
430,837 → 430,837
add bl,3
cmp cl,30
je oct_digit_wrap
ja oct_digit_high
shl eax,cl
or dword [edi],eax
jmp get_oct_digit
oct_digit_wrap:
shl eax,cl
adc dword [edi+4],0
or dword [edi],eax
jmp get_oct_digit
oct_digit_high:
sub cl,32
shl eax,cl
or dword [edi+4],eax
jmp get_oct_digit
oct_digit_skip:
dec esi
jmp get_oct_digit
oct_out_of_range:
or al,al
jz get_oct_digit
or ebp,-1
jmp get_oct_digit
hex_number_ok:
dec esi
pascal_hex_ok:
cmp esi,[number_start]
jne bad_number
number_ok:
pop esi
number_done:
clc
ret
get_text_number:
lods dword [esi]
mov edx,eax
xor bl,bl
mov dword [edi],0
mov dword [edi+4],0
get_text_character:
sub edx,1
jc number_done
movzx eax,byte [esi]
inc esi
mov cl,bl
cmp bl,64
je text_out_of_range
add bl,8
cmp cl,32
jae text_character_high
shl eax,cl
or dword [edi],eax
jmp get_text_character
text_character_high:
sub cl,32
shl eax,cl
or dword [edi+4],eax
jmp get_text_character
text_out_of_range:
or ebp,-1
jmp get_text_character
 
get_fp_value:
push edi esi
lods byte [esi]
cmp al,1Ah
je fp_value_start
cmp al,'-'
je fp_sign_ok
cmp al,'+'
jne not_fp_value
fp_sign_ok:
lods byte [esi]
cmp al,1Ah
jne not_fp_value
fp_value_start:
lods byte [esi]
movzx ecx,al
cmp cl,1
jbe not_fp_value
lea edx,[esi+1]
xor ah,ah
check_fp_value:
lods byte [esi]
cmp al,'.'
je fp_character_dot
cmp al,'E'
je fp_character_exp
cmp al,'e'
je fp_character_exp
cmp al,'F'
je fp_last_character
cmp al,'f'
je fp_last_character
digit_expected:
cmp al,'0'
jb not_fp_value
cmp al,'9'
ja not_fp_value
jmp fp_character_ok
fp_character_dot:
cmp esi,edx
je not_fp_value
or ah,ah
jnz not_fp_value
or ah,1
lods byte [esi]
loop digit_expected
not_fp_value:
pop esi edi
stc
ret
fp_last_character:
cmp cl,1
jne not_fp_value
or ah,4
jmp fp_character_ok
fp_character_exp:
cmp esi,edx
je not_fp_value
cmp ah,1
ja not_fp_value
or ah,2
cmp ecx,1
jne fp_character_ok
cmp byte [esi],'+'
je fp_exp_sign
cmp byte [esi],'-'
jne fp_character_ok
fp_exp_sign:
inc esi
cmp byte [esi],1Ah
jne not_fp_value
inc esi
lods byte [esi]
movzx ecx,al
inc ecx
fp_character_ok:
dec ecx
jnz check_fp_value
or ah,ah
jz not_fp_value
pop esi
lods byte [esi]
mov [fp_sign],0
cmp al,1Ah
je fp_get
inc esi
cmp al,'+'
je fp_get
mov [fp_sign],1
fp_get:
lods byte [esi]
movzx ecx,al
xor edx,edx
mov edi,fp_value
mov [edi],edx
mov [edi+4],edx
mov [edi+12],edx
call fp_optimize
mov [fp_format],0
mov al,[esi]
fp_before_dot:
lods byte [esi]
cmp al,'.'
je fp_dot
cmp al,'E'
je fp_exponent
cmp al,'e'
je fp_exponent
cmp al,'F'
je fp_done
cmp al,'f'
je fp_done
sub al,30h
mov edi,fp_value+16
xor edx,edx
mov dword [edi+12],edx
mov dword [edi],edx
mov dword [edi+4],edx
mov [edi+7],al
mov dl,7
mov dword [edi+8],edx
call fp_optimize
mov edi,fp_value
push ecx
mov ecx,10
call fp_mul
pop ecx
mov ebx,fp_value+16
call fp_add
loop fp_before_dot
fp_dot:
mov edi,fp_value+16
xor edx,edx
mov [edi],edx
mov [edi+4],edx
mov byte [edi+7],80h
mov [edi+8],edx
mov dword [edi+12],edx
dec ecx
jz fp_done
fp_after_dot:
lods byte [esi]
cmp al,'E'
je fp_exponent
cmp al,'e'
je fp_exponent
cmp al,'F'
je fp_done
cmp al,'f'
je fp_done
inc [fp_format]
cmp [fp_format],80h
jne fp_counter_ok
mov [fp_format],7Fh
fp_counter_ok:
dec esi
mov edi,fp_value+16
push ecx
mov ecx,10
call fp_div
push dword [edi]
push dword [edi+4]
push dword [edi+8]
push dword [edi+12]
lods byte [esi]
sub al,30h
movzx ecx,al
call fp_mul
mov ebx,edi
mov edi,fp_value
call fp_add
mov edi,fp_value+16
pop dword [edi+12]
pop dword [edi+8]
pop dword [edi+4]
pop dword [edi]
pop ecx
dec ecx
jnz fp_after_dot
jmp fp_done
fp_exponent:
or [fp_format],80h
xor edx,edx
xor ebp,ebp
dec ecx
jnz get_exponent
cmp byte [esi],'+'
je fp_exponent_sign
cmp byte [esi],'-'
jne fp_done
not ebp
fp_exponent_sign:
add esi,2
lods byte [esi]
movzx ecx,al
get_exponent:
movzx eax,byte [esi]
inc esi
sub al,30h
cmp al,10
jae exponent_ok
imul edx,10
cmp edx,8000h
jae value_out_of_range
add edx,eax
loop get_exponent
exponent_ok:
mov edi,fp_value
or edx,edx
jz fp_done
mov ecx,edx
or ebp,ebp
jnz fp_negative_power
fp_power:
push ecx
mov ecx,10
call fp_mul
pop ecx
loop fp_power
jmp fp_done
fp_negative_power:
push ecx
mov ecx,10
call fp_div
pop ecx
loop fp_negative_power
fp_done:
mov edi,fp_value
mov al,[fp_format]
mov [edi+10],al
mov al,[fp_sign]
mov [edi+11],al
test byte [edi+15],80h
jz fp_ok
add dword [edi],1
adc dword [edi+4],0
jnc fp_ok
mov eax,[edi+4]
shrd [edi],eax,1
shr eax,1
or eax,80000000h
mov [edi+4],eax
inc word [edi+8]
fp_ok:
pop edi
clc
ret
fp_mul:
or ecx,ecx
jz fp_zero
mov eax,[edi+12]
mul ecx
mov [edi+12],eax
mov ebx,edx
mov eax,[edi]
mul ecx
add eax,ebx
adc edx,0
mov [edi],eax
mov ebx,edx
mov eax,[edi+4]
mul ecx
add eax,ebx
adc edx,0
mov [edi+4],eax
.loop:
or edx,edx
jz .done
mov eax,[edi]
shrd [edi+12],eax,1
mov eax,[edi+4]
shrd [edi],eax,1
shrd eax,edx,1
mov [edi+4],eax
shr edx,1
inc dword [edi+8]
cmp dword [edi+8],8000h
jge value_out_of_range
jmp .loop
.done:
ret
fp_div:
mov eax,[edi+4]
xor edx,edx
div ecx
mov [edi+4],eax
mov eax,[edi]
div ecx
mov [edi],eax
mov eax,[edi+12]
div ecx
mov [edi+12],eax
mov ebx,eax
or ebx,[edi]
or ebx,[edi+4]
jz fp_zero
.loop:
test byte [edi+7],80h
jnz .exp_ok
mov eax,[edi]
shld [edi+4],eax,1
mov eax,[edi+12]
shld [edi],eax,1
add eax,eax
mov [edi+12],eax
dec dword [edi+8]
add edx,edx
jmp .loop
.exp_ok:
mov eax,edx
xor edx,edx
div ecx
add [edi+12],eax
adc dword [edi],0
adc dword [edi+4],0
jnc .done
mov eax,[edi+4]
mov ebx,[edi]
shrd [edi],eax,1
shrd [edi+12],ebx,1
shr eax,1
or eax,80000000h
mov [edi+4],eax
inc dword [edi+8]
.done:
ret
fp_add:
cmp dword [ebx+8],8000h
je .done
cmp dword [edi+8],8000h
je .copy
mov eax,[ebx+8]
cmp eax,[edi+8]
jge .exp_ok
mov eax,[edi+8]
.exp_ok:
call .change_exp
xchg ebx,edi
call .change_exp
xchg ebx,edi
mov edx,[ebx+12]
mov eax,[ebx]
mov ebx,[ebx+4]
add [edi+12],edx
adc [edi],eax
adc [edi+4],ebx
jnc .done
mov eax,[edi]
shrd [edi+12],eax,1
mov eax,[edi+4]
shrd [edi],eax,1
shr eax,1
or eax,80000000h
mov [edi+4],eax
inc dword [edi+8]
.done:
ret
.copy:
mov eax,[ebx]
mov [edi],eax
mov eax,[ebx+4]
mov [edi+4],eax
mov eax,[ebx+8]
mov [edi+8],eax
mov eax,[ebx+12]
mov [edi+12],eax
ret
.change_exp:
push ecx
mov ecx,eax
sub ecx,[ebx+8]
mov edx,[ebx+4]
jecxz .exp_done
.exp_loop:
mov ebp,[ebx]
shrd [ebx+12],ebp,1
shrd [ebx],edx,1
shr edx,1
inc dword [ebx+8]
loop .exp_loop
.exp_done:
mov [ebx+4],edx
pop ecx
ret
fp_optimize:
mov eax,[edi]
mov ebp,[edi+4]
or ebp,[edi]
or ebp,[edi+12]
jz fp_zero
.loop:
test byte [edi+7],80h
jnz .done
shld [edi+4],eax,1
mov ebp,[edi+12]
shld eax,ebp,1
mov [edi],eax
shl dword [edi+12],1
dec dword [edi+8]
jmp .loop
.done:
ret
fp_zero:
mov dword [edi+8],8000h
ret
 
preevaluate_logical_expression:
xor al,al
preevaluate_embedded_logical_expression:
mov [logical_value_wrapping],al
push edi
call preevaluate_logical_value
preevaluation_loop:
cmp al,0FFh
je invalid_logical_expression
mov dl,[esi]
inc esi
cmp dl,'|'
je preevaluate_or
cmp dl,'&'
je preevaluate_and
cmp dl,'}'
je preevaluation_done
or dl,dl
jnz invalid_logical_expression
preevaluation_done:
pop edx
dec esi
ret
preevaluate_or:
cmp al,'1'
je quick_true
cmp al,'0'
je leave_only_following
push edi
mov al,dl
stos byte [edi]
call preevaluate_logical_value
pop ebx
cmp al,'0'
je leave_only_preceding
cmp al,'1'
jne preevaluation_loop
stos byte [edi]
xor al,al
jmp preevaluation_loop
preevaluate_and:
cmp al,'0'
je quick_false
cmp al,'1'
je leave_only_following
push edi
mov al,dl
stos byte [edi]
call preevaluate_logical_value
pop ebx
cmp al,'1'
je leave_only_preceding
cmp al,'0'
jne preevaluation_loop
stos byte [edi]
xor al,al
jmp preevaluation_loop
leave_only_following:
mov edi,[esp]
call preevaluate_logical_value
jmp preevaluation_loop
leave_only_preceding:
mov edi,ebx
xor al,al
jmp preevaluation_loop
quick_true:
call skip_logical_value
jc invalid_logical_expression
mov edi,[esp]
mov al,'1'
jmp preevaluation_loop
quick_false:
call skip_logical_value
jc invalid_logical_expression
mov edi,[esp]
mov al,'0'
jmp preevaluation_loop
invalid_logical_expression:
pop edi
mov esi,edi
mov al,0FFh
stos byte [edi]
ret
skip_logical_value:
cmp byte [esi],'~'
jne negation_skipped
inc esi
jmp skip_logical_value
negation_skipped:
mov al,[esi]
cmp al,'{'
jne skip_simple_logical_value
inc esi
xchg al,[logical_value_wrapping]
push eax
skip_logical_expression:
call skip_logical_value
lods byte [esi]
or al,al
jz wrongly_structured_logical_expression
cmp al,0Fh
je wrongly_structured_logical_expression
cmp al,'|'
je skip_logical_expression
cmp al,'&'
je skip_logical_expression
cmp al,'}'
jne wrongly_structured_logical_expression
pop eax
mov [logical_value_wrapping],al
logical_value_skipped:
clc
ret
wrongly_structured_logical_expression:
pop eax
stc
ret
skip_simple_logical_value:
mov [logical_value_parentheses],0
find_simple_logical_value_end:
mov al,[esi]
or al,al
jz logical_value_skipped
cmp al,0Fh
je logical_value_skipped
cmp al,'|'
je logical_value_skipped
cmp al,'&'
je logical_value_skipped
cmp al,'{'
je skip_logical_value_internal_parenthesis
cmp al,'}'
jne skip_logical_value_symbol
sub [logical_value_parentheses],1
jnc skip_logical_value_symbol
cmp [logical_value_wrapping],'{'
jne skip_logical_value_symbol
jmp logical_value_skipped
skip_logical_value_internal_parenthesis:
inc [logical_value_parentheses]
skip_logical_value_symbol:
call skip_symbol
jmp find_simple_logical_value_end
preevaluate_logical_value:
mov ebp,edi
preevaluate_negation:
cmp byte [esi],'~'
jne preevaluate_negation_ok
movs byte [edi],[esi]
jmp preevaluate_negation
preevaluate_negation_ok:
mov ebx,esi
cmp byte [esi],'{'
jne preevaluate_simple_logical_value
lods byte [esi]
stos byte [edi]
push ebp
mov dl,[logical_value_wrapping]
push edx
call preevaluate_embedded_logical_expression
pop edx
mov [logical_value_wrapping],dl
pop ebp
cmp al,0FFh
je invalid_logical_value
cmp byte [esi],'}'
jne invalid_logical_value
or al,al
jnz preevaluated_expression_value
movs byte [edi],[esi]
ret
preevaluated_expression_value:
inc esi
lea edx,[edi-1]
sub edx,ebp
test edx,1
jz expression_negation_ok
xor al,1
expression_negation_ok:
mov edi,ebp
ret
invalid_logical_value:
mov edi,ebp
mov al,0FFh
ret
preevaluate_simple_logical_value:
xor edx,edx
mov [logical_value_parentheses],edx
find_logical_value_boundaries:
mov al,[esi]
or al,al
jz logical_value_boundaries_found
cmp al,'{'
je logical_value_internal_parentheses
cmp al,'}'
je logical_value_boundaries_parenthesis_close
cmp al,'|'
je logical_value_boundaries_found
cmp al,'&'
je logical_value_boundaries_found
or edx,edx
jnz next_symbol_in_logical_value
cmp al,0F0h
je preevaluable_logical_operator
cmp al,0F7h
je preevaluable_logical_operator
cmp al,0F6h
jne next_symbol_in_logical_value
preevaluable_logical_operator:
mov edx,esi
next_symbol_in_logical_value:
call skip_symbol
jmp find_logical_value_boundaries
logical_value_internal_parentheses:
inc [logical_value_parentheses]
jmp next_symbol_in_logical_value
logical_value_boundaries_parenthesis_close:
sub [logical_value_parentheses],1
jnc next_symbol_in_logical_value
cmp [logical_value_wrapping],'{'
jne next_symbol_in_logical_value
logical_value_boundaries_found:
or edx,edx
jz non_preevaluable_logical_value
mov al,[edx]
cmp al,0F0h
je compare_symbols
cmp al,0F7h
je compare_symbol_types
cmp al,0F6h
je scan_symbols_list
non_preevaluable_logical_value:
mov ecx,esi
mov esi,ebx
sub ecx,esi
jz invalid_logical_value
cmp esi,edi
je leave_logical_value_intact
rep movs byte [edi],[esi]
xor al,al
ret
leave_logical_value_intact:
add edi,ecx
add esi,ecx
xor al,al
ret
compare_symbols:
lea ecx,[esi-1]
sub ecx,edx
mov eax,edx
sub eax,ebx
cmp ecx,eax
jne preevaluated_false
push esi edi
mov esi,ebx
lea edi,[edx+1]
repe cmps byte [esi],[edi]
pop edi esi
je preevaluated_true
preevaluated_false:
mov eax,edi
sub eax,ebp
test eax,1
jnz store_true
store_false:
mov edi,ebp
mov al,'0'
ret
preevaluated_true:
mov eax,edi
sub eax,ebp
test eax,1
jnz store_false
store_true:
mov edi,ebp
mov al,'1'
ret
compare_symbol_types:
push esi
lea esi,[edx+1]
type_comparison:
cmp esi,[esp]
je types_compared
mov al,[esi]
cmp al,[ebx]
jne different_type
cmp al,'('
jne equal_type
mov al,[esi+1]
mov ah,[ebx+1]
cmp al,ah
je equal_type
or al,al
jz different_type
or ah,ah
jz different_type
cmp al,'.'
je different_type
cmp ah,'.'
je different_type
equal_type:
call skip_symbol
xchg esi,ebx
call skip_symbol
xchg esi,ebx
jmp type_comparison
types_compared:
pop esi
cmp byte [ebx],0F7h
jne preevaluated_false
jmp preevaluated_true
different_type:
pop esi
jmp preevaluated_false
scan_symbols_list:
push edi esi
lea esi,[edx+1]
sub edx,ebx
lods byte [esi]
cmp al,'<'
jne invalid_symbols_list
get_next_from_list:
mov edi,esi
get_from_list:
cmp byte [esi],','
je compare_in_list
cmp byte [esi],'>'
je compare_in_list
cmp esi,[esp]
jae invalid_symbols_list
call skip_symbol
jmp get_from_list
compare_in_list:
mov ecx,esi
sub ecx,edi
cmp ecx,edx
jne not_equal_length_in_list
mov esi,ebx
repe cmps byte [esi],[edi]
mov esi,edi
jne not_equal_in_list
skip_rest_of_list:
cmp byte [esi],'>'
je check_list_end
cmp esi,[esp]
jae invalid_symbols_list
call skip_symbol
jmp skip_rest_of_list
check_list_end:
inc esi
cmp esi,[esp]
jne invalid_symbols_list
pop esi edi
jmp preevaluated_true
not_equal_in_list:
add esi,ecx
not_equal_length_in_list:
lods byte [esi]
cmp al,','
je get_next_from_list
cmp esi,[esp]
jne invalid_symbols_list
pop esi edi
jmp preevaluated_false
invalid_symbols_list:
pop esi edi
jmp invalid_logical_value
ja oct_digit_high
shl eax,cl
or dword [edi],eax
jmp get_oct_digit
oct_digit_wrap:
shl eax,cl
adc dword [edi+4],0
or dword [edi],eax
jmp get_oct_digit
oct_digit_high:
sub cl,32
shl eax,cl
or dword [edi+4],eax
jmp get_oct_digit
oct_digit_skip:
dec esi
jmp get_oct_digit
oct_out_of_range:
or al,al
jz get_oct_digit
or ebp,-1
jmp get_oct_digit
hex_number_ok:
dec esi
pascal_hex_ok:
cmp esi,[number_start]
jne bad_number
number_ok:
pop esi
number_done:
clc
ret
get_text_number:
lods dword [esi]
mov edx,eax
xor bl,bl
mov dword [edi],0
mov dword [edi+4],0
get_text_character:
sub edx,1
jc number_done
movzx eax,byte [esi]
inc esi
mov cl,bl
cmp bl,64
je text_out_of_range
add bl,8
cmp cl,32
jae text_character_high
shl eax,cl
or dword [edi],eax
jmp get_text_character
text_character_high:
sub cl,32
shl eax,cl
or dword [edi+4],eax
jmp get_text_character
text_out_of_range:
or ebp,-1
jmp get_text_character
 
get_fp_value:
push edi esi
lods byte [esi]
cmp al,1Ah
je fp_value_start
cmp al,'-'
je fp_sign_ok
cmp al,'+'
jne not_fp_value
fp_sign_ok:
lods byte [esi]
cmp al,1Ah
jne not_fp_value
fp_value_start:
lods byte [esi]
movzx ecx,al
cmp cl,1
jbe not_fp_value
lea edx,[esi+1]
xor ah,ah
check_fp_value:
lods byte [esi]
cmp al,'.'
je fp_character_dot
cmp al,'E'
je fp_character_exp
cmp al,'e'
je fp_character_exp
cmp al,'F'
je fp_last_character
cmp al,'f'
je fp_last_character
digit_expected:
cmp al,'0'
jb not_fp_value
cmp al,'9'
ja not_fp_value
jmp fp_character_ok
fp_character_dot:
cmp esi,edx
je not_fp_value
or ah,ah
jnz not_fp_value
or ah,1
lods byte [esi]
loop digit_expected
not_fp_value:
pop esi edi
stc
ret
fp_last_character:
cmp cl,1
jne not_fp_value
or ah,4
jmp fp_character_ok
fp_character_exp:
cmp esi,edx
je not_fp_value
cmp ah,1
ja not_fp_value
or ah,2
cmp ecx,1
jne fp_character_ok
cmp byte [esi],'+'
je fp_exp_sign
cmp byte [esi],'-'
jne fp_character_ok
fp_exp_sign:
inc esi
cmp byte [esi],1Ah
jne not_fp_value
inc esi
lods byte [esi]
movzx ecx,al
inc ecx
fp_character_ok:
dec ecx
jnz check_fp_value
or ah,ah
jz not_fp_value
pop esi
lods byte [esi]
mov [fp_sign],0
cmp al,1Ah
je fp_get
inc esi
cmp al,'+'
je fp_get
mov [fp_sign],1
fp_get:
lods byte [esi]
movzx ecx,al
xor edx,edx
mov edi,fp_value
mov [edi],edx
mov [edi+4],edx
mov [edi+12],edx
call fp_optimize
mov [fp_format],0
mov al,[esi]
fp_before_dot:
lods byte [esi]
cmp al,'.'
je fp_dot
cmp al,'E'
je fp_exponent
cmp al,'e'
je fp_exponent
cmp al,'F'
je fp_done
cmp al,'f'
je fp_done
sub al,30h
mov edi,fp_value+16
xor edx,edx
mov dword [edi+12],edx
mov dword [edi],edx
mov dword [edi+4],edx
mov [edi+7],al
mov dl,7
mov dword [edi+8],edx
call fp_optimize
mov edi,fp_value
push ecx
mov ecx,10
call fp_mul
pop ecx
mov ebx,fp_value+16
call fp_add
loop fp_before_dot
fp_dot:
mov edi,fp_value+16
xor edx,edx
mov [edi],edx
mov [edi+4],edx
mov byte [edi+7],80h
mov [edi+8],edx
mov dword [edi+12],edx
dec ecx
jz fp_done
fp_after_dot:
lods byte [esi]
cmp al,'E'
je fp_exponent
cmp al,'e'
je fp_exponent
cmp al,'F'
je fp_done
cmp al,'f'
je fp_done
inc [fp_format]
cmp [fp_format],80h
jne fp_counter_ok
mov [fp_format],7Fh
fp_counter_ok:
dec esi
mov edi,fp_value+16
push ecx
mov ecx,10
call fp_div
push dword [edi]
push dword [edi+4]
push dword [edi+8]
push dword [edi+12]
lods byte [esi]
sub al,30h
movzx ecx,al
call fp_mul
mov ebx,edi
mov edi,fp_value
call fp_add
mov edi,fp_value+16
pop dword [edi+12]
pop dword [edi+8]
pop dword [edi+4]
pop dword [edi]
pop ecx
dec ecx
jnz fp_after_dot
jmp fp_done
fp_exponent:
or [fp_format],80h
xor edx,edx
xor ebp,ebp
dec ecx
jnz get_exponent
cmp byte [esi],'+'
je fp_exponent_sign
cmp byte [esi],'-'
jne fp_done
not ebp
fp_exponent_sign:
add esi,2
lods byte [esi]
movzx ecx,al
get_exponent:
movzx eax,byte [esi]
inc esi
sub al,30h
cmp al,10
jae exponent_ok
imul edx,10
cmp edx,8000h
jae value_out_of_range
add edx,eax
loop get_exponent
exponent_ok:
mov edi,fp_value
or edx,edx
jz fp_done
mov ecx,edx
or ebp,ebp
jnz fp_negative_power
fp_power:
push ecx
mov ecx,10
call fp_mul
pop ecx
loop fp_power
jmp fp_done
fp_negative_power:
push ecx
mov ecx,10
call fp_div
pop ecx
loop fp_negative_power
fp_done:
mov edi,fp_value
mov al,[fp_format]
mov [edi+10],al
mov al,[fp_sign]
mov [edi+11],al
test byte [edi+15],80h
jz fp_ok
add dword [edi],1
adc dword [edi+4],0
jnc fp_ok
mov eax,[edi+4]
shrd [edi],eax,1
shr eax,1
or eax,80000000h
mov [edi+4],eax
inc word [edi+8]
fp_ok:
pop edi
clc
ret
fp_mul:
or ecx,ecx
jz fp_zero
mov eax,[edi+12]
mul ecx
mov [edi+12],eax
mov ebx,edx
mov eax,[edi]
mul ecx
add eax,ebx
adc edx,0
mov [edi],eax
mov ebx,edx
mov eax,[edi+4]
mul ecx
add eax,ebx
adc edx,0
mov [edi+4],eax
.loop:
or edx,edx
jz .done
mov eax,[edi]
shrd [edi+12],eax,1
mov eax,[edi+4]
shrd [edi],eax,1
shrd eax,edx,1
mov [edi+4],eax
shr edx,1
inc dword [edi+8]
cmp dword [edi+8],8000h
jge value_out_of_range
jmp .loop
.done:
ret
fp_div:
mov eax,[edi+4]
xor edx,edx
div ecx
mov [edi+4],eax
mov eax,[edi]
div ecx
mov [edi],eax
mov eax,[edi+12]
div ecx
mov [edi+12],eax
mov ebx,eax
or ebx,[edi]
or ebx,[edi+4]
jz fp_zero
.loop:
test byte [edi+7],80h
jnz .exp_ok
mov eax,[edi]
shld [edi+4],eax,1
mov eax,[edi+12]
shld [edi],eax,1
add eax,eax
mov [edi+12],eax
dec dword [edi+8]
add edx,edx
jmp .loop
.exp_ok:
mov eax,edx
xor edx,edx
div ecx
add [edi+12],eax
adc dword [edi],0
adc dword [edi+4],0
jnc .done
mov eax,[edi+4]
mov ebx,[edi]
shrd [edi],eax,1
shrd [edi+12],ebx,1
shr eax,1
or eax,80000000h
mov [edi+4],eax
inc dword [edi+8]
.done:
ret
fp_add:
cmp dword [ebx+8],8000h
je .done
cmp dword [edi+8],8000h
je .copy
mov eax,[ebx+8]
cmp eax,[edi+8]
jge .exp_ok
mov eax,[edi+8]
.exp_ok:
call .change_exp
xchg ebx,edi
call .change_exp
xchg ebx,edi
mov edx,[ebx+12]
mov eax,[ebx]
mov ebx,[ebx+4]
add [edi+12],edx
adc [edi],eax
adc [edi+4],ebx
jnc .done
mov eax,[edi]
shrd [edi+12],eax,1
mov eax,[edi+4]
shrd [edi],eax,1
shr eax,1
or eax,80000000h
mov [edi+4],eax
inc dword [edi+8]
.done:
ret
.copy:
mov eax,[ebx]
mov [edi],eax
mov eax,[ebx+4]
mov [edi+4],eax
mov eax,[ebx+8]
mov [edi+8],eax
mov eax,[ebx+12]
mov [edi+12],eax
ret
.change_exp:
push ecx
mov ecx,eax
sub ecx,[ebx+8]
mov edx,[ebx+4]
jecxz .exp_done
.exp_loop:
mov ebp,[ebx]
shrd [ebx+12],ebp,1
shrd [ebx],edx,1
shr edx,1
inc dword [ebx+8]
loop .exp_loop
.exp_done:
mov [ebx+4],edx
pop ecx
ret
fp_optimize:
mov eax,[edi]
mov ebp,[edi+4]
or ebp,[edi]
or ebp,[edi+12]
jz fp_zero
.loop:
test byte [edi+7],80h
jnz .done
shld [edi+4],eax,1
mov ebp,[edi+12]
shld eax,ebp,1
mov [edi],eax
shl dword [edi+12],1
dec dword [edi+8]
jmp .loop
.done:
ret
fp_zero:
mov dword [edi+8],8000h
ret
 
preevaluate_logical_expression:
xor al,al
preevaluate_embedded_logical_expression:
mov [logical_value_wrapping],al
push edi
call preevaluate_logical_value
preevaluation_loop:
cmp al,0FFh
je invalid_logical_expression
mov dl,[esi]
inc esi
cmp dl,'|'
je preevaluate_or
cmp dl,'&'
je preevaluate_and
cmp dl,'}'
je preevaluation_done
or dl,dl
jnz invalid_logical_expression
preevaluation_done:
pop edx
dec esi
ret
preevaluate_or:
cmp al,'1'
je quick_true
cmp al,'0'
je leave_only_following
push edi
mov al,dl
stos byte [edi]
call preevaluate_logical_value
pop ebx
cmp al,'0'
je leave_only_preceding
cmp al,'1'
jne preevaluation_loop
stos byte [edi]
xor al,al
jmp preevaluation_loop
preevaluate_and:
cmp al,'0'
je quick_false
cmp al,'1'
je leave_only_following
push edi
mov al,dl
stos byte [edi]
call preevaluate_logical_value
pop ebx
cmp al,'1'
je leave_only_preceding
cmp al,'0'
jne preevaluation_loop
stos byte [edi]
xor al,al
jmp preevaluation_loop
leave_only_following:
mov edi,[esp]
call preevaluate_logical_value
jmp preevaluation_loop
leave_only_preceding:
mov edi,ebx
xor al,al
jmp preevaluation_loop
quick_true:
call skip_logical_value
jc invalid_logical_expression
mov edi,[esp]
mov al,'1'
jmp preevaluation_loop
quick_false:
call skip_logical_value
jc invalid_logical_expression
mov edi,[esp]
mov al,'0'
jmp preevaluation_loop
invalid_logical_expression:
pop edi
mov esi,edi
mov al,0FFh
stos byte [edi]
ret
skip_logical_value:
cmp byte [esi],'~'
jne negation_skipped
inc esi
jmp skip_logical_value
negation_skipped:
mov al,[esi]
cmp al,'{'
jne skip_simple_logical_value
inc esi
xchg al,[logical_value_wrapping]
push eax
skip_logical_expression:
call skip_logical_value
lods byte [esi]
or al,al
jz wrongly_structured_logical_expression
cmp al,0Fh
je wrongly_structured_logical_expression
cmp al,'|'
je skip_logical_expression
cmp al,'&'
je skip_logical_expression
cmp al,'}'
jne wrongly_structured_logical_expression
pop eax
mov [logical_value_wrapping],al
logical_value_skipped:
clc
ret
wrongly_structured_logical_expression:
pop eax
stc
ret
skip_simple_logical_value:
mov [logical_value_parentheses],0
find_simple_logical_value_end:
mov al,[esi]
or al,al
jz logical_value_skipped
cmp al,0Fh
je logical_value_skipped
cmp al,'|'
je logical_value_skipped
cmp al,'&'
je logical_value_skipped
cmp al,'{'
je skip_logical_value_internal_parenthesis
cmp al,'}'
jne skip_logical_value_symbol
sub [logical_value_parentheses],1
jnc skip_logical_value_symbol
cmp [logical_value_wrapping],'{'
jne skip_logical_value_symbol
jmp logical_value_skipped
skip_logical_value_internal_parenthesis:
inc [logical_value_parentheses]
skip_logical_value_symbol:
call skip_symbol
jmp find_simple_logical_value_end
preevaluate_logical_value:
mov ebp,edi
preevaluate_negation:
cmp byte [esi],'~'
jne preevaluate_negation_ok
movs byte [edi],[esi]
jmp preevaluate_negation
preevaluate_negation_ok:
mov ebx,esi
cmp byte [esi],'{'
jne preevaluate_simple_logical_value
lods byte [esi]
stos byte [edi]
push ebp
mov dl,[logical_value_wrapping]
push edx
call preevaluate_embedded_logical_expression
pop edx
mov [logical_value_wrapping],dl
pop ebp
cmp al,0FFh
je invalid_logical_value
cmp byte [esi],'}'
jne invalid_logical_value
or al,al
jnz preevaluated_expression_value
movs byte [edi],[esi]
ret
preevaluated_expression_value:
inc esi
lea edx,[edi-1]
sub edx,ebp
test edx,1
jz expression_negation_ok
xor al,1
expression_negation_ok:
mov edi,ebp
ret
invalid_logical_value:
mov edi,ebp
mov al,0FFh
ret
preevaluate_simple_logical_value:
xor edx,edx
mov [logical_value_parentheses],edx
find_logical_value_boundaries:
mov al,[esi]
or al,al
jz logical_value_boundaries_found
cmp al,'{'
je logical_value_internal_parentheses
cmp al,'}'
je logical_value_boundaries_parenthesis_close
cmp al,'|'
je logical_value_boundaries_found
cmp al,'&'
je logical_value_boundaries_found
or edx,edx
jnz next_symbol_in_logical_value
cmp al,0F0h
je preevaluable_logical_operator
cmp al,0F7h
je preevaluable_logical_operator
cmp al,0F6h
jne next_symbol_in_logical_value
preevaluable_logical_operator:
mov edx,esi
next_symbol_in_logical_value:
call skip_symbol
jmp find_logical_value_boundaries
logical_value_internal_parentheses:
inc [logical_value_parentheses]
jmp next_symbol_in_logical_value
logical_value_boundaries_parenthesis_close:
sub [logical_value_parentheses],1
jnc next_symbol_in_logical_value
cmp [logical_value_wrapping],'{'
jne next_symbol_in_logical_value
logical_value_boundaries_found:
or edx,edx
jz non_preevaluable_logical_value
mov al,[edx]
cmp al,0F0h
je compare_symbols
cmp al,0F7h
je compare_symbol_types
cmp al,0F6h
je scan_symbols_list
non_preevaluable_logical_value:
mov ecx,esi
mov esi,ebx
sub ecx,esi
jz invalid_logical_value
cmp esi,edi
je leave_logical_value_intact
rep movs byte [edi],[esi]
xor al,al
ret
leave_logical_value_intact:
add edi,ecx
add esi,ecx
xor al,al
ret
compare_symbols:
lea ecx,[esi-1]
sub ecx,edx
mov eax,edx
sub eax,ebx
cmp ecx,eax
jne preevaluated_false
push esi edi
mov esi,ebx
lea edi,[edx+1]
repe cmps byte [esi],[edi]
pop edi esi
je preevaluated_true
preevaluated_false:
mov eax,edi
sub eax,ebp
test eax,1
jnz store_true
store_false:
mov edi,ebp
mov al,'0'
ret
preevaluated_true:
mov eax,edi
sub eax,ebp
test eax,1
jnz store_false
store_true:
mov edi,ebp
mov al,'1'
ret
compare_symbol_types:
push esi
lea esi,[edx+1]
type_comparison:
cmp esi,[esp]
je types_compared
mov al,[esi]
cmp al,[ebx]
jne different_type
cmp al,'('
jne equal_type
mov al,[esi+1]
mov ah,[ebx+1]
cmp al,ah
je equal_type
or al,al
jz different_type
or ah,ah
jz different_type
cmp al,'.'
je different_type
cmp ah,'.'
je different_type
equal_type:
call skip_symbol
xchg esi,ebx
call skip_symbol
xchg esi,ebx
jmp type_comparison
types_compared:
pop esi
cmp byte [ebx],0F7h
jne preevaluated_false
jmp preevaluated_true
different_type:
pop esi
jmp preevaluated_false
scan_symbols_list:
push edi esi
lea esi,[edx+1]
sub edx,ebx
lods byte [esi]
cmp al,'<'
jne invalid_symbols_list
get_next_from_list:
mov edi,esi
get_from_list:
cmp byte [esi],','
je compare_in_list
cmp byte [esi],'>'
je compare_in_list
cmp esi,[esp]
jae invalid_symbols_list
call skip_symbol
jmp get_from_list
compare_in_list:
mov ecx,esi
sub ecx,edi
cmp ecx,edx
jne not_equal_length_in_list
mov esi,ebx
repe cmps byte [esi],[edi]
mov esi,edi
jne not_equal_in_list
skip_rest_of_list:
cmp byte [esi],'>'
je check_list_end
cmp esi,[esp]
jae invalid_symbols_list
call skip_symbol
jmp skip_rest_of_list
check_list_end:
inc esi
cmp esi,[esp]
jne invalid_symbols_list
pop esi edi
jmp preevaluated_true
not_equal_in_list:
add esi,ecx
not_equal_length_in_list:
lods byte [esi]
cmp al,','
je get_next_from_list
cmp esi,[esp]
jne invalid_symbols_list
pop esi edi
jmp preevaluated_false
invalid_symbols_list:
pop esi edi
jmp invalid_logical_value
/programs/develop/fasm/trunk/license.txt
0,0 → 1,37
 
flat assembler version 1.70
Copyright (c) 1999-2012, Tomasz Grysztar.
All rights reserved.
 
This program is free for commercial and non-commercial use as long as
the following conditions are adhered to.
 
Copyright remains Tomasz Grysztar, and as such any Copyright notices
in the code are not to be removed.
 
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
 
1. Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
 
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
The licence and distribution terms for any publically available
version or derivative of this code cannot be changed. i.e. this code
cannot simply be copied and put under another distribution licence
(including the GNU Public Licence).
/programs/develop/fasm/trunk/messages.inc
4,24 → 4,24
; All rights reserved.
 
_out_of_memory db 'out of memory',0
_stack_overflow db 'out of stack space',0
_main_file_not_found db 'source file not found',0
_unexpected_end_of_file db 'unexpected end of file',0
_code_cannot_be_generated db 'code cannot be generated',0
_format_limitations_exceeded db 'format limitations exceeded',0
_invalid_definition db 'invalid definition provided',0
_write_failed db 'write failed',0
_file_not_found db 'file not found',0
_error_reading_file db 'error reading file',0
_invalid_file_format db 'invalid file format',0
_invalid_macro_arguments db 'invalid macro arguments',0
_incomplete_macro db 'incomplete macro',0
_unexpected_characters db 'unexpected characters',0
_invalid_argument db 'invalid argument',0
_illegal_instruction db 'illegal instruction',0
_invalid_operand db 'invalid operand',0
_invalid_operand_size db 'invalid size of operand',0
_operand_size_not_specified db 'operand size not specified',0
_stack_overflow db 'out of stack space',0
_main_file_not_found db 'source file not found',0
_unexpected_end_of_file db 'unexpected end of file',0
_code_cannot_be_generated db 'code cannot be generated',0
_format_limitations_exceeded db 'format limitations exceeded',0
_invalid_definition db 'invalid definition provided',0
_write_failed db 'write failed',0
_file_not_found db 'file not found',0
_error_reading_file db 'error reading file',0
_invalid_file_format db 'invalid file format',0
_invalid_macro_arguments db 'invalid macro arguments',0
_incomplete_macro db 'incomplete macro',0
_unexpected_characters db 'unexpected characters',0
_invalid_argument db 'invalid argument',0
_illegal_instruction db 'illegal instruction',0
_invalid_operand db 'invalid operand',0
_invalid_operand_size db 'invalid size of operand',0
_operand_size_not_specified db 'operand size not specified',0
_operand_sizes_do_not_match db 'operand sizes do not match',0
_invalid_address_size db 'invalid size of address value',0
_address_sizes_do_not_agree db 'address sizes do not agree',0
29,24 → 29,24
_long_immediate_not_encodable db 'not encodable with long immediate',0
_relative_jump_out_of_range db 'relative jump out of range',0
_invalid_expression db 'invalid expression',0
_invalid_address db 'invalid address',0
_invalid_value db 'invalid value',0
_value_out_of_range db 'value out of range',0
_undefined_symbol db 'undefined symbol',0
_symbol_out_of_scope_1 db 'symbol',0
_symbol_out_of_scope_2 db 'out of scope',0
_invalid_use_of_symbol db 'invalid use of symbol',0
_name_too_long db 'name too long',0
_invalid_name db 'invalid name',0
_reserved_word_used_as_symbol db 'reserved word used as symbol',0
_symbol_already_defined db 'symbol already defined',0
_missing_end_quote db 'missing end quote',0
_missing_end_directive db 'missing end directive',0
_unexpected_instruction db 'unexpected instruction',0
_extra_characters_on_line db 'extra characters on line',0
_section_not_aligned_enough db 'section is not aligned enough',0
_invalid_address db 'invalid address',0
_invalid_value db 'invalid value',0
_value_out_of_range db 'value out of range',0
_undefined_symbol db 'undefined symbol',0
_symbol_out_of_scope_1 db 'symbol',0
_symbol_out_of_scope_2 db 'out of scope',0
_invalid_use_of_symbol db 'invalid use of symbol',0
_name_too_long db 'name too long',0
_invalid_name db 'invalid name',0
_reserved_word_used_as_symbol db 'reserved word used as symbol',0
_symbol_already_defined db 'symbol already defined',0
_missing_end_quote db 'missing end quote',0
_missing_end_directive db 'missing end directive',0
_unexpected_instruction db 'unexpected instruction',0
_extra_characters_on_line db 'extra characters on line',0
_section_not_aligned_enough db 'section is not aligned enough',0
_setting_already_specified db 'setting already specified',0
_data_already_defined db 'data already defined',0
_too_many_repeats db 'too many repeats',0
_invoked_error db 'error directive invoked in source file',0
_invoked_error db 'error directive encountered in source file',0
_assertion_failed db 'assertion failed',0
/programs/develop/fasm/trunk/symbdump.inc
4,11 → 4,11
; All rights reserved.
 
dump_symbols:
mov edi,[code_start]
call setup_dump_header
mov esi,[input_file]
call copy_asciiz
cmp edi,[display_buffer]
mov edi,[code_start]
call setup_dump_header
mov esi,[input_file]
call copy_asciiz
cmp edi,[display_buffer]
jae out_of_memory
mov eax,edi
sub eax,ebx
23,132 → 23,132
cmp [output_format],4
je prepare_strings_table
cmp [output_format],5
jne strings_table_ready
bt [format_flags],0
jc strings_table_ready
prepare_strings_table:
cmp edx,ebp
je strings_table_ready
mov al,[edx]
test al,al
jz prepare_string
cmp al,80h
je prepare_string
add edx,0Ch
cmp al,0C0h
jb prepare_strings_table
add edx,4
jmp prepare_strings_table
prepare_string:
mov esi,edi
sub esi,ebx
xchg esi,[edx+4]
test al,al
jz prepare_section_string
or dword [edx+4],1 shl 31
add edx,0Ch
prepare_external_string:
mov ecx,[esi]
add esi,4
rep movs byte [edi],[esi]
mov byte [edi],0
inc edi
cmp edi,[display_buffer]
jae out_of_memory
jmp prepare_strings_table
prepare_section_string:
mov ecx,[number_of_sections]
mov eax,ecx
inc eax
mov [number_of_sections],eax
xchg eax,[edx+4]
shl ecx,2
add ecx,[free_additional_memory]
mov [ecx],eax
add edx,20h
test esi,esi
jz prepare_default_section_string
cmp [output_format],5
jne prepare_external_string
bt [format_flags],0
jc prepare_external_string
mov esi,[esi]
add esi,[resource_data]
copy_elf_section_name:
lods byte [esi]
cmp edi,[display_buffer]
jae out_of_memory
stos byte [edi]
test al,al
jnz copy_elf_section_name
jmp prepare_strings_table
prepare_default_section_string:
mov eax,'.fla'
stos dword [edi]
mov ax,'t'
stos word [edi]
cmp edi,[display_buffer]
jae out_of_memory
jmp prepare_strings_table
strings_table_ready:
mov edx,[display_buffer]
mov ebp,[memory_end]
sub ebp,[labels_list]
add ebp,edx
prepare_labels_dump:
cmp edx,ebp
je labels_dump_ok
mov eax,[edx+24]
test eax,eax
jz label_dump_name_ok
cmp eax,[memory_start]
jb label_name_outside_source
cmp eax,[source_start]
ja label_name_outside_source
sub eax,[memory_start]
dec eax
mov [edx+24],eax
jmp label_dump_name_ok
label_name_outside_source:
mov esi,eax
mov eax,edi
sub eax,ebx
or eax,1 shl 31
mov [edx+24],eax
movzx ecx,byte [esi-1]
lea eax,[edi+ecx+1]
cmp edi,[display_buffer]
jae out_of_memory
rep movsb
xor al,al
stosb
label_dump_name_ok:
mov eax,[edx+28]
test eax,eax
jz label_dump_line_ok
sub eax,[memory_start]
mov [edx+28],eax
label_dump_line_ok:
mov eax,[edx+20]
test eax,eax
jz base_symbol_for_label_ok
cmp eax,[symbols_stream]
mov eax,[eax+4]
jae base_symbol_for_label_ok
xor eax,eax
base_symbol_for_label_ok:
mov [edx+20],eax
mov ax,[current_pass]
cmp ax,[edx+16]
je label_defined_flag_ok
and byte [edx+8],not 1
label_defined_flag_ok:
cmp ax,[edx+18]
je label_used_flag_ok
and byte [edx+8],not 8
label_used_flag_ok:
add edx,LABEL_STRUCTURE_SIZE
jmp prepare_labels_dump
jne strings_table_ready
bt [format_flags],0
jc strings_table_ready
prepare_strings_table:
cmp edx,ebp
je strings_table_ready
mov al,[edx]
test al,al
jz prepare_string
cmp al,80h
je prepare_string
add edx,0Ch
cmp al,0C0h
jb prepare_strings_table
add edx,4
jmp prepare_strings_table
prepare_string:
mov esi,edi
sub esi,ebx
xchg esi,[edx+4]
test al,al
jz prepare_section_string
or dword [edx+4],1 shl 31
add edx,0Ch
prepare_external_string:
mov ecx,[esi]
add esi,4
rep movs byte [edi],[esi]
mov byte [edi],0
inc edi
cmp edi,[display_buffer]
jae out_of_memory
jmp prepare_strings_table
prepare_section_string:
mov ecx,[number_of_sections]
mov eax,ecx
inc eax
mov [number_of_sections],eax
xchg eax,[edx+4]
shl ecx,2
add ecx,[free_additional_memory]
mov [ecx],eax
add edx,20h
test esi,esi
jz prepare_default_section_string
cmp [output_format],5
jne prepare_external_string
bt [format_flags],0
jc prepare_external_string
mov esi,[esi]
add esi,[resource_data]
copy_elf_section_name:
lods byte [esi]
cmp edi,[display_buffer]
jae out_of_memory
stos byte [edi]
test al,al
jnz copy_elf_section_name
jmp prepare_strings_table
prepare_default_section_string:
mov eax,'.fla'
stos dword [edi]
mov ax,'t'
stos word [edi]
cmp edi,[display_buffer]
jae out_of_memory
jmp prepare_strings_table
strings_table_ready:
mov edx,[display_buffer]
mov ebp,[memory_end]
sub ebp,[labels_list]
add ebp,edx
prepare_labels_dump:
cmp edx,ebp
je labels_dump_ok
mov eax,[edx+24]
test eax,eax
jz label_dump_name_ok
cmp eax,[memory_start]
jb label_name_outside_source
cmp eax,[source_start]
ja label_name_outside_source
sub eax,[memory_start]
dec eax
mov [edx+24],eax
jmp label_dump_name_ok
label_name_outside_source:
mov esi,eax
mov eax,edi
sub eax,ebx
or eax,1 shl 31
mov [edx+24],eax
movzx ecx,byte [esi-1]
lea eax,[edi+ecx+1]
cmp edi,[display_buffer]
jae out_of_memory
rep movsb
xor al,al
stosb
label_dump_name_ok:
mov eax,[edx+28]
test eax,eax
jz label_dump_line_ok
sub eax,[memory_start]
mov [edx+28],eax
label_dump_line_ok:
mov eax,[edx+20]
test eax,eax
jz base_symbol_for_label_ok
cmp eax,[symbols_stream]
mov eax,[eax+4]
jae base_symbol_for_label_ok
xor eax,eax
base_symbol_for_label_ok:
mov [edx+20],eax
mov ax,[current_pass]
cmp ax,[edx+16]
je label_defined_flag_ok
and byte [edx+8],not 1
label_defined_flag_ok:
cmp ax,[edx+18]
je label_used_flag_ok
and byte [edx+8],not 8
label_used_flag_ok:
add edx,LABEL_STRUCTURE_SIZE
jmp prepare_labels_dump
labels_dump_ok:
mov eax,edi
sub eax,ebx
171,11 → 171,11
call prepare_preprocessed_source
mov esi,[labels_list]
mov ebp,edi
make_lines_dump:
cmp esi,[display_buffer]
je lines_dump_ok
mov eax,[esi-4]
mov ecx,[esi-8]
make_lines_dump:
cmp esi,[display_buffer]
je lines_dump_ok
mov eax,[esi-4]
mov ecx,[esi-8]
sub esi,8
sub esi,ecx
cmp eax,1
188,14 → 188,14
mov eax,[esi+4]
sub eax,[code_start]
add eax,[headers_size]
cmp byte [esi+1Ah],0
je store_offset
xor eax,eax
store_offset:
stos dword [edi]
mov eax,[esi]
sub eax,[memory_start]
cmp byte [esi+1Ah],0
je store_offset
xor eax,eax
store_offset:
stos dword [edi]
mov eax,[esi]
sub eax,[memory_start]
stos dword [edi]
mov eax,[esi+4]
xor edx,edx
xor cl,cl
205,15 → 205,15
stos dword [edi]
mov eax,edx
stos dword [edi]
mov eax,[esi+10h]
stos dword [edi]
mov eax,[esi+14h]
test eax,eax
jz base_symbol_for_line_ok
cmp eax,[symbols_stream]
mov eax,[eax+4]
jae base_symbol_for_line_ok
xor eax,eax
mov eax,[esi+10h]
stos dword [edi]
mov eax,[esi+14h]
test eax,eax
jz base_symbol_for_line_ok
cmp eax,[symbols_stream]
mov eax,[eax+4]
jae base_symbol_for_line_ok
xor eax,eax
base_symbol_for_line_ok:
stos dword [edi]
mov eax,[esi+18h]
229,9 → 229,9
jmp make_lines_dump
lines_dump_ok:
mov edx,edi
mov eax,[current_offset]
sub eax,[code_start]
add eax,[headers_size]
mov eax,[current_offset]
sub eax,[code_start]
add eax,[headers_size]
stos dword [edi]
mov ecx,edi
sub ecx,ebx
244,11 → 244,11
find_inexisting_offsets:
sub edx,1Ch
cmp edx,ebp
jb write_symbols
test byte [edx+1Ah],1
jnz find_inexisting_offsets
cmp eax,[edx]
jb correct_inexisting_offset
jb write_symbols
test byte [edx+1Ah],1
jnz find_inexisting_offsets
cmp eax,[edx]
jb correct_inexisting_offset
mov eax,[edx]
jmp find_inexisting_offsets
correct_inexisting_offset:
256,8 → 256,8
or byte [edx+1Ah],2
jmp find_inexisting_offsets
write_symbols:
mov edx,[symbols_file]
call create
mov edx,[symbols_file]
call create
jc write_failed
mov edx,[code_start]
mov ecx,[edx+14h]
265,22 → 265,22
call write
jc write_failed
mov edx,[display_buffer]
mov ecx,[memory_end]
sub ecx,[labels_list]
call write
jc write_failed
mov edx,[memory_start]
mov ecx,[source_start]
sub ecx,edx
call write
jc write_failed
mov edx,ebp
mov ecx,edi
sub ecx,edx
call write
jc write_failed
mov edx,[free_additional_memory]
mov ecx,[number_of_sections]
mov ecx,[memory_end]
sub ecx,[labels_list]
call write
jc write_failed
mov edx,[memory_start]
mov ecx,[source_start]
sub ecx,edx
call write
jc write_failed
mov edx,ebp
mov ecx,edi
sub ecx,edx
call write
jc write_failed
mov edx,[free_additional_memory]
mov ecx,[number_of_sections]
shl ecx,2
call write
jc write_failed
328,85 → 328,85
ret
prepare_preprocessed_source:
mov esi,[memory_start]
mov ebp,[source_start]
test ebp,ebp
jnz prepare_preprocessed_line
mov ebp,[current_line]
inc ebp
prepare_preprocessed_line:
cmp esi,ebp
jae preprocessed_source_ok
mov eax,[memory_start]
mov edx,[input_file]
cmp [esi],edx
jne line_not_from_main_input
mov [esi],eax
line_not_from_main_input:
sub [esi],eax
test byte [esi+7],1 shl 7
jz prepare_next_preprocessed_line
sub [esi+8],eax
sub [esi+12],eax
prepare_next_preprocessed_line:
call skip_preprocessed_line
jmp prepare_preprocessed_line
preprocessed_source_ok:
ret
skip_preprocessed_line:
add esi,16
skip_preprocessed_line_content:
lods byte [esi]
cmp al,1Ah
je skip_preprocessed_symbol
cmp al,3Bh
je skip_preprocessed_symbol
cmp al,22h
je skip_preprocessed_string
or al,al
jnz skip_preprocessed_line_content
ret
skip_preprocessed_string:
lods dword [esi]
add esi,eax
jmp skip_preprocessed_line_content
skip_preprocessed_symbol:
lods byte [esi]
movzx eax,al
add esi,eax
jmp skip_preprocessed_line_content
restore_preprocessed_source:
mov esi,[memory_start]
mov ebp,[source_start]
test ebp,ebp
jnz restore_preprocessed_line
mov ebp,[current_line]
inc ebp
restore_preprocessed_line:
cmp esi,ebp
jae preprocessed_source_restored
mov eax,[memory_start]
add [esi],eax
cmp [esi],eax
jne preprocessed_line_source_restored
mov edx,[input_file]
mov [esi],edx
preprocessed_line_source_restored:
test byte [esi+7],1 shl 7
jz restore_next_preprocessed_line
add [esi+8],eax
add [esi+12],eax
restore_next_preprocessed_line:
call skip_preprocessed_line
jmp restore_preprocessed_line
preprocessed_source_restored:
ret
dump_preprocessed_source:
mov edi,[free_additional_memory]
call setup_dump_header
mov esi,[input_file]
call copy_asciiz
cmp edi,[additional_memory_end]
jae out_of_memory
mov ebp,[source_start]
test ebp,ebp
jnz prepare_preprocessed_line
mov ebp,[current_line]
inc ebp
prepare_preprocessed_line:
cmp esi,ebp
jae preprocessed_source_ok
mov eax,[memory_start]
mov edx,[input_file]
cmp [esi],edx
jne line_not_from_main_input
mov [esi],eax
line_not_from_main_input:
sub [esi],eax
test byte [esi+7],1 shl 7
jz prepare_next_preprocessed_line
sub [esi+8],eax
sub [esi+12],eax
prepare_next_preprocessed_line:
call skip_preprocessed_line
jmp prepare_preprocessed_line
preprocessed_source_ok:
ret
skip_preprocessed_line:
add esi,16
skip_preprocessed_line_content:
lods byte [esi]
cmp al,1Ah
je skip_preprocessed_symbol
cmp al,3Bh
je skip_preprocessed_symbol
cmp al,22h
je skip_preprocessed_string
or al,al
jnz skip_preprocessed_line_content
ret
skip_preprocessed_string:
lods dword [esi]
add esi,eax
jmp skip_preprocessed_line_content
skip_preprocessed_symbol:
lods byte [esi]
movzx eax,al
add esi,eax
jmp skip_preprocessed_line_content
restore_preprocessed_source:
mov esi,[memory_start]
mov ebp,[source_start]
test ebp,ebp
jnz restore_preprocessed_line
mov ebp,[current_line]
inc ebp
restore_preprocessed_line:
cmp esi,ebp
jae preprocessed_source_restored
mov eax,[memory_start]
add [esi],eax
cmp [esi],eax
jne preprocessed_line_source_restored
mov edx,[input_file]
mov [esi],edx
preprocessed_line_source_restored:
test byte [esi+7],1 shl 7
jz restore_next_preprocessed_line
add [esi+8],eax
add [esi+12],eax
restore_next_preprocessed_line:
call skip_preprocessed_line
jmp restore_preprocessed_line
preprocessed_source_restored:
ret
dump_preprocessed_source:
mov edi,[free_additional_memory]
call setup_dump_header
mov esi,[input_file]
call copy_asciiz
cmp edi,[additional_memory_end]
jae out_of_memory
mov eax,edi
sub eax,ebx
dec eax
428,8 → 428,8
call write
jc write_failed
mov edx,[memory_start]
mov ecx,esi
call write
jc write_failed
call close
mov ecx,esi
call write
jc write_failed
call close
ret
/programs/develop/fasm/trunk/tables.inc
4,48 → 4,48
; All rights reserved.
 
include_variable db 'INCLUDE',0
 
symbol_characters db 27
db 9,0Ah,0Dh,1Ah,20h,'+-/*=<>()[]{}:,|&~#`;\'
 
preprocessor_directives:
db 6,'define'
dw define_symbolic_constant-directive_handler
db 7,'include'
dw include_file-directive_handler
db 3,'irp'
dw irp_directive-directive_handler
db 4,'irps'
dw irps_directive-directive_handler
db 5,'macro'
dw define_macro-directive_handler
db 5,'match'
dw match_directive-directive_handler
db 5,'purge'
dw purge_macro-directive_handler
db 4,'rept'
dw rept_directive-directive_handler
db 7,'restore'
dw restore_equ_constant-directive_handler
db 7,'restruc'
dw purge_struc-directive_handler
db 5,'struc'
dw define_struc-directive_handler
db 0
 
macro_directives:
db 6,'common'
dw common_block-directive_handler
db 7,'forward'
dw forward_block-directive_handler
db 5,'local'
dw local_symbols-directive_handler
db 7,'reverse'
dw reverse_block-directive_handler
db 0
 
operators:
db 1,'+',80h
 
symbol_characters db 27
db 9,0Ah,0Dh,1Ah,20h,'+-/*=<>()[]{}:,|&~#`;\'
 
preprocessor_directives:
db 6,'define'
dw define_symbolic_constant-directive_handler
db 7,'include'
dw include_file-directive_handler
db 3,'irp'
dw irp_directive-directive_handler
db 4,'irps'
dw irps_directive-directive_handler
db 5,'macro'
dw define_macro-directive_handler
db 5,'match'
dw match_directive-directive_handler
db 5,'purge'
dw purge_macro-directive_handler
db 4,'rept'
dw rept_directive-directive_handler
db 7,'restore'
dw restore_equ_constant-directive_handler
db 7,'restruc'
dw purge_struc-directive_handler
db 5,'struc'
dw define_struc-directive_handler
db 0
 
macro_directives:
db 6,'common'
dw common_block-directive_handler
db 7,'forward'
dw forward_block-directive_handler
db 5,'local'
dw local_symbols-directive_handler
db 7,'reverse'
dw reverse_block-directive_handler
db 0
 
operators:
db 1,'+',80h
db 1,'-',81h
db 1,'*',90h
db 1,'/',91h
63,17 → 63,17
db 3,'not',0D0h
db 3,'plt',0E1h
db 3,'rva',0E0h
db 0
 
directive_operators:
db 5,'align',8Ch
db 2,'as',86h
db 2,'at',80h
db 7,'defined',88h
db 3,'dup',81h
db 2,'eq',0F0h
db 6,'eqtype',0F7h
db 4,'from',82h
db 0
 
directive_operators:
db 5,'align',8Ch
db 2,'as',86h
db 2,'at',80h
db 7,'defined',88h
db 3,'dup',81h
db 2,'eq',0F0h
db 6,'eqtype',0F7h
db 4,'from',82h
db 2,'in',0F6h
db 2,'on',84h
db 3,'ptr',85h
84,482 → 84,482
address_sizes:
db 4,'byte',1
db 5,'dword',4
db 5,'qword',8
db 4,'word',2
db 0
 
symbols:
dw symbols_2-symbols,(symbols_3-symbols_2)/(2+2)
dw symbols_3-symbols,(symbols_4-symbols_3)/(3+2)
dw symbols_4-symbols,(symbols_5-symbols_4)/(4+2)
dw symbols_5-symbols,(symbols_6-symbols_5)/(5+2)
dw symbols_6-symbols,(symbols_7-symbols_6)/(6+2)
dw symbols_7-symbols,(symbols_8-symbols_7)/(7+2)
dw symbols_8-symbols,(symbols_9-symbols_8)/(8+2)
dw symbols_9-symbols,(symbols_10-symbols_9)/(9+2)
dw symbols_10-symbols,(symbols_11-symbols_10)/(10+2)
dw symbols_11-symbols,(symbols_end-symbols_11)/(11+2)
 
symbols_2:
db 'ah',10h,04h
db 'al',10h,10h
db 'ax',10h,20h
db 'bh',10h,07h
db 'bl',10h,13h
db 'bp',10h,25h
db 'bx',10h,23h
db 'ch',10h,05h
db 'cl',10h,11h
db 'cs',10h,62h
db 'cx',10h,21h
db 'dh',10h,06h
db 'di',10h,27h
db 'dl',10h,12h
db 'ds',10h,64h
db 'dx',10h,22h
db 'es',10h,61h
db 'fs',10h,65h
db 'gs',10h,66h
db 'ms',1Ch,41h
db 'mz',18h,20h
db 'nx',1Bh,83h
db 'pe',18h,30h
db 'r8',10h,88h
db 'r9',10h,89h
db 'si',10h,26h
db 'sp',10h,24h
db 'ss',10h,63h
db 'st',10h,0A0h
symbols_3:
db 'bpl',10h,15h
db 'cr0',10h,50h
db 'cr1',10h,51h
db 'cr2',10h,52h
db 'cr3',10h,53h
db 'cr4',10h,54h
db 'cr5',10h,55h
db 'cr6',10h,56h
db 'cr7',10h,57h
db 'cr8',10h,58h
db 'cr9',10h,59h
db 'dil',10h,17h
db 'dll',1Bh,80h
db 'dr0',10h,70h
db 'dr1',10h,71h
db 'dr2',10h,72h
db 'dr3',10h,73h
db 'dr4',10h,74h
db 'dr5',10h,75h
db 'dr6',10h,76h
db 'dr7',10h,77h
db 'dr8',10h,78h
db 'dr9',10h,79h
db 'eax',10h,40h
db 'ebp',10h,45h
db 'ebx',10h,43h
db 'ecx',10h,41h
db 'edi',10h,47h
db 'edx',10h,42h
db 'efi',1Bh,10
db 'eip',10h,0F4h
db 'elf',18h,50h
db 'esi',10h,46h
db 'esp',10h,44h
db 'far',12h,3
db 'gui',1Bh,2
db 'mm0',10h,0B0h
db 'mm1',10h,0B1h
db 'mm2',10h,0B2h
db 'mm3',10h,0B3h
db 'mm4',10h,0B4h
db 'mm5',10h,0B5h
db 'mm6',10h,0B6h
db 'mm7',10h,0B7h
db 'r10',10h,8Ah
db 'r11',10h,8Bh
db 'r12',10h,8Ch
db 'r13',10h,8Dh
db 'r14',10h,8Eh
db 'r15',10h,8Fh
db 'r8b',10h,18h
db 'r8d',10h,48h
db 'r8l',10h,18h
db 'r8w',10h,28h
db 'r9b',10h,19h
db 'r9d',10h,49h
db 'r9l',10h,19h
db 'r9w',10h,29h
db 'rax',10h,80h
db 'rbp',10h,85h
db 'rbx',10h,83h
db 'rcx',10h,81h
db 'rdi',10h,87h
db 'rdx',10h,82h
db 'rip',10h,0F8h
db 'rsi',10h,86h
db 'rsp',10h,84h
db 'sil',10h,16h
db 'spl',10h,14h
db 'st0',10h,0A0h
db 'st1',10h,0A1h
db 'st2',10h,0A2h
db 'st3',10h,0A3h
db 'st4',10h,0A4h
db 'st5',10h,0A5h
db 'st6',10h,0A6h
db 'st7',10h,0A7h
db 'tr0',10h,90h
db 'tr1',10h,91h
db 'tr2',10h,92h
db 'tr3',10h,93h
db 'tr4',10h,94h
db 'tr5',10h,95h
db 'tr6',10h,96h
db 'tr7',10h,97h
db 'wdm',1Bh,81h
symbols_4:
db 'byte',11h,1
db 'code',19h,5
db 'coff',18h,40h
db 'cr10',10h,5Ah
db 'cr11',10h,5Bh
db 'cr12',10h,5Ch
db 'cr13',10h,5Dh
db 'cr14',10h,5Eh
db 'cr15',10h,5Fh
db 'data',19h,6
db 'dr10',10h,7Ah
db 'dr11',10h,7Bh
db 'dr12',10h,7Ch
db 'dr13',10h,7Dh
db 'dr14',10h,7Eh
db 'dr15',10h,7Fh
db 'ms64',1Ch,49h
db 'near',12h,2
db 'note',1Eh,4
db 'pe64',18h,3Ch
db 'r10b',10h,1Ah
db 'r10d',10h,4Ah
db 'r10l',10h,1Ah
db 'r10w',10h,2Ah
db 'r11b',10h,1Bh
db 'r11d',10h,4Bh
db 'r11l',10h,1Bh
db 'r11w',10h,2Bh
db 'r12b',10h,1Ch
db 'r12d',10h,4Ch
db 'r12l',10h,1Ch
db 'r12w',10h,2Ch
db 'r13b',10h,1Dh
db 'r13d',10h,4Dh
db 'r13l',10h,1Dh
db 'r13w',10h,2Dh
db 'r14b',10h,1Eh
db 'r14d',10h,4Eh
db 'r14l',10h,1Eh
db 'r14w',10h,2Eh
db 'r15b',10h,1Fh
db 'r15d',10h,4Fh
db 'r15l',10h,1Fh
db 'r15w',10h,2Fh
db 'word',11h,2
db 'xmm0',10h,0C0h
db 'xmm1',10h,0C1h
db 'xmm2',10h,0C2h
db 'xmm3',10h,0C3h
db 'xmm4',10h,0C4h
db 'xmm5',10h,0C5h
db 'xmm6',10h,0C6h
db 'xmm7',10h,0C7h
db 'xmm8',10h,0C8h
db 'xmm9',10h,0C9h
db 'ymm0',10h,0D0h
db 'ymm1',10h,0D1h
db 'ymm2',10h,0D2h
db 'ymm3',10h,0D3h
db 'ymm4',10h,0D4h
db 'ymm5',10h,0D5h
db 'ymm6',10h,0D6h
db 'ymm7',10h,0D7h
db 'ymm8',10h,0D8h
db 'ymm9',10h,0D9h
symbols_5:
db 'dword',11h,4
db 'elf64',18h,58h
db 'fword',11h,6
db 'large',1Bh,82h
db 'pword',11h,6
db 'qword',11h,8
db 'short',12h,1
db 'tbyte',11h,0Ah
db 'tword',11h,0Ah
db 'use16',13h,16
db 'use32',13h,32
db 'use64',13h,64
db 'xmm10',10h,0CAh
db 'xmm11',10h,0CBh
db 'xmm12',10h,0CCh
db 'xmm13',10h,0CDh
db 'xmm14',10h,0CEh
db 'xmm15',10h,0CFh
db 'xword',11h,16
db 'ymm10',10h,0DAh
db 'ymm11',10h,0DBh
db 'ymm12',10h,0DCh
db 'ymm13',10h,0DDh
db 'ymm14',10h,0DEh
db 'ymm15',10h,0DFh
db 'yword',11h,32
symbols_6:
db 'binary',18h,10h
db 'dqword',11h,16
db 'export',1Ah,0
db 'fixups',1Ah,5
db 'import',1Ah,1
db 'native',1Bh,1
db 'qqword',11h,32
db 'static',1Dh,1
symbols_7:
db 'console',1Bh,3
db 'dynamic',1Eh,2
db 'efiboot',1Bh,11
symbols_8:
db 'linkinfo',19h,9
db 'readable',19h,30
db 'resource',1Ah,2
db 'writable',19h,31
symbols_9:
db 'shareable',19h,28
db 'writeable',19h,31
symbols_10:
db 'efiruntime',1Bh,12
db 'executable',19h,29
db 'linkremove',19h,11
symbols_11:
db 'discardable',19h,25
db 'interpreter',1Eh,3
db 'notpageable',19h,27
symbols_end:
 
instructions:
dw instructions_2-instructions,(instructions_3-instructions_2)/(2+3)
dw instructions_3-instructions,(instructions_4-instructions_3)/(3+3)
dw instructions_4-instructions,(instructions_5-instructions_4)/(4+3)
dw instructions_5-instructions,(instructions_6-instructions_5)/(5+3)
dw instructions_6-instructions,(instructions_7-instructions_6)/(6+3)
dw instructions_7-instructions,(instructions_8-instructions_7)/(7+3)
dw instructions_8-instructions,(instructions_9-instructions_8)/(8+3)
dw instructions_9-instructions,(instructions_10-instructions_9)/(9+3)
dw instructions_10-instructions,(instructions_11-instructions_10)/(10+3)
dw instructions_11-instructions,(instructions_12-instructions_11)/(11+3)
dw instructions_12-instructions,(instructions_13-instructions_12)/(12+3)
dw instructions_13-instructions,(instructions_14-instructions_13)/(13+3)
dw instructions_14-instructions,(instructions_15-instructions_14)/(14+3)
dw instructions_15-instructions,(instructions_16-instructions_15)/(15+3)
dw instructions_16-instructions,(instructions_end-instructions_16)/(16+3)
 
instructions_2:
db 'bt',4
dw bt_instruction-instruction_handler
db 'if',0
dw if_directive-instruction_handler
db 'in',0
dw in_instruction-instruction_handler
db 'ja',77h
dw conditional_jump-instruction_handler
db 'jb',72h
dw conditional_jump-instruction_handler
db 'jc',72h
dw conditional_jump-instruction_handler
db 'je',74h
dw conditional_jump-instruction_handler
db 'jg',7Fh
dw conditional_jump-instruction_handler
db 'jl',7Ch
dw conditional_jump-instruction_handler
db 'jo',70h
dw conditional_jump-instruction_handler
db 'jp',7Ah
dw conditional_jump-instruction_handler
db 'js',78h
dw conditional_jump-instruction_handler
db 'jz',74h
dw conditional_jump-instruction_handler
db 'or',08h
dw basic_instruction-instruction_handler
instructions_3:
db 'aaa',37h
dw simple_instruction_except64-instruction_handler
db 'aad',0D5h
dw aa_instruction-instruction_handler
db 'aam',0D4h
dw aa_instruction-instruction_handler
db 'aas',3Fh
dw simple_instruction_except64-instruction_handler
db 'adc',10h
dw basic_instruction-instruction_handler
db 'add',00h
dw basic_instruction-instruction_handler
db 'and',20h
dw basic_instruction-instruction_handler
db 'bsf',0BCh
dw bs_instruction-instruction_handler
db 'bsr',0BDh
dw bs_instruction-instruction_handler
db 'btc',7
dw bt_instruction-instruction_handler
db 'btr',6
dw bt_instruction-instruction_handler
db 'bts',5
dw bt_instruction-instruction_handler
db 'cbw',98h
dw simple_instruction_16bit-instruction_handler
db 'cdq',99h
dw simple_instruction_32bit-instruction_handler
db 'clc',0F8h
dw simple_instruction-instruction_handler
db 'cld',0FCh
dw simple_instruction-instruction_handler
db 'cli',0FAh
dw simple_instruction-instruction_handler
db 'cmc',0F5h
dw simple_instruction-instruction_handler
db 'cmp',38h
dw basic_instruction-instruction_handler
db 'cqo',99h
dw simple_instruction_64bit-instruction_handler
db 'cwd',99h
dw simple_instruction_16bit-instruction_handler
db 'daa',27h
dw simple_instruction_except64-instruction_handler
db 'das',2Fh
dw simple_instruction_except64-instruction_handler
db 'dec',1
dw inc_instruction-instruction_handler
db 'div',6
dw single_operand_instruction-instruction_handler
db 'end',0
dw end_directive-instruction_handler
db 'err',0
dw err_directive-instruction_handler
db 'fld',0
dw fld_instruction-instruction_handler
db 'fst',2
dw fld_instruction-instruction_handler
db 'hlt',0F4h
dw simple_instruction-instruction_handler
db 'inc',0
dw inc_instruction-instruction_handler
db 'ins',6Ch
dw ins_instruction-instruction_handler
db 'int',0CDh
dw int_instruction-instruction_handler
db 'jae',73h
dw conditional_jump-instruction_handler
db 'jbe',76h
dw conditional_jump-instruction_handler
db 'jge',7Dh
dw conditional_jump-instruction_handler
db 'jle',7Eh
dw conditional_jump-instruction_handler
db 'jmp',0
dw jmp_instruction-instruction_handler
db 'jna',76h
dw conditional_jump-instruction_handler
db 'jnb',73h
dw conditional_jump-instruction_handler
db 'jnc',73h
dw conditional_jump-instruction_handler
db 'jne',75h
dw conditional_jump-instruction_handler
db 'jng',7Eh
dw conditional_jump-instruction_handler
db 'jnl',7Dh
dw conditional_jump-instruction_handler
db 'jno',71h
dw conditional_jump-instruction_handler
db 'jnp',7Bh
dw conditional_jump-instruction_handler
db 'jns',79h
dw conditional_jump-instruction_handler
db 'jnz',75h
dw conditional_jump-instruction_handler
db 'jpe',7Ah
dw conditional_jump-instruction_handler
db 'jpo',7Bh
dw conditional_jump-instruction_handler
db 'lar',2
dw lar_instruction-instruction_handler
db 'lds',3
dw ls_instruction-instruction_handler
db 'lea',0
dw lea_instruction-instruction_handler
db 'les',0
dw ls_instruction-instruction_handler
db 'lfs',4
dw ls_instruction-instruction_handler
db 'lgs',5
dw ls_instruction-instruction_handler
db 'lsl',3
dw lar_instruction-instruction_handler
db 'lss',2
dw ls_instruction-instruction_handler
db 'ltr',3
dw pm_word_instruction-instruction_handler
db 'mov',0
dw mov_instruction-instruction_handler
db 'mul',4
dw single_operand_instruction-instruction_handler
db 'neg',3
dw single_operand_instruction-instruction_handler
db 'nop',90h
dw nop_instruction-instruction_handler
db 'not',2
dw single_operand_instruction-instruction_handler
db 'org',0
dw org_directive-instruction_handler
db 'out',0
dw out_instruction-instruction_handler
db 'pop',0
dw pop_instruction-instruction_handler
db 'por',0EBh
dw basic_mmx_instruction-instruction_handler
db 'rcl',2
dw sh_instruction-instruction_handler
db 'rcr',3
dw sh_instruction-instruction_handler
db 'rep',0F3h
dw prefix_instruction-instruction_handler
db 'ret',0C2h
dw ret_instruction-instruction_handler
db 'rol',0
dw sh_instruction-instruction_handler
db 'ror',1
dw sh_instruction-instruction_handler
db 'rsm',0AAh
dw simple_extended_instruction-instruction_handler
db 'sal',4
dw sh_instruction-instruction_handler
db 'sar',7
dw sh_instruction-instruction_handler
db 'sbb',18h
dw basic_instruction-instruction_handler
db 'shl',4
dw sh_instruction-instruction_handler
db 'shr',5
dw sh_instruction-instruction_handler
db 'stc',0F9h
dw simple_instruction-instruction_handler
db 'std',0FDh
dw simple_instruction-instruction_handler
db 'sti',0FBh
dw simple_instruction-instruction_handler
db 'str',1
dw pm_store_word_instruction-instruction_handler
db 'sub',28h
dw basic_instruction-instruction_handler
db 'ud2',0Bh
dw simple_extended_instruction-instruction_handler
db 5,'qword',8
db 4,'word',2
db 0
 
symbols:
dw symbols_2-symbols,(symbols_3-symbols_2)/(2+2)
dw symbols_3-symbols,(symbols_4-symbols_3)/(3+2)
dw symbols_4-symbols,(symbols_5-symbols_4)/(4+2)
dw symbols_5-symbols,(symbols_6-symbols_5)/(5+2)
dw symbols_6-symbols,(symbols_7-symbols_6)/(6+2)
dw symbols_7-symbols,(symbols_8-symbols_7)/(7+2)
dw symbols_8-symbols,(symbols_9-symbols_8)/(8+2)
dw symbols_9-symbols,(symbols_10-symbols_9)/(9+2)
dw symbols_10-symbols,(symbols_11-symbols_10)/(10+2)
dw symbols_11-symbols,(symbols_end-symbols_11)/(11+2)
 
symbols_2:
db 'ah',10h,04h
db 'al',10h,10h
db 'ax',10h,20h
db 'bh',10h,07h
db 'bl',10h,13h
db 'bp',10h,25h
db 'bx',10h,23h
db 'ch',10h,05h
db 'cl',10h,11h
db 'cs',10h,62h
db 'cx',10h,21h
db 'dh',10h,06h
db 'di',10h,27h
db 'dl',10h,12h
db 'ds',10h,64h
db 'dx',10h,22h
db 'es',10h,61h
db 'fs',10h,65h
db 'gs',10h,66h
db 'ms',1Ch,41h
db 'mz',18h,20h
db 'nx',1Bh,83h
db 'pe',18h,30h
db 'r8',10h,88h
db 'r9',10h,89h
db 'si',10h,26h
db 'sp',10h,24h
db 'ss',10h,63h
db 'st',10h,0A0h
symbols_3:
db 'bpl',10h,15h
db 'cr0',10h,50h
db 'cr1',10h,51h
db 'cr2',10h,52h
db 'cr3',10h,53h
db 'cr4',10h,54h
db 'cr5',10h,55h
db 'cr6',10h,56h
db 'cr7',10h,57h
db 'cr8',10h,58h
db 'cr9',10h,59h
db 'dil',10h,17h
db 'dll',1Bh,80h
db 'dr0',10h,70h
db 'dr1',10h,71h
db 'dr2',10h,72h
db 'dr3',10h,73h
db 'dr4',10h,74h
db 'dr5',10h,75h
db 'dr6',10h,76h
db 'dr7',10h,77h
db 'dr8',10h,78h
db 'dr9',10h,79h
db 'eax',10h,40h
db 'ebp',10h,45h
db 'ebx',10h,43h
db 'ecx',10h,41h
db 'edi',10h,47h
db 'edx',10h,42h
db 'efi',1Bh,10
db 'eip',10h,0F4h
db 'elf',18h,50h
db 'esi',10h,46h
db 'esp',10h,44h
db 'far',12h,3
db 'gui',1Bh,2
db 'mm0',10h,0B0h
db 'mm1',10h,0B1h
db 'mm2',10h,0B2h
db 'mm3',10h,0B3h
db 'mm4',10h,0B4h
db 'mm5',10h,0B5h
db 'mm6',10h,0B6h
db 'mm7',10h,0B7h
db 'r10',10h,8Ah
db 'r11',10h,8Bh
db 'r12',10h,8Ch
db 'r13',10h,8Dh
db 'r14',10h,8Eh
db 'r15',10h,8Fh
db 'r8b',10h,18h
db 'r8d',10h,48h
db 'r8l',10h,18h
db 'r8w',10h,28h
db 'r9b',10h,19h
db 'r9d',10h,49h
db 'r9l',10h,19h
db 'r9w',10h,29h
db 'rax',10h,80h
db 'rbp',10h,85h
db 'rbx',10h,83h
db 'rcx',10h,81h
db 'rdi',10h,87h
db 'rdx',10h,82h
db 'rip',10h,0F8h
db 'rsi',10h,86h
db 'rsp',10h,84h
db 'sil',10h,16h
db 'spl',10h,14h
db 'st0',10h,0A0h
db 'st1',10h,0A1h
db 'st2',10h,0A2h
db 'st3',10h,0A3h
db 'st4',10h,0A4h
db 'st5',10h,0A5h
db 'st6',10h,0A6h
db 'st7',10h,0A7h
db 'tr0',10h,90h
db 'tr1',10h,91h
db 'tr2',10h,92h
db 'tr3',10h,93h
db 'tr4',10h,94h
db 'tr5',10h,95h
db 'tr6',10h,96h
db 'tr7',10h,97h
db 'wdm',1Bh,81h
symbols_4:
db 'byte',11h,1
db 'code',19h,5
db 'coff',18h,40h
db 'cr10',10h,5Ah
db 'cr11',10h,5Bh
db 'cr12',10h,5Ch
db 'cr13',10h,5Dh
db 'cr14',10h,5Eh
db 'cr15',10h,5Fh
db 'data',19h,6
db 'dr10',10h,7Ah
db 'dr11',10h,7Bh
db 'dr12',10h,7Ch
db 'dr13',10h,7Dh
db 'dr14',10h,7Eh
db 'dr15',10h,7Fh
db 'ms64',1Ch,49h
db 'near',12h,2
db 'note',1Eh,4
db 'pe64',18h,3Ch
db 'r10b',10h,1Ah
db 'r10d',10h,4Ah
db 'r10l',10h,1Ah
db 'r10w',10h,2Ah
db 'r11b',10h,1Bh
db 'r11d',10h,4Bh
db 'r11l',10h,1Bh
db 'r11w',10h,2Bh
db 'r12b',10h,1Ch
db 'r12d',10h,4Ch
db 'r12l',10h,1Ch
db 'r12w',10h,2Ch
db 'r13b',10h,1Dh
db 'r13d',10h,4Dh
db 'r13l',10h,1Dh
db 'r13w',10h,2Dh
db 'r14b',10h,1Eh
db 'r14d',10h,4Eh
db 'r14l',10h,1Eh
db 'r14w',10h,2Eh
db 'r15b',10h,1Fh
db 'r15d',10h,4Fh
db 'r15l',10h,1Fh
db 'r15w',10h,2Fh
db 'word',11h,2
db 'xmm0',10h,0C0h
db 'xmm1',10h,0C1h
db 'xmm2',10h,0C2h
db 'xmm3',10h,0C3h
db 'xmm4',10h,0C4h
db 'xmm5',10h,0C5h
db 'xmm6',10h,0C6h
db 'xmm7',10h,0C7h
db 'xmm8',10h,0C8h
db 'xmm9',10h,0C9h
db 'ymm0',10h,0D0h
db 'ymm1',10h,0D1h
db 'ymm2',10h,0D2h
db 'ymm3',10h,0D3h
db 'ymm4',10h,0D4h
db 'ymm5',10h,0D5h
db 'ymm6',10h,0D6h
db 'ymm7',10h,0D7h
db 'ymm8',10h,0D8h
db 'ymm9',10h,0D9h
symbols_5:
db 'dword',11h,4
db 'elf64',18h,58h
db 'fword',11h,6
db 'large',1Bh,82h
db 'pword',11h,6
db 'qword',11h,8
db 'short',12h,1
db 'tbyte',11h,0Ah
db 'tword',11h,0Ah
db 'use16',13h,16
db 'use32',13h,32
db 'use64',13h,64
db 'xmm10',10h,0CAh
db 'xmm11',10h,0CBh
db 'xmm12',10h,0CCh
db 'xmm13',10h,0CDh
db 'xmm14',10h,0CEh
db 'xmm15',10h,0CFh
db 'xword',11h,16
db 'ymm10',10h,0DAh
db 'ymm11',10h,0DBh
db 'ymm12',10h,0DCh
db 'ymm13',10h,0DDh
db 'ymm14',10h,0DEh
db 'ymm15',10h,0DFh
db 'yword',11h,32
symbols_6:
db 'binary',18h,10h
db 'dqword',11h,16
db 'export',1Ah,0
db 'fixups',1Ah,5
db 'import',1Ah,1
db 'native',1Bh,1
db 'qqword',11h,32
db 'static',1Dh,1
symbols_7:
db 'console',1Bh,3
db 'dynamic',1Eh,2
db 'efiboot',1Bh,11
symbols_8:
db 'linkinfo',19h,9
db 'readable',19h,30
db 'resource',1Ah,2
db 'writable',19h,31
symbols_9:
db 'shareable',19h,28
db 'writeable',19h,31
symbols_10:
db 'efiruntime',1Bh,12
db 'executable',19h,29
db 'linkremove',19h,11
symbols_11:
db 'discardable',19h,25
db 'interpreter',1Eh,3
db 'notpageable',19h,27
symbols_end:
 
instructions:
dw instructions_2-instructions,(instructions_3-instructions_2)/(2+3)
dw instructions_3-instructions,(instructions_4-instructions_3)/(3+3)
dw instructions_4-instructions,(instructions_5-instructions_4)/(4+3)
dw instructions_5-instructions,(instructions_6-instructions_5)/(5+3)
dw instructions_6-instructions,(instructions_7-instructions_6)/(6+3)
dw instructions_7-instructions,(instructions_8-instructions_7)/(7+3)
dw instructions_8-instructions,(instructions_9-instructions_8)/(8+3)
dw instructions_9-instructions,(instructions_10-instructions_9)/(9+3)
dw instructions_10-instructions,(instructions_11-instructions_10)/(10+3)
dw instructions_11-instructions,(instructions_12-instructions_11)/(11+3)
dw instructions_12-instructions,(instructions_13-instructions_12)/(12+3)
dw instructions_13-instructions,(instructions_14-instructions_13)/(13+3)
dw instructions_14-instructions,(instructions_15-instructions_14)/(14+3)
dw instructions_15-instructions,(instructions_16-instructions_15)/(15+3)
dw instructions_16-instructions,(instructions_end-instructions_16)/(16+3)
 
instructions_2:
db 'bt',4
dw bt_instruction-instruction_handler
db 'if',0
dw if_directive-instruction_handler
db 'in',0
dw in_instruction-instruction_handler
db 'ja',77h
dw conditional_jump-instruction_handler
db 'jb',72h
dw conditional_jump-instruction_handler
db 'jc',72h
dw conditional_jump-instruction_handler
db 'je',74h
dw conditional_jump-instruction_handler
db 'jg',7Fh
dw conditional_jump-instruction_handler
db 'jl',7Ch
dw conditional_jump-instruction_handler
db 'jo',70h
dw conditional_jump-instruction_handler
db 'jp',7Ah
dw conditional_jump-instruction_handler
db 'js',78h
dw conditional_jump-instruction_handler
db 'jz',74h
dw conditional_jump-instruction_handler
db 'or',08h
dw basic_instruction-instruction_handler
instructions_3:
db 'aaa',37h
dw simple_instruction_except64-instruction_handler
db 'aad',0D5h
dw aa_instruction-instruction_handler
db 'aam',0D4h
dw aa_instruction-instruction_handler
db 'aas',3Fh
dw simple_instruction_except64-instruction_handler
db 'adc',10h
dw basic_instruction-instruction_handler
db 'add',00h
dw basic_instruction-instruction_handler
db 'and',20h
dw basic_instruction-instruction_handler
db 'bsf',0BCh
dw bs_instruction-instruction_handler
db 'bsr',0BDh
dw bs_instruction-instruction_handler
db 'btc',7
dw bt_instruction-instruction_handler
db 'btr',6
dw bt_instruction-instruction_handler
db 'bts',5
dw bt_instruction-instruction_handler
db 'cbw',98h
dw simple_instruction_16bit-instruction_handler
db 'cdq',99h
dw simple_instruction_32bit-instruction_handler
db 'clc',0F8h
dw simple_instruction-instruction_handler
db 'cld',0FCh
dw simple_instruction-instruction_handler
db 'cli',0FAh
dw simple_instruction-instruction_handler
db 'cmc',0F5h
dw simple_instruction-instruction_handler
db 'cmp',38h
dw basic_instruction-instruction_handler
db 'cqo',99h
dw simple_instruction_64bit-instruction_handler
db 'cwd',99h
dw simple_instruction_16bit-instruction_handler
db 'daa',27h
dw simple_instruction_except64-instruction_handler
db 'das',2Fh
dw simple_instruction_except64-instruction_handler
db 'dec',1
dw inc_instruction-instruction_handler
db 'div',6
dw single_operand_instruction-instruction_handler
db 'end',0
dw end_directive-instruction_handler
db 'err',0
dw err_directive-instruction_handler
db 'fld',0
dw fld_instruction-instruction_handler
db 'fst',2
dw fld_instruction-instruction_handler
db 'hlt',0F4h
dw simple_instruction-instruction_handler
db 'inc',0
dw inc_instruction-instruction_handler
db 'ins',6Ch
dw ins_instruction-instruction_handler
db 'int',0CDh
dw int_instruction-instruction_handler
db 'jae',73h
dw conditional_jump-instruction_handler
db 'jbe',76h
dw conditional_jump-instruction_handler
db 'jge',7Dh
dw conditional_jump-instruction_handler
db 'jle',7Eh
dw conditional_jump-instruction_handler
db 'jmp',0
dw jmp_instruction-instruction_handler
db 'jna',76h
dw conditional_jump-instruction_handler
db 'jnb',73h
dw conditional_jump-instruction_handler
db 'jnc',73h
dw conditional_jump-instruction_handler
db 'jne',75h
dw conditional_jump-instruction_handler
db 'jng',7Eh
dw conditional_jump-instruction_handler
db 'jnl',7Dh
dw conditional_jump-instruction_handler
db 'jno',71h
dw conditional_jump-instruction_handler
db 'jnp',7Bh
dw conditional_jump-instruction_handler
db 'jns',79h
dw conditional_jump-instruction_handler
db 'jnz',75h
dw conditional_jump-instruction_handler
db 'jpe',7Ah
dw conditional_jump-instruction_handler
db 'jpo',7Bh
dw conditional_jump-instruction_handler
db 'lar',2
dw lar_instruction-instruction_handler
db 'lds',3
dw ls_instruction-instruction_handler
db 'lea',0
dw lea_instruction-instruction_handler
db 'les',0
dw ls_instruction-instruction_handler
db 'lfs',4
dw ls_instruction-instruction_handler
db 'lgs',5
dw ls_instruction-instruction_handler
db 'lsl',3
dw lar_instruction-instruction_handler
db 'lss',2
dw ls_instruction-instruction_handler
db 'ltr',3
dw pm_word_instruction-instruction_handler
db 'mov',0
dw mov_instruction-instruction_handler
db 'mul',4
dw single_operand_instruction-instruction_handler
db 'neg',3
dw single_operand_instruction-instruction_handler
db 'nop',90h
dw nop_instruction-instruction_handler
db 'not',2
dw single_operand_instruction-instruction_handler
db 'org',0
dw org_directive-instruction_handler
db 'out',0
dw out_instruction-instruction_handler
db 'pop',0
dw pop_instruction-instruction_handler
db 'por',0EBh
dw basic_mmx_instruction-instruction_handler
db 'rcl',2
dw sh_instruction-instruction_handler
db 'rcr',3
dw sh_instruction-instruction_handler
db 'rep',0F3h
dw prefix_instruction-instruction_handler
db 'ret',0C2h
dw ret_instruction-instruction_handler
db 'rol',0
dw sh_instruction-instruction_handler
db 'ror',1
dw sh_instruction-instruction_handler
db 'rsm',0AAh
dw simple_extended_instruction-instruction_handler
db 'sal',4
dw sh_instruction-instruction_handler
db 'sar',7
dw sh_instruction-instruction_handler
db 'sbb',18h
dw basic_instruction-instruction_handler
db 'shl',4
dw sh_instruction-instruction_handler
db 'shr',5
dw sh_instruction-instruction_handler
db 'stc',0F9h
dw simple_instruction-instruction_handler
db 'std',0FDh
dw simple_instruction-instruction_handler
db 'sti',0FBh
dw simple_instruction-instruction_handler
db 'str',1
dw pm_store_word_instruction-instruction_handler
db 'sub',28h
dw basic_instruction-instruction_handler
db 'ud2',0Bh
dw simple_extended_instruction-instruction_handler
db 'xor',30h
dw basic_instruction-instruction_handler
instructions_4:
580,118 → 580,118
db 'call',0
dw call_instruction-instruction_handler
db 'cdqe',98h
dw simple_instruction_64bit-instruction_handler
db 'clgi',0DDh
dw simple_vmx_instruction-instruction_handler
db 'clts',6
dw simple_extended_instruction-instruction_handler
db 'cmps',0A6h
dw cmps_instruction-instruction_handler
db 'cwde',98h
dw simple_instruction_32bit-instruction_handler
db 'data',0
dw data_directive-instruction_handler
db 'dppd',41h
dw sse4_instruction_3a_imm8-instruction_handler
db 'dpps',40h
dw sse4_instruction_3a_imm8-instruction_handler
db 'else',0
dw else_directive-instruction_handler
db 'emms',77h
dw simple_extended_instruction-instruction_handler
db 'fabs',100001b
dw simple_fpu_instruction-instruction_handler
db 'fadd',0
dw basic_fpu_instruction-instruction_handler
db 'fbld',4
dw fbld_instruction-instruction_handler
db 'fchs',100000b
dw simple_fpu_instruction-instruction_handler
db 'fcom',2
dw basic_fpu_instruction-instruction_handler
db 'fcos',111111b
dw simple_fpu_instruction-instruction_handler
db 'fdiv',6
dw basic_fpu_instruction-instruction_handler
db 'feni',0E0h
dw finit_instruction-instruction_handler
db 'fild',0
dw fild_instruction-instruction_handler
db 'fist',2
dw fild_instruction-instruction_handler
db 'fld1',101000b
dw simple_fpu_instruction-instruction_handler
db 'fldz',101110b
dw simple_fpu_instruction-instruction_handler
db 'fmul',1
dw basic_fpu_instruction-instruction_handler
db 'fnop',010000b
dw simple_fpu_instruction-instruction_handler
db 'fsin',111110b
dw simple_fpu_instruction-instruction_handler
db 'fstp',3
dw fld_instruction-instruction_handler
db 'fsub',4
dw basic_fpu_instruction-instruction_handler
db 'ftst',100100b
dw simple_fpu_instruction-instruction_handler
db 'fxam',100101b
dw simple_fpu_instruction-instruction_handler
db 'fxch',0
dw fxch_instruction-instruction_handler
db 'heap',0
dw heap_directive-instruction_handler
db 'idiv',7
dw single_operand_instruction-instruction_handler
db 'imul',0
dw imul_instruction-instruction_handler
db 'insb',6Ch
dw simple_instruction-instruction_handler
db 'insd',6Dh
dw simple_instruction_32bit-instruction_handler
db 'insw',6Dh
dw simple_instruction_16bit-instruction_handler
db 'int1',0F1h
dw simple_instruction-instruction_handler
db 'int3',0CCh
dw simple_instruction-instruction_handler
db 'into',0CEh
dw simple_instruction_except64-instruction_handler
db 'invd',8
dw simple_extended_instruction-instruction_handler
db 'iret',0CFh
dw iret_instruction-instruction_handler
db 'jcxz',0E3h
dw loop_instruction_16bit-instruction_handler
db 'jnae',72h
dw conditional_jump-instruction_handler
db 'jnbe',77h
dw conditional_jump-instruction_handler
db 'jnge',7Ch
dw conditional_jump-instruction_handler
db 'jnle',7Fh
dw conditional_jump-instruction_handler
db 'lahf',9Fh
dw simple_instruction-instruction_handler
db 'lgdt',2
dw lgdt_instruction-instruction_handler
db 'lidt',3
dw lgdt_instruction-instruction_handler
db 'lldt',2
dw pm_word_instruction-instruction_handler
db 'lmsw',16h
dw pm_word_instruction-instruction_handler
db 'load',0
dw load_directive-instruction_handler
db 'lock',0F0h
dw prefix_instruction-instruction_handler
db 'lods',0ACh
dw lods_instruction-instruction_handler
db 'loop',0E2h
dw loop_instruction-instruction_handler
db 'movd',0
dw movd_instruction-instruction_handler
db 'movq',0
dw simple_instruction_64bit-instruction_handler
db 'clgi',0DDh
dw simple_vmx_instruction-instruction_handler
db 'clts',6
dw simple_extended_instruction-instruction_handler
db 'cmps',0A6h
dw cmps_instruction-instruction_handler
db 'cwde',98h
dw simple_instruction_32bit-instruction_handler
db 'data',0
dw data_directive-instruction_handler
db 'dppd',41h
dw sse4_instruction_3a_imm8-instruction_handler
db 'dpps',40h
dw sse4_instruction_3a_imm8-instruction_handler
db 'else',0
dw else_directive-instruction_handler
db 'emms',77h
dw simple_extended_instruction-instruction_handler
db 'fabs',100001b
dw simple_fpu_instruction-instruction_handler
db 'fadd',0
dw basic_fpu_instruction-instruction_handler
db 'fbld',4
dw fbld_instruction-instruction_handler
db 'fchs',100000b
dw simple_fpu_instruction-instruction_handler
db 'fcom',2
dw basic_fpu_instruction-instruction_handler
db 'fcos',111111b
dw simple_fpu_instruction-instruction_handler
db 'fdiv',6
dw basic_fpu_instruction-instruction_handler
db 'feni',0E0h
dw finit_instruction-instruction_handler
db 'fild',0
dw fild_instruction-instruction_handler
db 'fist',2
dw fild_instruction-instruction_handler
db 'fld1',101000b
dw simple_fpu_instruction-instruction_handler
db 'fldz',101110b
dw simple_fpu_instruction-instruction_handler
db 'fmul',1
dw basic_fpu_instruction-instruction_handler
db 'fnop',010000b
dw simple_fpu_instruction-instruction_handler
db 'fsin',111110b
dw simple_fpu_instruction-instruction_handler
db 'fstp',3
dw fld_instruction-instruction_handler
db 'fsub',4
dw basic_fpu_instruction-instruction_handler
db 'ftst',100100b
dw simple_fpu_instruction-instruction_handler
db 'fxam',100101b
dw simple_fpu_instruction-instruction_handler
db 'fxch',0
dw fxch_instruction-instruction_handler
db 'heap',0
dw heap_directive-instruction_handler
db 'idiv',7
dw single_operand_instruction-instruction_handler
db 'imul',0
dw imul_instruction-instruction_handler
db 'insb',6Ch
dw simple_instruction-instruction_handler
db 'insd',6Dh
dw simple_instruction_32bit-instruction_handler
db 'insw',6Dh
dw simple_instruction_16bit-instruction_handler
db 'int1',0F1h
dw simple_instruction-instruction_handler
db 'int3',0CCh
dw simple_instruction-instruction_handler
db 'into',0CEh
dw simple_instruction_except64-instruction_handler
db 'invd',8
dw simple_extended_instruction-instruction_handler
db 'iret',0CFh
dw iret_instruction-instruction_handler
db 'jcxz',0E3h
dw loop_instruction_16bit-instruction_handler
db 'jnae',72h
dw conditional_jump-instruction_handler
db 'jnbe',77h
dw conditional_jump-instruction_handler
db 'jnge',7Ch
dw conditional_jump-instruction_handler
db 'jnle',7Fh
dw conditional_jump-instruction_handler
db 'lahf',9Fh
dw simple_instruction-instruction_handler
db 'lgdt',2
dw lgdt_instruction-instruction_handler
db 'lidt',3
dw lgdt_instruction-instruction_handler
db 'lldt',2
dw pm_word_instruction-instruction_handler
db 'lmsw',16h
dw pm_word_instruction-instruction_handler
db 'load',0
dw load_directive-instruction_handler
db 'lock',0F0h
dw prefix_instruction-instruction_handler
db 'lods',0ACh
dw lods_instruction-instruction_handler
db 'loop',0E2h
dw loop_instruction-instruction_handler
db 'movd',0
dw movd_instruction-instruction_handler
db 'movq',0
dw movq_instruction-instruction_handler
db 'movs',0A4h
dw movs_instruction-instruction_handler
700,8 → 700,8
db 'orpd',56h
dw sse_pd_instruction-instruction_handler
db 'orps',56h
dw sse_ps_instruction-instruction_handler
db 'outs',6Eh
dw sse_ps_instruction-instruction_handler
db 'outs',6Eh
dw outs_instruction-instruction_handler
db 'pand',0DBh
dw basic_mmx_instruction-instruction_handler
712,28 → 712,28
db 'popa',61h
dw simple_instruction_except64-instruction_handler
db 'popd',4
dw pop_instruction-instruction_handler
db 'popf',9Dh
dw simple_instruction-instruction_handler
db 'popq',8
dw pop_instruction-instruction_handler
db 'popw',2
dw pop_instruction-instruction_handler
db 'push',0
dw push_instruction-instruction_handler
db 'pxor',0EFh
dw basic_mmx_instruction-instruction_handler
db 'repe',0F3h
dw prefix_instruction-instruction_handler
db 'repz',0F3h
dw prefix_instruction-instruction_handler
db 'retd',0C2h
dw ret_instruction_32bit_except64-instruction_handler
db 'retf',0CAh
dw retf_instruction-instruction_handler
db 'retn',0C2h
dw ret_instruction-instruction_handler
db 'retq',0C2h
dw pop_instruction-instruction_handler
db 'popf',9Dh
dw simple_instruction-instruction_handler
db 'popq',8
dw pop_instruction-instruction_handler
db 'popw',2
dw pop_instruction-instruction_handler
db 'push',0
dw push_instruction-instruction_handler
db 'pxor',0EFh
dw basic_mmx_instruction-instruction_handler
db 'repe',0F3h
dw prefix_instruction-instruction_handler
db 'repz',0F3h
dw prefix_instruction-instruction_handler
db 'retd',0C2h
dw ret_instruction_32bit_except64-instruction_handler
db 'retf',0CAh
dw retf_instruction-instruction_handler
db 'retn',0C2h
dw ret_instruction-instruction_handler
db 'retq',0C2h
dw ret_instruction_only64-instruction_handler
db 'retw',0C2h
dw ret_instruction_16bit-instruction_handler
748,26 → 748,26
db 'scas',0AEh
dw stos_instruction-instruction_handler
db 'seta',97h
dw set_instruction-instruction_handler
db 'setb',92h
dw set_instruction-instruction_handler
db 'setc',92h
dw set_instruction-instruction_handler
db 'sete',94h
dw set_instruction-instruction_handler
db 'setg',9Fh
dw set_instruction-instruction_handler
db 'setl',9Ch
dw set_instruction-instruction_handler
db 'seto',90h
dw set_instruction-instruction_handler
db 'setp',9Ah
dw set_instruction-instruction_handler
db 'sets',98h
dw set_instruction-instruction_handler
db 'setz',94h
dw set_instruction-instruction_handler
db 'sgdt',0
dw set_instruction-instruction_handler
db 'setb',92h
dw set_instruction-instruction_handler
db 'setc',92h
dw set_instruction-instruction_handler
db 'sete',94h
dw set_instruction-instruction_handler
db 'setg',9Fh
dw set_instruction-instruction_handler
db 'setl',9Ch
dw set_instruction-instruction_handler
db 'seto',90h
dw set_instruction-instruction_handler
db 'setp',9Ah
dw set_instruction-instruction_handler
db 'sets',98h
dw set_instruction-instruction_handler
db 'setz',94h
dw set_instruction-instruction_handler
db 'sgdt',0
dw lgdt_instruction-instruction_handler
db 'shld',0A4h
dw shd_instruction-instruction_handler
780,17 → 780,17
db 'sidt',1
dw lgdt_instruction-instruction_handler
db 'sldt',0
dw pm_store_word_instruction-instruction_handler
db 'smsw',14h
dw pm_store_word_instruction-instruction_handler
db 'stgi',0DCh
dw simple_vmx_instruction-instruction_handler
db 'stos',0AAh
dw stos_instruction-instruction_handler
db 'test',0
dw test_instruction-instruction_handler
db 'verr',4
dw pm_word_instruction-instruction_handler
dw pm_store_word_instruction-instruction_handler
db 'smsw',14h
dw pm_store_word_instruction-instruction_handler
db 'stgi',0DCh
dw simple_vmx_instruction-instruction_handler
db 'stos',0AAh
dw stos_instruction-instruction_handler
db 'test',0
dw test_instruction-instruction_handler
db 'verr',4
dw pm_word_instruction-instruction_handler
db 'verw',5
dw pm_word_instruction-instruction_handler
db 'vpor',0EBh
806,18 → 806,18
db 'xlat',0D7h
dw xlat_instruction-instruction_handler
instructions_5:
db 'addpd',58h
dw sse_pd_instruction-instruction_handler
db 'addps',58h
dw sse_ps_instruction-instruction_handler
db 'addsd',58h
dw sse_sd_instruction-instruction_handler
db 'addss',58h
dw sse_ss_instruction-instruction_handler
db 'align',0
dw align_directive-instruction_handler
db 'andpd',54h
db 'addpd',58h
dw sse_pd_instruction-instruction_handler
db 'addps',58h
dw sse_ps_instruction-instruction_handler
db 'addsd',58h
dw sse_sd_instruction-instruction_handler
db 'addss',58h
dw sse_ss_instruction-instruction_handler
db 'align',0
dw align_directive-instruction_handler
db 'andpd',54h
dw sse_pd_instruction-instruction_handler
db 'andps',54h
dw sse_ps_instruction-instruction_handler
db 'bextr',0F7h
829,7 → 829,7
db 'bound',0
dw bound_instruction-instruction_handler
db 'break',0
dw break_directive-instruction_handler
dw break_directive-instruction_handler
db 'bswap',0
dw bswap_instruction-instruction_handler
db 'cmova',47h
855,365 → 855,365
db 'cmppd',-1
dw cmp_pd_instruction-instruction_handler
db 'cmpps',-1
dw cmp_ps_instruction-instruction_handler
db 'cmpsb',0A6h
dw simple_instruction-instruction_handler
db 'cmpsd',-1
dw cmpsd_instruction-instruction_handler
db 'cmpsq',0A7h
dw simple_instruction_64bit-instruction_handler
db 'cmpss',-1
dw cmp_ss_instruction-instruction_handler
db 'cmpsw',0A7h
dw simple_instruction_16bit-instruction_handler
db 'cpuid',0A2h
dw simple_extended_instruction-instruction_handler
db 'crc32',0
dw crc32_instruction-instruction_handler
db 'divpd',5Eh
dw sse_pd_instruction-instruction_handler
db 'divps',5Eh
dw sse_ps_instruction-instruction_handler
db 'divsd',5Eh
dw sse_sd_instruction-instruction_handler
db 'divss',5Eh
dw sse_ss_instruction-instruction_handler
db 'enter',0
dw enter_instruction-instruction_handler
db 'entry',0
dw entry_directive-instruction_handler
db 'extrn',0
dw extrn_directive-instruction_handler
db 'extrq',0
dw extrq_instruction-instruction_handler
db 'f2xm1',110000b
dw simple_fpu_instruction-instruction_handler
db 'faddp',0
dw faddp_instruction-instruction_handler
db 'fbstp',6
dw fbld_instruction-instruction_handler
db 'fclex',0E2h
dw finit_instruction-instruction_handler
db 'fcomi',0F0h
dw fcomi_instruction-instruction_handler
db 'fcomp',3
dw basic_fpu_instruction-instruction_handler
db 'fdisi',0E1h
dw finit_instruction-instruction_handler
db 'fdivp',7
dw faddp_instruction-instruction_handler
db 'fdivr',7
dw basic_fpu_instruction-instruction_handler
db 'femms',0Eh
dw simple_extended_instruction-instruction_handler
db 'ffree',0
dw ffree_instruction-instruction_handler
db 'fiadd',0
dw fi_instruction-instruction_handler
db 'ficom',2
dw fi_instruction-instruction_handler
db 'fidiv',6
dw fi_instruction-instruction_handler
db 'fimul',1
dw fi_instruction-instruction_handler
db 'finit',0E3h
dw finit_instruction-instruction_handler
db 'fistp',3
dw fild_instruction-instruction_handler
db 'fisub',4
dw fi_instruction-instruction_handler
db 'fldcw',5
dw fldcw_instruction-instruction_handler
db 'fldpi',101011b
dw simple_fpu_instruction-instruction_handler
db 'fmulp',1
dw faddp_instruction-instruction_handler
db 'fneni',0E0h
dw fninit_instruction-instruction_handler
db 'fprem',111000b
dw simple_fpu_instruction-instruction_handler
db 'fptan',110010b
dw simple_fpu_instruction-instruction_handler
db 'fsave',6
dw fsave_instruction-instruction_handler
db 'fsqrt',111010b
dw simple_fpu_instruction-instruction_handler
db 'fstcw',7
dw fstcw_instruction-instruction_handler
db 'fstsw',0
dw fstsw_instruction-instruction_handler
db 'fsubp',5
dw faddp_instruction-instruction_handler
db 'fsubr',5
dw basic_fpu_instruction-instruction_handler
db 'fucom',4
dw ffree_instruction-instruction_handler
db 'fwait',9Bh
dw simple_instruction-instruction_handler
db 'fyl2x',110001b
dw simple_fpu_instruction-instruction_handler
db 'icebp',0F1h
dw simple_instruction-instruction_handler
db 'iretd',0CFh
dw simple_instruction_32bit-instruction_handler
db 'iretq',0CFh
dw simple_instruction_64bit-instruction_handler
db 'iretw',0CFh
dw simple_instruction_16bit-instruction_handler
db 'jecxz',0E3h
dw loop_instruction_32bit-instruction_handler
db 'jrcxz',0E3h
dw loop_instruction_64bit-instruction_handler
db 'label',0
dw label_directive-instruction_handler
db 'lddqu',0
dw lddqu_instruction-instruction_handler
db 'leave',0C9h
dw simple_instruction-instruction_handler
db 'lodsb',0ACh
dw simple_instruction-instruction_handler
db 'lodsd',0ADh
dw simple_instruction_32bit-instruction_handler
db 'lodsq',0ADh
dw simple_instruction_64bit-instruction_handler
db 'lodsw',0ADh
dw simple_instruction_16bit-instruction_handler
db 'loopd',0E2h
dw loop_instruction_32bit-instruction_handler
db 'loope',0E1h
dw loop_instruction-instruction_handler
db 'loopq',0E2h
dw loop_instruction_64bit-instruction_handler
db 'loopw',0E2h
dw loop_instruction_16bit-instruction_handler
db 'loopz',0E1h
dw loop_instruction-instruction_handler
db 'lzcnt',0BDh
dw popcnt_instruction-instruction_handler
db 'maxpd',5Fh
dw sse_pd_instruction-instruction_handler
db 'maxps',5Fh
dw sse_ps_instruction-instruction_handler
db 'maxsd',5Fh
dw sse_sd_instruction-instruction_handler
db 'maxss',5Fh
dw sse_ss_instruction-instruction_handler
db 'minpd',5Dh
dw sse_pd_instruction-instruction_handler
db 'minps',5Dh
dw sse_ps_instruction-instruction_handler
db 'minsd',5Dh
dw sse_sd_instruction-instruction_handler
db 'minss',5Dh
dw sse_ss_instruction-instruction_handler
db 'movbe',0F0h
dw movbe_instruction-instruction_handler
db 'movsb',0A4h
dw simple_instruction-instruction_handler
db 'movsd',0
dw movsd_instruction-instruction_handler
db 'movsq',0A5h
dw simple_instruction_64bit-instruction_handler
db 'movss',0
dw movss_instruction-instruction_handler
db 'movsw',0A5h
dw simple_instruction_16bit-instruction_handler
db 'movsx',0BEh
dw movx_instruction-instruction_handler
db 'movzx',0B6h
dw movx_instruction-instruction_handler
db 'mulpd',59h
dw sse_pd_instruction-instruction_handler
db 'mulps',59h
dw sse_ps_instruction-instruction_handler
db 'mulsd',59h
dw sse_sd_instruction-instruction_handler
db 'mulss',59h
dw sse_ss_instruction-instruction_handler
db 'mwait',0C9h
dw monitor_instruction-instruction_handler
db 'outsb',6Eh
dw simple_instruction-instruction_handler
db 'outsd',6Fh
dw simple_instruction_32bit-instruction_handler
db 'outsw',6Fh
dw simple_instruction_16bit-instruction_handler
db 'pabsb',1Ch
dw ssse3_instruction-instruction_handler
db 'pabsd',1Eh
dw ssse3_instruction-instruction_handler
db 'pabsw',1Dh
dw ssse3_instruction-instruction_handler
db 'paddb',0FCh
dw basic_mmx_instruction-instruction_handler
db 'paddd',0FEh
dw basic_mmx_instruction-instruction_handler
db 'paddq',0D4h
dw basic_mmx_instruction-instruction_handler
db 'paddw',0FDh
dw basic_mmx_instruction-instruction_handler
db 'pandn',0DFh
dw basic_mmx_instruction-instruction_handler
db 'pause',0
dw pause_instruction-instruction_handler
db 'pavgb',0E0h
dw basic_mmx_instruction-instruction_handler
db 'pavgw',0E3h
dw basic_mmx_instruction-instruction_handler
db 'pf2id',1Dh
dw amd3dnow_instruction-instruction_handler
db 'pf2iw',1Ch
dw amd3dnow_instruction-instruction_handler
db 'pfacc',0AEh
dw amd3dnow_instruction-instruction_handler
db 'pfadd',9Eh
dw amd3dnow_instruction-instruction_handler
db 'pfmax',0A4h
dw amd3dnow_instruction-instruction_handler
db 'pfmin',94h
dw amd3dnow_instruction-instruction_handler
db 'pfmul',0B4h
dw amd3dnow_instruction-instruction_handler
db 'pfrcp',96h
dw amd3dnow_instruction-instruction_handler
db 'pfsub',9Ah
dw amd3dnow_instruction-instruction_handler
db 'pi2fd',0Dh
dw amd3dnow_instruction-instruction_handler
db 'pi2fw',0Ch
dw amd3dnow_instruction-instruction_handler
db 'popad',61h
dw simple_instruction_32bit_except64-instruction_handler
db 'popaw',61h
dw simple_instruction_16bit_except64-instruction_handler
db 'popfd',9Dh
dw simple_instruction_32bit_except64-instruction_handler
db 'popfq',9Dh
dw simple_instruction_only64-instruction_handler
db 'popfw',9Dh
dw simple_instruction_16bit-instruction_handler
db 'pslld',0F2h
dw mmx_bit_shift_instruction-instruction_handler
db 'psllq',0F3h
dw mmx_bit_shift_instruction-instruction_handler
db 'psllw',0F1h
dw mmx_bit_shift_instruction-instruction_handler
db 'psrad',0E2h
dw mmx_bit_shift_instruction-instruction_handler
db 'psraw',0E1h
dw mmx_bit_shift_instruction-instruction_handler
db 'psrld',0D2h
dw mmx_bit_shift_instruction-instruction_handler
db 'psrlq',0D3h
dw mmx_bit_shift_instruction-instruction_handler
db 'psrlw',0D1h
dw mmx_bit_shift_instruction-instruction_handler
db 'psubb',0F8h
dw basic_mmx_instruction-instruction_handler
db 'psubd',0FAh
dw basic_mmx_instruction-instruction_handler
db 'psubq',0FBh
dw basic_mmx_instruction-instruction_handler
db 'psubw',0F9h
dw basic_mmx_instruction-instruction_handler
db 'ptest',17h
dw sse4_instruction_38-instruction_handler
db 'pusha',60h
dw simple_instruction_except64-instruction_handler
db 'pushd',4
dw push_instruction-instruction_handler
db 'pushf',9Ch
dw simple_instruction-instruction_handler
db 'pushq',8
dw push_instruction-instruction_handler
db 'pushw',2
dw push_instruction-instruction_handler
db 'rcpps',53h
dw sse_ps_instruction-instruction_handler
db 'rcpss',53h
dw sse_ss_instruction-instruction_handler
db 'rdmsr',32h
dw simple_extended_instruction-instruction_handler
db 'rdpmc',33h
dw simple_extended_instruction-instruction_handler
db 'rdtsc',31h
dw simple_extended_instruction-instruction_handler
db 'repne',0F2h
dw prefix_instruction-instruction_handler
db 'repnz',0F2h
dw prefix_instruction-instruction_handler
db 'retfd',0CAh
dw ret_instruction_32bit-instruction_handler
db 'retfq',0CAh
dw ret_instruction_64bit-instruction_handler
db 'retfw',0CAh
dw ret_instruction_16bit-instruction_handler
db 'retnd',0C2h
dw ret_instruction_32bit_except64-instruction_handler
db 'retnq',0C2h
dw ret_instruction_only64-instruction_handler
db 'retnw',0C2h
dw ret_instruction_16bit-instruction_handler
db 'scasb',0AEh
dw simple_instruction-instruction_handler
db 'scasd',0AFh
dw simple_instruction_32bit-instruction_handler
db 'scasq',0AFh
dw simple_instruction_64bit-instruction_handler
db 'scasw',0AFh
dw simple_instruction_16bit-instruction_handler
db 'setae',93h
dw set_instruction-instruction_handler
db 'setbe',96h
dw set_instruction-instruction_handler
db 'setge',9Dh
dw set_instruction-instruction_handler
db 'setle',9Eh
dw set_instruction-instruction_handler
db 'setna',96h
dw set_instruction-instruction_handler
db 'setnb',93h
dw set_instruction-instruction_handler
db 'setnc',93h
dw set_instruction-instruction_handler
db 'setne',95h
dw set_instruction-instruction_handler
db 'setng',9Eh
dw set_instruction-instruction_handler
db 'setnl',9Dh
dw set_instruction-instruction_handler
db 'setno',91h
dw set_instruction-instruction_handler
db 'setnp',9Bh
dw set_instruction-instruction_handler
db 'setns',99h
dw set_instruction-instruction_handler
db 'setnz',95h
dw set_instruction-instruction_handler
db 'setpe',9Ah
dw set_instruction-instruction_handler
db 'setpo',9Bh
dw set_instruction-instruction_handler
db 'stack',0
dw stack_directive-instruction_handler
db 'store',0
dw store_directive-instruction_handler
db 'stosb',0AAh
dw simple_instruction-instruction_handler
db 'stosd',0ABh
dw simple_instruction_32bit-instruction_handler
db 'stosq',0ABh
dw simple_instruction_64bit-instruction_handler
db 'stosw',0ABh
dw simple_instruction_16bit-instruction_handler
db 'subpd',5Ch
dw sse_pd_instruction-instruction_handler
db 'subps',5Ch
dw sse_ps_instruction-instruction_handler
db 'subsd',5Ch
dw sse_sd_instruction-instruction_handler
db 'subss',5Ch
dw cmp_ps_instruction-instruction_handler
db 'cmpsb',0A6h
dw simple_instruction-instruction_handler
db 'cmpsd',-1
dw cmpsd_instruction-instruction_handler
db 'cmpsq',0A7h
dw simple_instruction_64bit-instruction_handler
db 'cmpss',-1
dw cmp_ss_instruction-instruction_handler
db 'cmpsw',0A7h
dw simple_instruction_16bit-instruction_handler
db 'cpuid',0A2h
dw simple_extended_instruction-instruction_handler
db 'crc32',0
dw crc32_instruction-instruction_handler
db 'divpd',5Eh
dw sse_pd_instruction-instruction_handler
db 'divps',5Eh
dw sse_ps_instruction-instruction_handler
db 'divsd',5Eh
dw sse_sd_instruction-instruction_handler
db 'divss',5Eh
dw sse_ss_instruction-instruction_handler
db 'enter',0
dw enter_instruction-instruction_handler
db 'entry',0
dw entry_directive-instruction_handler
db 'extrn',0
dw extrn_directive-instruction_handler
db 'extrq',0
dw extrq_instruction-instruction_handler
db 'f2xm1',110000b
dw simple_fpu_instruction-instruction_handler
db 'faddp',0
dw faddp_instruction-instruction_handler
db 'fbstp',6
dw fbld_instruction-instruction_handler
db 'fclex',0E2h
dw finit_instruction-instruction_handler
db 'fcomi',0F0h
dw fcomi_instruction-instruction_handler
db 'fcomp',3
dw basic_fpu_instruction-instruction_handler
db 'fdisi',0E1h
dw finit_instruction-instruction_handler
db 'fdivp',7
dw faddp_instruction-instruction_handler
db 'fdivr',7
dw basic_fpu_instruction-instruction_handler
db 'femms',0Eh
dw simple_extended_instruction-instruction_handler
db 'ffree',0
dw ffree_instruction-instruction_handler
db 'fiadd',0
dw fi_instruction-instruction_handler
db 'ficom',2
dw fi_instruction-instruction_handler
db 'fidiv',6
dw fi_instruction-instruction_handler
db 'fimul',1
dw fi_instruction-instruction_handler
db 'finit',0E3h
dw finit_instruction-instruction_handler
db 'fistp',3
dw fild_instruction-instruction_handler
db 'fisub',4
dw fi_instruction-instruction_handler
db 'fldcw',5
dw fldcw_instruction-instruction_handler
db 'fldpi',101011b
dw simple_fpu_instruction-instruction_handler
db 'fmulp',1
dw faddp_instruction-instruction_handler
db 'fneni',0E0h
dw fninit_instruction-instruction_handler
db 'fprem',111000b
dw simple_fpu_instruction-instruction_handler
db 'fptan',110010b
dw simple_fpu_instruction-instruction_handler
db 'fsave',6
dw fsave_instruction-instruction_handler
db 'fsqrt',111010b
dw simple_fpu_instruction-instruction_handler
db 'fstcw',7
dw fstcw_instruction-instruction_handler
db 'fstsw',0
dw fstsw_instruction-instruction_handler
db 'fsubp',5
dw faddp_instruction-instruction_handler
db 'fsubr',5
dw basic_fpu_instruction-instruction_handler
db 'fucom',4
dw ffree_instruction-instruction_handler
db 'fwait',9Bh
dw simple_instruction-instruction_handler
db 'fyl2x',110001b
dw simple_fpu_instruction-instruction_handler
db 'icebp',0F1h
dw simple_instruction-instruction_handler
db 'iretd',0CFh
dw simple_instruction_32bit-instruction_handler
db 'iretq',0CFh
dw simple_instruction_64bit-instruction_handler
db 'iretw',0CFh
dw simple_instruction_16bit-instruction_handler
db 'jecxz',0E3h
dw loop_instruction_32bit-instruction_handler
db 'jrcxz',0E3h
dw loop_instruction_64bit-instruction_handler
db 'label',0
dw label_directive-instruction_handler
db 'lddqu',0
dw lddqu_instruction-instruction_handler
db 'leave',0C9h
dw simple_instruction-instruction_handler
db 'lodsb',0ACh
dw simple_instruction-instruction_handler
db 'lodsd',0ADh
dw simple_instruction_32bit-instruction_handler
db 'lodsq',0ADh
dw simple_instruction_64bit-instruction_handler
db 'lodsw',0ADh
dw simple_instruction_16bit-instruction_handler
db 'loopd',0E2h
dw loop_instruction_32bit-instruction_handler
db 'loope',0E1h
dw loop_instruction-instruction_handler
db 'loopq',0E2h
dw loop_instruction_64bit-instruction_handler
db 'loopw',0E2h
dw loop_instruction_16bit-instruction_handler
db 'loopz',0E1h
dw loop_instruction-instruction_handler
db 'lzcnt',0BDh
dw popcnt_instruction-instruction_handler
db 'maxpd',5Fh
dw sse_pd_instruction-instruction_handler
db 'maxps',5Fh
dw sse_ps_instruction-instruction_handler
db 'maxsd',5Fh
dw sse_sd_instruction-instruction_handler
db 'maxss',5Fh
dw sse_ss_instruction-instruction_handler
db 'minpd',5Dh
dw sse_pd_instruction-instruction_handler
db 'minps',5Dh
dw sse_ps_instruction-instruction_handler
db 'minsd',5Dh
dw sse_sd_instruction-instruction_handler
db 'minss',5Dh
dw sse_ss_instruction-instruction_handler
db 'movbe',0F0h
dw movbe_instruction-instruction_handler
db 'movsb',0A4h
dw simple_instruction-instruction_handler
db 'movsd',0
dw movsd_instruction-instruction_handler
db 'movsq',0A5h
dw simple_instruction_64bit-instruction_handler
db 'movss',0
dw movss_instruction-instruction_handler
db 'movsw',0A5h
dw simple_instruction_16bit-instruction_handler
db 'movsx',0BEh
dw movx_instruction-instruction_handler
db 'movzx',0B6h
dw movx_instruction-instruction_handler
db 'mulpd',59h
dw sse_pd_instruction-instruction_handler
db 'mulps',59h
dw sse_ps_instruction-instruction_handler
db 'mulsd',59h
dw sse_sd_instruction-instruction_handler
db 'mulss',59h
dw sse_ss_instruction-instruction_handler
db 'mwait',0C9h
dw monitor_instruction-instruction_handler
db 'outsb',6Eh
dw simple_instruction-instruction_handler
db 'outsd',6Fh
dw simple_instruction_32bit-instruction_handler
db 'outsw',6Fh
dw simple_instruction_16bit-instruction_handler
db 'pabsb',1Ch
dw ssse3_instruction-instruction_handler
db 'pabsd',1Eh
dw ssse3_instruction-instruction_handler
db 'pabsw',1Dh
dw ssse3_instruction-instruction_handler
db 'paddb',0FCh
dw basic_mmx_instruction-instruction_handler
db 'paddd',0FEh
dw basic_mmx_instruction-instruction_handler
db 'paddq',0D4h
dw basic_mmx_instruction-instruction_handler
db 'paddw',0FDh
dw basic_mmx_instruction-instruction_handler
db 'pandn',0DFh
dw basic_mmx_instruction-instruction_handler
db 'pause',0
dw pause_instruction-instruction_handler
db 'pavgb',0E0h
dw basic_mmx_instruction-instruction_handler
db 'pavgw',0E3h
dw basic_mmx_instruction-instruction_handler
db 'pf2id',1Dh
dw amd3dnow_instruction-instruction_handler
db 'pf2iw',1Ch
dw amd3dnow_instruction-instruction_handler
db 'pfacc',0AEh
dw amd3dnow_instruction-instruction_handler
db 'pfadd',9Eh
dw amd3dnow_instruction-instruction_handler
db 'pfmax',0A4h
dw amd3dnow_instruction-instruction_handler
db 'pfmin',94h
dw amd3dnow_instruction-instruction_handler
db 'pfmul',0B4h
dw amd3dnow_instruction-instruction_handler
db 'pfrcp',96h
dw amd3dnow_instruction-instruction_handler
db 'pfsub',9Ah
dw amd3dnow_instruction-instruction_handler
db 'pi2fd',0Dh
dw amd3dnow_instruction-instruction_handler
db 'pi2fw',0Ch
dw amd3dnow_instruction-instruction_handler
db 'popad',61h
dw simple_instruction_32bit_except64-instruction_handler
db 'popaw',61h
dw simple_instruction_16bit_except64-instruction_handler
db 'popfd',9Dh
dw simple_instruction_32bit_except64-instruction_handler
db 'popfq',9Dh
dw simple_instruction_only64-instruction_handler
db 'popfw',9Dh
dw simple_instruction_16bit-instruction_handler
db 'pslld',0F2h
dw mmx_bit_shift_instruction-instruction_handler
db 'psllq',0F3h
dw mmx_bit_shift_instruction-instruction_handler
db 'psllw',0F1h
dw mmx_bit_shift_instruction-instruction_handler
db 'psrad',0E2h
dw mmx_bit_shift_instruction-instruction_handler
db 'psraw',0E1h
dw mmx_bit_shift_instruction-instruction_handler
db 'psrld',0D2h
dw mmx_bit_shift_instruction-instruction_handler
db 'psrlq',0D3h
dw mmx_bit_shift_instruction-instruction_handler
db 'psrlw',0D1h
dw mmx_bit_shift_instruction-instruction_handler
db 'psubb',0F8h
dw basic_mmx_instruction-instruction_handler
db 'psubd',0FAh
dw basic_mmx_instruction-instruction_handler
db 'psubq',0FBh
dw basic_mmx_instruction-instruction_handler
db 'psubw',0F9h
dw basic_mmx_instruction-instruction_handler
db 'ptest',17h
dw sse4_instruction_38-instruction_handler
db 'pusha',60h
dw simple_instruction_except64-instruction_handler
db 'pushd',4
dw push_instruction-instruction_handler
db 'pushf',9Ch
dw simple_instruction-instruction_handler
db 'pushq',8
dw push_instruction-instruction_handler
db 'pushw',2
dw push_instruction-instruction_handler
db 'rcpps',53h
dw sse_ps_instruction-instruction_handler
db 'rcpss',53h
dw sse_ss_instruction-instruction_handler
db 'rdmsr',32h
dw simple_extended_instruction-instruction_handler
db 'rdpmc',33h
dw simple_extended_instruction-instruction_handler
db 'rdtsc',31h
dw simple_extended_instruction-instruction_handler
db 'repne',0F2h
dw prefix_instruction-instruction_handler
db 'repnz',0F2h
dw prefix_instruction-instruction_handler
db 'retfd',0CAh
dw ret_instruction_32bit-instruction_handler
db 'retfq',0CAh
dw ret_instruction_64bit-instruction_handler
db 'retfw',0CAh
dw ret_instruction_16bit-instruction_handler
db 'retnd',0C2h
dw ret_instruction_32bit_except64-instruction_handler
db 'retnq',0C2h
dw ret_instruction_only64-instruction_handler
db 'retnw',0C2h
dw ret_instruction_16bit-instruction_handler
db 'scasb',0AEh
dw simple_instruction-instruction_handler
db 'scasd',0AFh
dw simple_instruction_32bit-instruction_handler
db 'scasq',0AFh
dw simple_instruction_64bit-instruction_handler
db 'scasw',0AFh
dw simple_instruction_16bit-instruction_handler
db 'setae',93h
dw set_instruction-instruction_handler
db 'setbe',96h
dw set_instruction-instruction_handler
db 'setge',9Dh
dw set_instruction-instruction_handler
db 'setle',9Eh
dw set_instruction-instruction_handler
db 'setna',96h
dw set_instruction-instruction_handler
db 'setnb',93h
dw set_instruction-instruction_handler
db 'setnc',93h
dw set_instruction-instruction_handler
db 'setne',95h
dw set_instruction-instruction_handler
db 'setng',9Eh
dw set_instruction-instruction_handler
db 'setnl',9Dh
dw set_instruction-instruction_handler
db 'setno',91h
dw set_instruction-instruction_handler
db 'setnp',9Bh
dw set_instruction-instruction_handler
db 'setns',99h
dw set_instruction-instruction_handler
db 'setnz',95h
dw set_instruction-instruction_handler
db 'setpe',9Ah
dw set_instruction-instruction_handler
db 'setpo',9Bh
dw set_instruction-instruction_handler
db 'stack',0
dw stack_directive-instruction_handler
db 'store',0
dw store_directive-instruction_handler
db 'stosb',0AAh
dw simple_instruction-instruction_handler
db 'stosd',0ABh
dw simple_instruction_32bit-instruction_handler
db 'stosq',0ABh
dw simple_instruction_64bit-instruction_handler
db 'stosw',0ABh
dw simple_instruction_16bit-instruction_handler
db 'subpd',5Ch
dw sse_pd_instruction-instruction_handler
db 'subps',5Ch
dw sse_ps_instruction-instruction_handler
db 'subsd',5Ch
dw sse_sd_instruction-instruction_handler
db 'subss',5Ch
dw sse_ss_instruction-instruction_handler
db 'times',0
dw times_directive-instruction_handler
db 'tzcnt',0BCh
1223,17 → 1223,17
db 'vdppd',41h
dw avx_128bit_instruction_3a_imm8-instruction_handler
db 'vdpps',40h
dw avx_instruction_3a_imm8-instruction_handler
db 'vmovd',0
dw avx_movd_instruction-instruction_handler
db 'vmovq',0
dw avx_movq_instruction-instruction_handler
db 'vmrun',0D8h
dw simple_svm_instruction-instruction_handler
db 'vmxon',6
dw vmxon_instruction-instruction_handler
db 'vorpd',56h
dw avx_pd_instruction-instruction_handler
dw avx_instruction_3a_imm8-instruction_handler
db 'vmovd',0
dw avx_movd_instruction-instruction_handler
db 'vmovq',0
dw avx_movq_instruction-instruction_handler
db 'vmrun',0D8h
dw simple_svm_instruction-instruction_handler
db 'vmxon',6
dw vmxon_instruction-instruction_handler
db 'vorpd',56h
dw avx_pd_instruction-instruction_handler
db 'vorps',56h
dw avx_ps_instruction-instruction_handler
db 'vpand',0DBh
1243,12 → 1243,12
db 'while',0
dw while_directive-instruction_handler
db 'wrmsr',30h
dw simple_extended_instruction-instruction_handler
db 'xlatb',0D7h
dw simple_instruction-instruction_handler
db 'xorpd',57h
dw sse_pd_instruction-instruction_handler
db 'xorps',57h
dw simple_extended_instruction-instruction_handler
db 'xlatb',0D7h
dw simple_instruction-instruction_handler
db 'xorpd',57h
dw sse_pd_instruction-instruction_handler
db 'xorps',57h
dw sse_ps_instruction-instruction_handler
db 'xsave',100b
dw fxsave_instruction-instruction_handler
1257,11 → 1257,11
instructions_6:
db 'aesdec',0DEh
dw sse4_instruction_38-instruction_handler
db 'aesenc',0DCh
dw sse4_instruction_38-instruction_handler
db 'aesimc',0DBh
dw sse4_instruction_38-instruction_handler
db 'andnpd',55h
db 'aesenc',0DCh
dw sse4_instruction_38-instruction_handler
db 'aesimc',0DBh
dw sse4_instruction_38-instruction_handler
db 'andnpd',55h
dw sse_pd_instruction-instruction_handler
db 'andnps',55h
dw sse_ps_instruction-instruction_handler
1306,92 → 1306,92
db 'comisd',2Fh
dw comisd_instruction-instruction_handler
db 'comiss',2Fh
dw comiss_instruction-instruction_handler
db 'fcmovb',0C0h
dw fcmov_instruction-instruction_handler
db 'fcmove',0C8h
dw fcmov_instruction-instruction_handler
db 'fcmovu',0D8h
dw fcmov_instruction-instruction_handler
db 'fcomip',0F0h
dw fcomip_instruction-instruction_handler
db 'fcompp',0
dw fcompp_instruction-instruction_handler
db 'fdivrp',6
dw faddp_instruction-instruction_handler
db 'ffreep',0
dw ffreep_instruction-instruction_handler
db 'ficomp',3
dw fi_instruction-instruction_handler
db 'fidivr',7
dw fi_instruction-instruction_handler
db 'fisttp',1
dw fild_instruction-instruction_handler
db 'fisubr',5
dw fi_instruction-instruction_handler
db 'fldenv',4
dw fldenv_instruction-instruction_handler
db 'fldl2e',101010b
dw simple_fpu_instruction-instruction_handler
db 'fldl2t',101001b
dw simple_fpu_instruction-instruction_handler
db 'fldlg2',101100b
dw simple_fpu_instruction-instruction_handler
db 'fldln2',101101b
dw simple_fpu_instruction-instruction_handler
db 'fnclex',0E2h
dw fninit_instruction-instruction_handler
db 'fndisi',0E1h
dw fninit_instruction-instruction_handler
db 'fninit',0E3h
dw fninit_instruction-instruction_handler
db 'fnsave',6
dw fnsave_instruction-instruction_handler
db 'fnstcw',7
dw fldcw_instruction-instruction_handler
db 'fnstsw',0
dw fnstsw_instruction-instruction_handler
db 'format',0
dw format_directive-instruction_handler
db 'fpatan',110011b
dw simple_fpu_instruction-instruction_handler
db 'fprem1',110101b
dw simple_fpu_instruction-instruction_handler
db 'frstor',4
dw fnsave_instruction-instruction_handler
db 'frstpm',0E5h
dw fninit_instruction-instruction_handler
db 'fsaved',6
dw fsave_instruction_32bit-instruction_handler
db 'fsavew',6
dw fsave_instruction_16bit-instruction_handler
db 'fscale',111101b
dw simple_fpu_instruction-instruction_handler
db 'fsetpm',0E4h
dw fninit_instruction-instruction_handler
db 'fstenv',6
dw fstenv_instruction-instruction_handler
db 'fsubrp',4
dw faddp_instruction-instruction_handler
db 'fucomi',0E8h
dw fcomi_instruction-instruction_handler
db 'fucomp',5
dw ffree_instruction-instruction_handler
db 'fxsave',0
dw fxsave_instruction-instruction_handler
db 'getsec',37h
dw simple_extended_instruction-instruction_handler
db 'haddpd',07Ch
dw sse_pd_instruction-instruction_handler
db 'haddps',07Ch
dw cvtpd2dq_instruction-instruction_handler
db 'hsubpd',07Dh
dw sse_pd_instruction-instruction_handler
db 'hsubps',07Dh
dw cvtpd2dq_instruction-instruction_handler
db 'invept',80h
dw vmx_inv_instruction-instruction_handler
db 'invlpg',0
dw comiss_instruction-instruction_handler
db 'fcmovb',0C0h
dw fcmov_instruction-instruction_handler
db 'fcmove',0C8h
dw fcmov_instruction-instruction_handler
db 'fcmovu',0D8h
dw fcmov_instruction-instruction_handler
db 'fcomip',0F0h
dw fcomip_instruction-instruction_handler
db 'fcompp',0
dw fcompp_instruction-instruction_handler
db 'fdivrp',6
dw faddp_instruction-instruction_handler
db 'ffreep',0
dw ffreep_instruction-instruction_handler
db 'ficomp',3
dw fi_instruction-instruction_handler
db 'fidivr',7
dw fi_instruction-instruction_handler
db 'fisttp',1
dw fild_instruction-instruction_handler
db 'fisubr',5
dw fi_instruction-instruction_handler
db 'fldenv',4
dw fldenv_instruction-instruction_handler
db 'fldl2e',101010b
dw simple_fpu_instruction-instruction_handler
db 'fldl2t',101001b
dw simple_fpu_instruction-instruction_handler
db 'fldlg2',101100b
dw simple_fpu_instruction-instruction_handler
db 'fldln2',101101b
dw simple_fpu_instruction-instruction_handler
db 'fnclex',0E2h
dw fninit_instruction-instruction_handler
db 'fndisi',0E1h
dw fninit_instruction-instruction_handler
db 'fninit',0E3h
dw fninit_instruction-instruction_handler
db 'fnsave',6
dw fnsave_instruction-instruction_handler
db 'fnstcw',7
dw fldcw_instruction-instruction_handler
db 'fnstsw',0
dw fnstsw_instruction-instruction_handler
db 'format',0
dw format_directive-instruction_handler
db 'fpatan',110011b
dw simple_fpu_instruction-instruction_handler
db 'fprem1',110101b
dw simple_fpu_instruction-instruction_handler
db 'frstor',4
dw fnsave_instruction-instruction_handler
db 'frstpm',0E5h
dw fninit_instruction-instruction_handler
db 'fsaved',6
dw fsave_instruction_32bit-instruction_handler
db 'fsavew',6
dw fsave_instruction_16bit-instruction_handler
db 'fscale',111101b
dw simple_fpu_instruction-instruction_handler
db 'fsetpm',0E4h
dw fninit_instruction-instruction_handler
db 'fstenv',6
dw fstenv_instruction-instruction_handler
db 'fsubrp',4
dw faddp_instruction-instruction_handler
db 'fucomi',0E8h
dw fcomi_instruction-instruction_handler
db 'fucomp',5
dw ffree_instruction-instruction_handler
db 'fxsave',0
dw fxsave_instruction-instruction_handler
db 'getsec',37h
dw simple_extended_instruction-instruction_handler
db 'haddpd',07Ch
dw sse_pd_instruction-instruction_handler
db 'haddps',07Ch
dw cvtpd2dq_instruction-instruction_handler
db 'hsubpd',07Dh
dw sse_pd_instruction-instruction_handler
db 'hsubps',07Dh
dw cvtpd2dq_instruction-instruction_handler
db 'invept',80h
dw vmx_inv_instruction-instruction_handler
db 'invlpg',0
dw invlpg_instruction-instruction_handler
db 'lfence',0E8h
dw fence_instruction-instruction_handler
1400,17 → 1400,17
db 'looped',0E1h
dw loop_instruction_32bit-instruction_handler
db 'loopeq',0E1h
dw loop_instruction_64bit-instruction_handler
db 'loopew',0E1h
dw loop_instruction_16bit-instruction_handler
db 'loopne',0E0h
dw loop_instruction-instruction_handler
db 'loopnz',0E0h
dw loop_instruction-instruction_handler
db 'loopzd',0E1h
dw loop_instruction_32bit-instruction_handler
db 'loopzq',0E1h
dw loop_instruction_64bit-instruction_handler
db 'loopew',0E1h
dw loop_instruction_16bit-instruction_handler
db 'loopne',0E0h
dw loop_instruction-instruction_handler
db 'loopnz',0E0h
dw loop_instruction-instruction_handler
db 'loopzd',0E1h
dw loop_instruction_32bit-instruction_handler
db 'loopzq',0E1h
dw loop_instruction_64bit-instruction_handler
db 'loopzw',0E1h
dw loop_instruction_16bit-instruction_handler
db 'lwpins',0
1420,156 → 1420,156
db 'mfence',0F0h
dw fence_instruction-instruction_handler
db 'movapd',28h
dw movpd_instruction-instruction_handler
db 'movaps',28h
dw movps_instruction-instruction_handler
db 'movdqa',66h
dw movdq_instruction-instruction_handler
db 'movdqu',0F3h
dw movdq_instruction-instruction_handler
db 'movhpd',16h
dw movlpd_instruction-instruction_handler
db 'movhps',16h
dw movlps_instruction-instruction_handler
db 'movlpd',12h
dw movlpd_instruction-instruction_handler
db 'movlps',12h
dw movlps_instruction-instruction_handler
db 'movnti',0C3h
dw movnti_instruction-instruction_handler
db 'movntq',0E7h
dw movntq_instruction-instruction_handler
db 'movsxd',63h
dw movsxd_instruction-instruction_handler
db 'movupd',10h
dw movpd_instruction-instruction_handler
db 'movups',10h
dw movps_instruction-instruction_handler
db 'paddsb',0ECh
dw basic_mmx_instruction-instruction_handler
db 'paddsw',0EDh
dw basic_mmx_instruction-instruction_handler
db 'pextrb',14h
dw pextrb_instruction-instruction_handler
db 'pextrd',16h
dw pextrd_instruction-instruction_handler
db 'pextrq',16h
dw pextrq_instruction-instruction_handler
db 'pextrw',15h
dw pextrw_instruction-instruction_handler
db 'pfnacc',8Ah
dw amd3dnow_instruction-instruction_handler
db 'pfsubr',0AAh
dw amd3dnow_instruction-instruction_handler
db 'phaddd',2
dw ssse3_instruction-instruction_handler
db 'phaddw',1
dw ssse3_instruction-instruction_handler
db 'phsubd',6
dw ssse3_instruction-instruction_handler
db 'phsubw',5
dw ssse3_instruction-instruction_handler
db 'pinsrb',20h
dw pinsrb_instruction-instruction_handler
db 'pinsrd',22h
dw pinsrd_instruction-instruction_handler
db 'pinsrq',22h
dw pinsrq_instruction-instruction_handler
db 'pinsrw',0C4h
dw pinsrw_instruction-instruction_handler
db 'pmaxsb',3Ch
dw sse4_instruction_38-instruction_handler
db 'pmaxsd',3Dh
dw sse4_instruction_38-instruction_handler
db 'pmaxsw',0EEh
dw basic_mmx_instruction-instruction_handler
db 'pmaxub',0DEh
dw basic_mmx_instruction-instruction_handler
db 'pmaxud',3Fh
dw sse4_instruction_38-instruction_handler
db 'pmaxuw',3Eh
dw sse4_instruction_38-instruction_handler
db 'pminsb',38h
dw sse4_instruction_38-instruction_handler
db 'pminsd',39h
dw sse4_instruction_38-instruction_handler
db 'pminsw',0EAh
dw basic_mmx_instruction-instruction_handler
db 'pminub',0DAh
dw basic_mmx_instruction-instruction_handler
db 'pminud',3Bh
dw sse4_instruction_38-instruction_handler
db 'pminuw',3Ah
dw sse4_instruction_38-instruction_handler
db 'pmuldq',28h
dw sse4_instruction_38-instruction_handler
db 'pmulhw',0E5h
dw basic_mmx_instruction-instruction_handler
db 'pmulld',40h
dw sse4_instruction_38-instruction_handler
db 'pmullw',0D5h
dw basic_mmx_instruction-instruction_handler
db 'popcnt',0B8h
dw popcnt_instruction-instruction_handler
db 'psadbw',0F6h
dw basic_mmx_instruction-instruction_handler
db 'pshufb',0
dw ssse3_instruction-instruction_handler
db 'pshufd',66h
dw pshufd_instruction-instruction_handler
db 'pshufw',0
dw pshufw_instruction-instruction_handler
db 'psignb',8
dw ssse3_instruction-instruction_handler
db 'psignd',0Ah
dw ssse3_instruction-instruction_handler
db 'psignw',9
dw ssse3_instruction-instruction_handler
db 'pslldq',111b
dw pslldq_instruction-instruction_handler
db 'psrldq',011b
dw pslldq_instruction-instruction_handler
db 'psubsb',0E8h
dw basic_mmx_instruction-instruction_handler
db 'psubsw',0E9h
dw basic_mmx_instruction-instruction_handler
db 'pswapd',0BBh
dw amd3dnow_instruction-instruction_handler
db 'public',0
dw public_directive-instruction_handler
db 'pushad',60h
dw simple_instruction_32bit_except64-instruction_handler
db 'pushaw',60h
dw simple_instruction_16bit_except64-instruction_handler
db 'pushfd',9Ch
dw simple_instruction_32bit_except64-instruction_handler
db 'pushfq',9Ch
dw simple_instruction_only64-instruction_handler
db 'pushfw',9Ch
dw simple_instruction_16bit-instruction_handler
db 'rdmsrq',32h
dw simple_extended_instruction_64bit-instruction_handler
db 'rdrand',110b
dw rdrand_instruction-instruction_handler
db 'rdtscp',1
dw rdtscp_instruction-instruction_handler
db 'repeat',0
dw repeat_directive-instruction_handler
db 'setalc',0D6h
dw simple_instruction_except64-instruction_handler
db 'setnae',92h
dw set_instruction-instruction_handler
db 'setnbe',97h
dw set_instruction-instruction_handler
db 'setnge',9Ch
dw set_instruction-instruction_handler
db 'setnle',9Fh
dw set_instruction-instruction_handler
db 'sfence',0F8h
dw fence_instruction-instruction_handler
db 'shufpd',0C6h
dw sse_pd_instruction_imm8-instruction_handler
db 'shufps',0C6h
dw movpd_instruction-instruction_handler
db 'movaps',28h
dw movps_instruction-instruction_handler
db 'movdqa',66h
dw movdq_instruction-instruction_handler
db 'movdqu',0F3h
dw movdq_instruction-instruction_handler
db 'movhpd',16h
dw movlpd_instruction-instruction_handler
db 'movhps',16h
dw movlps_instruction-instruction_handler
db 'movlpd',12h
dw movlpd_instruction-instruction_handler
db 'movlps',12h
dw movlps_instruction-instruction_handler
db 'movnti',0C3h
dw movnti_instruction-instruction_handler
db 'movntq',0E7h
dw movntq_instruction-instruction_handler
db 'movsxd',63h
dw movsxd_instruction-instruction_handler
db 'movupd',10h
dw movpd_instruction-instruction_handler
db 'movups',10h
dw movps_instruction-instruction_handler
db 'paddsb',0ECh
dw basic_mmx_instruction-instruction_handler
db 'paddsw',0EDh
dw basic_mmx_instruction-instruction_handler
db 'pextrb',14h
dw pextrb_instruction-instruction_handler
db 'pextrd',16h
dw pextrd_instruction-instruction_handler
db 'pextrq',16h
dw pextrq_instruction-instruction_handler
db 'pextrw',15h
dw pextrw_instruction-instruction_handler
db 'pfnacc',8Ah
dw amd3dnow_instruction-instruction_handler
db 'pfsubr',0AAh
dw amd3dnow_instruction-instruction_handler
db 'phaddd',2
dw ssse3_instruction-instruction_handler
db 'phaddw',1
dw ssse3_instruction-instruction_handler
db 'phsubd',6
dw ssse3_instruction-instruction_handler
db 'phsubw',5
dw ssse3_instruction-instruction_handler
db 'pinsrb',20h
dw pinsrb_instruction-instruction_handler
db 'pinsrd',22h
dw pinsrd_instruction-instruction_handler
db 'pinsrq',22h
dw pinsrq_instruction-instruction_handler
db 'pinsrw',0C4h
dw pinsrw_instruction-instruction_handler
db 'pmaxsb',3Ch
dw sse4_instruction_38-instruction_handler
db 'pmaxsd',3Dh
dw sse4_instruction_38-instruction_handler
db 'pmaxsw',0EEh
dw basic_mmx_instruction-instruction_handler
db 'pmaxub',0DEh
dw basic_mmx_instruction-instruction_handler
db 'pmaxud',3Fh
dw sse4_instruction_38-instruction_handler
db 'pmaxuw',3Eh
dw sse4_instruction_38-instruction_handler
db 'pminsb',38h
dw sse4_instruction_38-instruction_handler
db 'pminsd',39h
dw sse4_instruction_38-instruction_handler
db 'pminsw',0EAh
dw basic_mmx_instruction-instruction_handler
db 'pminub',0DAh
dw basic_mmx_instruction-instruction_handler
db 'pminud',3Bh
dw sse4_instruction_38-instruction_handler
db 'pminuw',3Ah
dw sse4_instruction_38-instruction_handler
db 'pmuldq',28h
dw sse4_instruction_38-instruction_handler
db 'pmulhw',0E5h
dw basic_mmx_instruction-instruction_handler
db 'pmulld',40h
dw sse4_instruction_38-instruction_handler
db 'pmullw',0D5h
dw basic_mmx_instruction-instruction_handler
db 'popcnt',0B8h
dw popcnt_instruction-instruction_handler
db 'psadbw',0F6h
dw basic_mmx_instruction-instruction_handler
db 'pshufb',0
dw ssse3_instruction-instruction_handler
db 'pshufd',66h
dw pshufd_instruction-instruction_handler
db 'pshufw',0
dw pshufw_instruction-instruction_handler
db 'psignb',8
dw ssse3_instruction-instruction_handler
db 'psignd',0Ah
dw ssse3_instruction-instruction_handler
db 'psignw',9
dw ssse3_instruction-instruction_handler
db 'pslldq',111b
dw pslldq_instruction-instruction_handler
db 'psrldq',011b
dw pslldq_instruction-instruction_handler
db 'psubsb',0E8h
dw basic_mmx_instruction-instruction_handler
db 'psubsw',0E9h
dw basic_mmx_instruction-instruction_handler
db 'pswapd',0BBh
dw amd3dnow_instruction-instruction_handler
db 'public',0
dw public_directive-instruction_handler
db 'pushad',60h
dw simple_instruction_32bit_except64-instruction_handler
db 'pushaw',60h
dw simple_instruction_16bit_except64-instruction_handler
db 'pushfd',9Ch
dw simple_instruction_32bit_except64-instruction_handler
db 'pushfq',9Ch
dw simple_instruction_only64-instruction_handler
db 'pushfw',9Ch
dw simple_instruction_16bit-instruction_handler
db 'rdmsrq',32h
dw simple_extended_instruction_64bit-instruction_handler
db 'rdrand',110b
dw rdrand_instruction-instruction_handler
db 'rdtscp',1
dw rdtscp_instruction-instruction_handler
db 'repeat',0
dw repeat_directive-instruction_handler
db 'setalc',0D6h
dw simple_instruction_except64-instruction_handler
db 'setnae',92h
dw set_instruction-instruction_handler
db 'setnbe',97h
dw set_instruction-instruction_handler
db 'setnge',9Ch
dw set_instruction-instruction_handler
db 'setnle',9Fh
dw set_instruction-instruction_handler
db 'sfence',0F8h
dw fence_instruction-instruction_handler
db 'shufpd',0C6h
dw sse_pd_instruction_imm8-instruction_handler
db 'shufps',0C6h
dw sse_ps_instruction_imm8-instruction_handler
db 'skinit',0
dw skinit_instruction-instruction_handler
1578,12 → 1578,12
db 'sqrtpd',51h
dw sse_pd_instruction-instruction_handler
db 'sqrtps',51h
dw sse_ps_instruction-instruction_handler
db 'sqrtsd',51h
dw sse_sd_instruction-instruction_handler
db 'sqrtss',51h
dw sse_ss_instruction-instruction_handler
db 'swapgs',0
dw sse_ps_instruction-instruction_handler
db 'sqrtsd',51h
dw sse_sd_instruction-instruction_handler
db 'sqrtss',51h
dw sse_ss_instruction-instruction_handler
db 'swapgs',0
dw swapgs_instruction-instruction_handler
db 'sysret',07h
dw simple_extended_instruction-instruction_handler
1592,69 → 1592,69
db 'vaddpd',58h
dw avx_pd_instruction-instruction_handler
db 'vaddps',58h
dw avx_ps_instruction-instruction_handler
db 'vaddsd',58h
dw avx_sd_instruction-instruction_handler
db 'vaddss',58h
dw avx_ss_instruction-instruction_handler
db 'vandpd',54h
dw avx_pd_instruction-instruction_handler
db 'vandps',54h
dw avx_ps_instruction-instruction_handler
db 'vcmppd',-1
dw avx_cmp_pd_instruction-instruction_handler
db 'vcmpps',-1
dw avx_cmp_ps_instruction-instruction_handler
db 'vcmpsd',-1
dw avx_cmp_sd_instruction-instruction_handler
db 'vcmpss',-1
dw avx_cmp_ss_instruction-instruction_handler
db 'vdivpd',5Eh
dw avx_pd_instruction-instruction_handler
db 'vdivps',5Eh
dw avx_ps_instruction-instruction_handler
db 'vdivsd',5Eh
dw avx_sd_instruction-instruction_handler
db 'vdivss',5Eh
dw avx_ss_instruction-instruction_handler
db 'vlddqu',0F0h
dw avx_lddqu_instruction-instruction_handler
db 'vmaxpd',5Fh
dw avx_pd_instruction-instruction_handler
db 'vmaxps',5Fh
dw avx_ps_instruction-instruction_handler
db 'vmaxsd',5Fh
dw avx_sd_instruction-instruction_handler
db 'vmaxss',5Fh
dw avx_ss_instruction-instruction_handler
db 'vmcall',0C1h
dw simple_vmx_instruction-instruction_handler
db 'vminpd',5Dh
dw avx_pd_instruction-instruction_handler
db 'vminps',5Dh
dw avx_ps_instruction-instruction_handler
db 'vminsd',5Dh
dw avx_sd_instruction-instruction_handler
db 'vminss',5Dh
dw avx_ss_instruction-instruction_handler
db 'vmload',0DAh
dw simple_svm_instruction-instruction_handler
db 'vmovsd',0
dw avx_movsd_instruction-instruction_handler
db 'vmovss',0
dw avx_movss_instruction-instruction_handler
db 'vmread',0
dw vmread_instruction-instruction_handler
db 'vmsave',0DBh
dw simple_svm_instruction-instruction_handler
db 'vmulpd',59h
dw avx_pd_instruction-instruction_handler
db 'vmulps',59h
dw avx_ps_instruction-instruction_handler
db 'vmulsd',59h
dw avx_sd_instruction-instruction_handler
db 'vmulss',59h
dw avx_ss_instruction-instruction_handler
dw avx_ps_instruction-instruction_handler
db 'vaddsd',58h
dw avx_sd_instruction-instruction_handler
db 'vaddss',58h
dw avx_ss_instruction-instruction_handler
db 'vandpd',54h
dw avx_pd_instruction-instruction_handler
db 'vandps',54h
dw avx_ps_instruction-instruction_handler
db 'vcmppd',-1
dw avx_cmp_pd_instruction-instruction_handler
db 'vcmpps',-1
dw avx_cmp_ps_instruction-instruction_handler
db 'vcmpsd',-1
dw avx_cmp_sd_instruction-instruction_handler
db 'vcmpss',-1
dw avx_cmp_ss_instruction-instruction_handler
db 'vdivpd',5Eh
dw avx_pd_instruction-instruction_handler
db 'vdivps',5Eh
dw avx_ps_instruction-instruction_handler
db 'vdivsd',5Eh
dw avx_sd_instruction-instruction_handler
db 'vdivss',5Eh
dw avx_ss_instruction-instruction_handler
db 'vlddqu',0F0h
dw avx_lddqu_instruction-instruction_handler
db 'vmaxpd',5Fh
dw avx_pd_instruction-instruction_handler
db 'vmaxps',5Fh
dw avx_ps_instruction-instruction_handler
db 'vmaxsd',5Fh
dw avx_sd_instruction-instruction_handler
db 'vmaxss',5Fh
dw avx_ss_instruction-instruction_handler
db 'vmcall',0C1h
dw simple_vmx_instruction-instruction_handler
db 'vminpd',5Dh
dw avx_pd_instruction-instruction_handler
db 'vminps',5Dh
dw avx_ps_instruction-instruction_handler
db 'vminsd',5Dh
dw avx_sd_instruction-instruction_handler
db 'vminss',5Dh
dw avx_ss_instruction-instruction_handler
db 'vmload',0DAh
dw simple_svm_instruction-instruction_handler
db 'vmovsd',0
dw avx_movsd_instruction-instruction_handler
db 'vmovss',0
dw avx_movss_instruction-instruction_handler
db 'vmread',0
dw vmread_instruction-instruction_handler
db 'vmsave',0DBh
dw simple_svm_instruction-instruction_handler
db 'vmulpd',59h
dw avx_pd_instruction-instruction_handler
db 'vmulps',59h
dw avx_ps_instruction-instruction_handler
db 'vmulsd',59h
dw avx_sd_instruction-instruction_handler
db 'vmulss',59h
dw avx_ss_instruction-instruction_handler
db 'vmxoff',0C4h
dw simple_vmx_instruction-instruction_handler
db 'vpabsb',1Ch
1680,10 → 1680,10
db 'vpcmov',0A2h
dw vpcmov_instruction-instruction_handler
db 'vpcomb',-1
dw xop_pcom_b_instruction-instruction_handler
db 'vpcomd',-1
dw xop_pcom_d_instruction-instruction_handler
db 'vpcomq',-1
dw xop_pcom_b_instruction-instruction_handler
db 'vpcomd',-1
dw xop_pcom_d_instruction-instruction_handler
db 'vpcomq',-1
dw xop_pcom_q_instruction-instruction_handler
db 'vpcomw',-1
dw xop_pcom_w_instruction-instruction_handler
1694,43 → 1694,43
db 'vpperm',0A3h
dw xop_128bit_instruction-instruction_handler
db 'vprotb',90h
dw xop_shift_instruction-instruction_handler
db 'vprotd',92h
dw xop_shift_instruction-instruction_handler
db 'vprotq',93h
dw xop_shift_instruction-instruction_handler
db 'vprotw',91h
dw xop_shift_instruction-instruction_handler
db 'vpshab',98h
dw xop_shift_instruction-instruction_handler
db 'vpshad',9Ah
dw xop_shift_instruction-instruction_handler
db 'vpshaq',9Bh
dw xop_shift_instruction-instruction_handler
db 'vpshaw',99h
dw xop_shift_instruction-instruction_handler
db 'vpshlb',94h
dw xop_shift_instruction-instruction_handler
db 'vpshld',96h
dw xop_shift_instruction-instruction_handler
db 'vpshlq',97h
dw xop_shift_instruction-instruction_handler
db 'vpshlw',95h
dw xop_shift_instruction-instruction_handler
db 'vpslld',0F2h
dw avx_bit_shift_instruction-instruction_handler
db 'vpsllq',0F3h
dw avx_bit_shift_instruction-instruction_handler
db 'vpsllw',0F1h
dw avx_bit_shift_instruction-instruction_handler
db 'vpsrad',0E2h
dw avx_bit_shift_instruction-instruction_handler
db 'vpsraw',0E1h
dw avx_bit_shift_instruction-instruction_handler
db 'vpsrld',0D2h
dw avx_bit_shift_instruction-instruction_handler
db 'vpsrlq',0D3h
dw avx_bit_shift_instruction-instruction_handler
dw xop_shift_instruction-instruction_handler
db 'vprotd',92h
dw xop_shift_instruction-instruction_handler
db 'vprotq',93h
dw xop_shift_instruction-instruction_handler
db 'vprotw',91h
dw xop_shift_instruction-instruction_handler
db 'vpshab',98h
dw xop_shift_instruction-instruction_handler
db 'vpshad',9Ah
dw xop_shift_instruction-instruction_handler
db 'vpshaq',9Bh
dw xop_shift_instruction-instruction_handler
db 'vpshaw',99h
dw xop_shift_instruction-instruction_handler
db 'vpshlb',94h
dw xop_shift_instruction-instruction_handler
db 'vpshld',96h
dw xop_shift_instruction-instruction_handler
db 'vpshlq',97h
dw xop_shift_instruction-instruction_handler
db 'vpshlw',95h
dw xop_shift_instruction-instruction_handler
db 'vpslld',0F2h
dw avx_bit_shift_instruction-instruction_handler
db 'vpsllq',0F3h
dw avx_bit_shift_instruction-instruction_handler
db 'vpsllw',0F1h
dw avx_bit_shift_instruction-instruction_handler
db 'vpsrad',0E2h
dw avx_bit_shift_instruction-instruction_handler
db 'vpsraw',0E1h
dw avx_bit_shift_instruction-instruction_handler
db 'vpsrld',0D2h
dw avx_bit_shift_instruction-instruction_handler
db 'vpsrlq',0D3h
dw avx_bit_shift_instruction-instruction_handler
db 'vpsrlw',0D1h
dw avx_bit_shift_instruction-instruction_handler
db 'vpsubb',0F8h
1744,22 → 1744,22
db 'vptest',17h
dw avx_single_source_instruction_38-instruction_handler
db 'vrcpps',53h
dw avx_single_source_ps_instruction-instruction_handler
db 'vrcpss',53h
dw avx_ss_instruction-instruction_handler
db 'vsubpd',5Ch
dw avx_pd_instruction-instruction_handler
db 'vsubps',5Ch
dw avx_ps_instruction-instruction_handler
db 'vsubsd',5Ch
dw avx_sd_instruction-instruction_handler
db 'vsubss',5Ch
dw avx_ss_instruction-instruction_handler
db 'vxorpd',57h
dw avx_pd_instruction-instruction_handler
db 'vxorps',57h
dw avx_ps_instruction-instruction_handler
db 'wbinvd',9
dw avx_single_source_ps_instruction-instruction_handler
db 'vrcpss',53h
dw avx_ss_instruction-instruction_handler
db 'vsubpd',5Ch
dw avx_pd_instruction-instruction_handler
db 'vsubps',5Ch
dw avx_ps_instruction-instruction_handler
db 'vsubsd',5Ch
dw avx_sd_instruction-instruction_handler
db 'vsubss',5Ch
dw avx_ss_instruction-instruction_handler
db 'vxorpd',57h
dw avx_pd_instruction-instruction_handler
db 'vxorps',57h
dw avx_ps_instruction-instruction_handler
db 'wbinvd',9
dw simple_extended_instruction-instruction_handler
db 'wrmsrq',30h
dw simple_extended_instruction_64bit-instruction_handler
1770,7 → 1770,7
db 'xgetbv',0D0h
dw simple_vmx_instruction-instruction_handler
db 'xrstor',101b
dw fxsave_instruction-instruction_handler
dw fxsave_instruction-instruction_handler
db 'xsetbv',0D1h
dw simple_vmx_instruction-instruction_handler
instructions_7:
1795,76 → 1795,76
db 'cmpeqpd',0
dw cmp_pd_instruction-instruction_handler
db 'cmpeqps',0
dw cmp_ps_instruction-instruction_handler
db 'cmpeqsd',0
dw cmp_sd_instruction-instruction_handler
db 'cmpeqss',0
dw cmp_ss_instruction-instruction_handler
db 'cmplepd',2
dw cmp_pd_instruction-instruction_handler
db 'cmpleps',2
dw cmp_ps_instruction-instruction_handler
db 'cmplesd',2
dw cmp_sd_instruction-instruction_handler
db 'cmpless',2
dw cmp_ss_instruction-instruction_handler
db 'cmpltpd',1
dw cmp_pd_instruction-instruction_handler
db 'cmpltps',1
dw cmp_ps_instruction-instruction_handler
db 'cmpltsd',1
dw cmp_sd_instruction-instruction_handler
db 'cmpltss',1
dw cmp_ss_instruction-instruction_handler
db 'cmpxchg',0B0h
dw basic_486_instruction-instruction_handler
db 'display',0
dw display_directive-instruction_handler
db 'fcmovbe',0D0h
dw fcmov_instruction-instruction_handler
db 'fcmovnb',0C0h
dw fcomi_instruction-instruction_handler
db 'fcmovne',0C8h
dw fcomi_instruction-instruction_handler
db 'fcmovnu',0D8h
dw fcomi_instruction-instruction_handler
db 'fdecstp',110110b
dw simple_fpu_instruction-instruction_handler
db 'fincstp',110111b
dw simple_fpu_instruction-instruction_handler
db 'fldenvd',4
dw fldenv_instruction_32bit-instruction_handler
db 'fldenvw',4
dw fldenv_instruction_16bit-instruction_handler
db 'fnsaved',6
dw fnsave_instruction_32bit-instruction_handler
db 'fnsavew',6
dw fnsave_instruction_16bit-instruction_handler
db 'fnstenv',6
dw fldenv_instruction-instruction_handler
db 'frndint',111100b
dw simple_fpu_instruction-instruction_handler
db 'frstord',4
dw fnsave_instruction_32bit-instruction_handler
db 'frstorw',4
dw fnsave_instruction_16bit-instruction_handler
db 'fsincos',111011b
dw simple_fpu_instruction-instruction_handler
db 'fstenvd',6
dw fstenv_instruction_32bit-instruction_handler
db 'fstenvw',6
dw fstenv_instruction_16bit-instruction_handler
db 'fucomip',0E8h
dw fcomip_instruction-instruction_handler
db 'fucompp',0
dw fucompp_instruction-instruction_handler
db 'fxrstor',1
dw fxsave_instruction-instruction_handler
db 'fxtract',110100b
dw simple_fpu_instruction-instruction_handler
db 'fyl2xp1',111001b
dw simple_fpu_instruction-instruction_handler
db 'insertq',0
dw cmp_ps_instruction-instruction_handler
db 'cmpeqsd',0
dw cmp_sd_instruction-instruction_handler
db 'cmpeqss',0
dw cmp_ss_instruction-instruction_handler
db 'cmplepd',2
dw cmp_pd_instruction-instruction_handler
db 'cmpleps',2
dw cmp_ps_instruction-instruction_handler
db 'cmplesd',2
dw cmp_sd_instruction-instruction_handler
db 'cmpless',2
dw cmp_ss_instruction-instruction_handler
db 'cmpltpd',1
dw cmp_pd_instruction-instruction_handler
db 'cmpltps',1
dw cmp_ps_instruction-instruction_handler
db 'cmpltsd',1
dw cmp_sd_instruction-instruction_handler
db 'cmpltss',1
dw cmp_ss_instruction-instruction_handler
db 'cmpxchg',0B0h
dw basic_486_instruction-instruction_handler
db 'display',0
dw display_directive-instruction_handler
db 'fcmovbe',0D0h
dw fcmov_instruction-instruction_handler
db 'fcmovnb',0C0h
dw fcomi_instruction-instruction_handler
db 'fcmovne',0C8h
dw fcomi_instruction-instruction_handler
db 'fcmovnu',0D8h
dw fcomi_instruction-instruction_handler
db 'fdecstp',110110b
dw simple_fpu_instruction-instruction_handler
db 'fincstp',110111b
dw simple_fpu_instruction-instruction_handler
db 'fldenvd',4
dw fldenv_instruction_32bit-instruction_handler
db 'fldenvw',4
dw fldenv_instruction_16bit-instruction_handler
db 'fnsaved',6
dw fnsave_instruction_32bit-instruction_handler
db 'fnsavew',6
dw fnsave_instruction_16bit-instruction_handler
db 'fnstenv',6
dw fldenv_instruction-instruction_handler
db 'frndint',111100b
dw simple_fpu_instruction-instruction_handler
db 'frstord',4
dw fnsave_instruction_32bit-instruction_handler
db 'frstorw',4
dw fnsave_instruction_16bit-instruction_handler
db 'fsincos',111011b
dw simple_fpu_instruction-instruction_handler
db 'fstenvd',6
dw fstenv_instruction_32bit-instruction_handler
db 'fstenvw',6
dw fstenv_instruction_16bit-instruction_handler
db 'fucomip',0E8h
dw fcomip_instruction-instruction_handler
db 'fucompp',0
dw fucompp_instruction-instruction_handler
db 'fxrstor',1
dw fxsave_instruction-instruction_handler
db 'fxtract',110100b
dw simple_fpu_instruction-instruction_handler
db 'fyl2xp1',111001b
dw simple_fpu_instruction-instruction_handler
db 'insertq',0
dw insertq_instruction-instruction_handler
db 'invlpga',0DFh
dw invlpga_instruction-instruction_handler
1873,187 → 1873,187
db 'invvpid',81h
dw vmx_inv_instruction-instruction_handler
db 'ldmxcsr',10b
dw fxsave_instruction-instruction_handler
db 'loopned',0E0h
dw loop_instruction_32bit-instruction_handler
db 'loopneq',0E0h
dw loop_instruction_64bit-instruction_handler
db 'loopnew',0E0h
dw loop_instruction_16bit-instruction_handler
db 'loopnzd',0E0h
dw loop_instruction_32bit-instruction_handler
db 'loopnzq',0E0h
dw loop_instruction_64bit-instruction_handler
db 'loopnzw',0E0h
dw loop_instruction_16bit-instruction_handler
db 'monitor',0C8h
dw monitor_instruction-instruction_handler
db 'movddup',12h
dw sse_sd_instruction-instruction_handler
db 'movdq2q',0
dw movdq2q_instruction-instruction_handler
db 'movhlps',12h
dw movhlps_instruction-instruction_handler
db 'movlhps',16h
dw movhlps_instruction-instruction_handler
db 'movntdq',0E7h
dw movntpd_instruction-instruction_handler
db 'movntpd',2Bh
dw movntpd_instruction-instruction_handler
db 'movntps',2Bh
dw movntps_instruction-instruction_handler
db 'movntsd',2Bh
dw movntsd_instruction-instruction_handler
db 'movntss',2Bh
dw movntss_instruction-instruction_handler
db 'movq2dq',0
dw movq2dq_instruction-instruction_handler
db 'mpsadbw',42h
dw sse4_instruction_3a_imm8-instruction_handler
db 'paddusb',0DCh
dw basic_mmx_instruction-instruction_handler
db 'paddusw',0DDh
dw basic_mmx_instruction-instruction_handler
db 'palignr',0
dw palignr_instruction-instruction_handler
db 'pavgusb',0BFh
dw amd3dnow_instruction-instruction_handler
db 'pblendw',0Eh
dw sse4_instruction_3a_imm8-instruction_handler
db 'pcmpeqb',74h
dw basic_mmx_instruction-instruction_handler
db 'pcmpeqd',76h
dw basic_mmx_instruction-instruction_handler
db 'pcmpeqq',29h
dw sse4_instruction_38-instruction_handler
db 'pcmpeqw',75h
dw basic_mmx_instruction-instruction_handler
db 'pcmpgtb',64h
dw basic_mmx_instruction-instruction_handler
db 'pcmpgtd',66h
dw basic_mmx_instruction-instruction_handler
db 'pcmpgtq',37h
dw sse4_instruction_38-instruction_handler
db 'pcmpgtw',65h
dw basic_mmx_instruction-instruction_handler
db 'pfcmpeq',0B0h
dw amd3dnow_instruction-instruction_handler
db 'pfcmpge',90h
dw amd3dnow_instruction-instruction_handler
db 'pfcmpgt',0A0h
dw amd3dnow_instruction-instruction_handler
db 'pfpnacc',8Eh
dw amd3dnow_instruction-instruction_handler
db 'pfrsqrt',97h
dw amd3dnow_instruction-instruction_handler
db 'phaddsw',3
dw ssse3_instruction-instruction_handler
db 'phsubsw',7
dw ssse3_instruction-instruction_handler
db 'pmaddwd',0F5h
dw basic_mmx_instruction-instruction_handler
db 'pmulhrw',0B7h
dw amd3dnow_instruction-instruction_handler
db 'pmulhuw',0E4h
dw basic_mmx_instruction-instruction_handler
db 'pmuludq',0F4h
dw basic_mmx_instruction-instruction_handler
db 'pshufhw',0F3h
dw pshufd_instruction-instruction_handler
db 'pshuflw',0F2h
dw pshufd_instruction-instruction_handler
db 'psubusb',0D8h
dw basic_mmx_instruction-instruction_handler
db 'psubusw',0D9h
dw basic_mmx_instruction-instruction_handler
db 'roundpd',9
dw sse4_instruction_3a_imm8-instruction_handler
db 'roundps',8
dw sse4_instruction_3a_imm8-instruction_handler
db 'roundsd',0Bh
dw sse4_sd_instruction_3a_imm8-instruction_handler
db 'roundss',0Ah
dw sse4_ss_instruction_3a_imm8-instruction_handler
db 'rsqrtps',52h
dw sse_ps_instruction-instruction_handler
db 'rsqrtss',52h
dw sse_ss_instruction-instruction_handler
db 'section',0
dw section_directive-instruction_handler
db 'segment',0
dw segment_directive-instruction_handler
db 'stmxcsr',11b
dw fxsave_instruction-instruction_handler
db 'syscall',05h
dw simple_extended_instruction-instruction_handler
db 'sysexit',35h
dw simple_extended_instruction-instruction_handler
db 'sysretq',07h
dw simple_extended_instruction_64bit-instruction_handler
db 'ucomisd',2Eh
dw comisd_instruction-instruction_handler
db 'ucomiss',2Eh
dw comiss_instruction-instruction_handler
db 'vaesdec',0DEh
dw avx_128bit_instruction_38-instruction_handler
db 'vaesenc',0DCh
dw avx_128bit_instruction_38-instruction_handler
db 'vaesimc',0DBh
dw avx_single_source_128bit_instruction_38-instruction_handler
db 'vandnpd',55h
dw avx_pd_instruction-instruction_handler
db 'vandnps',55h
dw avx_ps_instruction-instruction_handler
db 'vcomisd',2Fh
dw avx_comisd_instruction-instruction_handler
db 'vcomiss',2Fh
dw avx_comiss_instruction-instruction_handler
db 'vfrczpd',81h
dw xop_single_source_instruction-instruction_handler
db 'vfrczps',80h
dw xop_single_source_instruction-instruction_handler
db 'vfrczsd',83h
dw xop_single_source_sd_instruction-instruction_handler
db 'vfrczss',82h
dw xop_single_source_ss_instruction-instruction_handler
db 'vhaddpd',07Ch
dw avx_pd_instruction-instruction_handler
db 'vhaddps',07Ch
dw avx_haddps_instruction-instruction_handler
db 'vhsubpd',07Dh
dw avx_pd_instruction-instruction_handler
db 'vhsubps',07Dh
dw avx_haddps_instruction-instruction_handler
db 'virtual',0
dw virtual_directive-instruction_handler
db 'vmclear',6
dw vmclear_instruction-instruction_handler
db 'vmmcall',0D9h
dw simple_vmx_instruction-instruction_handler
db 'vmovapd',28h
dw avx_movpd_instruction-instruction_handler
db 'vmovaps',28h
dw avx_movps_instruction-instruction_handler
db 'vmovdqa',6Fh
dw avx_movpd_instruction-instruction_handler
db 'vmovdqu',6Fh
dw avx_movdqu_instruction-instruction_handler
db 'vmovhpd',16h
dw avx_movlpd_instruction-instruction_handler
db 'vmovhps',16h
dw avx_movlps_instruction-instruction_handler
db 'vmovlpd',12h
dw avx_movlpd_instruction-instruction_handler
db 'vmovlps',12h
dw avx_movlps_instruction-instruction_handler
db 'vmovupd',10h
dw avx_movpd_instruction-instruction_handler
db 'vmovups',10h
dw avx_movps_instruction-instruction_handler
db 'vmptrld',6
dw vmx_instruction-instruction_handler
db 'vmptrst',7
dw vmx_instruction-instruction_handler
dw fxsave_instruction-instruction_handler
db 'loopned',0E0h
dw loop_instruction_32bit-instruction_handler
db 'loopneq',0E0h
dw loop_instruction_64bit-instruction_handler
db 'loopnew',0E0h
dw loop_instruction_16bit-instruction_handler
db 'loopnzd',0E0h
dw loop_instruction_32bit-instruction_handler
db 'loopnzq',0E0h
dw loop_instruction_64bit-instruction_handler
db 'loopnzw',0E0h
dw loop_instruction_16bit-instruction_handler
db 'monitor',0C8h
dw monitor_instruction-instruction_handler
db 'movddup',12h
dw sse_sd_instruction-instruction_handler
db 'movdq2q',0
dw movdq2q_instruction-instruction_handler
db 'movhlps',12h
dw movhlps_instruction-instruction_handler
db 'movlhps',16h
dw movhlps_instruction-instruction_handler
db 'movntdq',0E7h
dw movntpd_instruction-instruction_handler
db 'movntpd',2Bh
dw movntpd_instruction-instruction_handler
db 'movntps',2Bh
dw movntps_instruction-instruction_handler
db 'movntsd',2Bh
dw movntsd_instruction-instruction_handler
db 'movntss',2Bh
dw movntss_instruction-instruction_handler
db 'movq2dq',0
dw movq2dq_instruction-instruction_handler
db 'mpsadbw',42h
dw sse4_instruction_3a_imm8-instruction_handler
db 'paddusb',0DCh
dw basic_mmx_instruction-instruction_handler
db 'paddusw',0DDh
dw basic_mmx_instruction-instruction_handler
db 'palignr',0
dw palignr_instruction-instruction_handler
db 'pavgusb',0BFh
dw amd3dnow_instruction-instruction_handler
db 'pblendw',0Eh
dw sse4_instruction_3a_imm8-instruction_handler
db 'pcmpeqb',74h
dw basic_mmx_instruction-instruction_handler
db 'pcmpeqd',76h
dw basic_mmx_instruction-instruction_handler
db 'pcmpeqq',29h
dw sse4_instruction_38-instruction_handler
db 'pcmpeqw',75h
dw basic_mmx_instruction-instruction_handler
db 'pcmpgtb',64h
dw basic_mmx_instruction-instruction_handler
db 'pcmpgtd',66h
dw basic_mmx_instruction-instruction_handler
db 'pcmpgtq',37h
dw sse4_instruction_38-instruction_handler
db 'pcmpgtw',65h
dw basic_mmx_instruction-instruction_handler
db 'pfcmpeq',0B0h
dw amd3dnow_instruction-instruction_handler
db 'pfcmpge',90h
dw amd3dnow_instruction-instruction_handler
db 'pfcmpgt',0A0h
dw amd3dnow_instruction-instruction_handler
db 'pfpnacc',8Eh
dw amd3dnow_instruction-instruction_handler
db 'pfrsqrt',97h
dw amd3dnow_instruction-instruction_handler
db 'phaddsw',3
dw ssse3_instruction-instruction_handler
db 'phsubsw',7
dw ssse3_instruction-instruction_handler
db 'pmaddwd',0F5h
dw basic_mmx_instruction-instruction_handler
db 'pmulhrw',0B7h
dw amd3dnow_instruction-instruction_handler
db 'pmulhuw',0E4h
dw basic_mmx_instruction-instruction_handler
db 'pmuludq',0F4h
dw basic_mmx_instruction-instruction_handler
db 'pshufhw',0F3h
dw pshufd_instruction-instruction_handler
db 'pshuflw',0F2h
dw pshufd_instruction-instruction_handler
db 'psubusb',0D8h
dw basic_mmx_instruction-instruction_handler
db 'psubusw',0D9h
dw basic_mmx_instruction-instruction_handler
db 'roundpd',9
dw sse4_instruction_3a_imm8-instruction_handler
db 'roundps',8
dw sse4_instruction_3a_imm8-instruction_handler
db 'roundsd',0Bh
dw sse4_sd_instruction_3a_imm8-instruction_handler
db 'roundss',0Ah
dw sse4_ss_instruction_3a_imm8-instruction_handler
db 'rsqrtps',52h
dw sse_ps_instruction-instruction_handler
db 'rsqrtss',52h
dw sse_ss_instruction-instruction_handler
db 'section',0
dw section_directive-instruction_handler
db 'segment',0
dw segment_directive-instruction_handler
db 'stmxcsr',11b
dw fxsave_instruction-instruction_handler
db 'syscall',05h
dw simple_extended_instruction-instruction_handler
db 'sysexit',35h
dw simple_extended_instruction-instruction_handler
db 'sysretq',07h
dw simple_extended_instruction_64bit-instruction_handler
db 'ucomisd',2Eh
dw comisd_instruction-instruction_handler
db 'ucomiss',2Eh
dw comiss_instruction-instruction_handler
db 'vaesdec',0DEh
dw avx_128bit_instruction_38-instruction_handler
db 'vaesenc',0DCh
dw avx_128bit_instruction_38-instruction_handler
db 'vaesimc',0DBh
dw avx_single_source_128bit_instruction_38-instruction_handler
db 'vandnpd',55h
dw avx_pd_instruction-instruction_handler
db 'vandnps',55h
dw avx_ps_instruction-instruction_handler
db 'vcomisd',2Fh
dw avx_comisd_instruction-instruction_handler
db 'vcomiss',2Fh
dw avx_comiss_instruction-instruction_handler
db 'vfrczpd',81h
dw xop_single_source_instruction-instruction_handler
db 'vfrczps',80h
dw xop_single_source_instruction-instruction_handler
db 'vfrczsd',83h
dw xop_single_source_sd_instruction-instruction_handler
db 'vfrczss',82h
dw xop_single_source_ss_instruction-instruction_handler
db 'vhaddpd',07Ch
dw avx_pd_instruction-instruction_handler
db 'vhaddps',07Ch
dw avx_haddps_instruction-instruction_handler
db 'vhsubpd',07Dh
dw avx_pd_instruction-instruction_handler
db 'vhsubps',07Dh
dw avx_haddps_instruction-instruction_handler
db 'virtual',0
dw virtual_directive-instruction_handler
db 'vmclear',6
dw vmclear_instruction-instruction_handler
db 'vmmcall',0D9h
dw simple_vmx_instruction-instruction_handler
db 'vmovapd',28h
dw avx_movpd_instruction-instruction_handler
db 'vmovaps',28h
dw avx_movps_instruction-instruction_handler
db 'vmovdqa',6Fh
dw avx_movpd_instruction-instruction_handler
db 'vmovdqu',6Fh
dw avx_movdqu_instruction-instruction_handler
db 'vmovhpd',16h
dw avx_movlpd_instruction-instruction_handler
db 'vmovhps',16h
dw avx_movlps_instruction-instruction_handler
db 'vmovlpd',12h
dw avx_movlpd_instruction-instruction_handler
db 'vmovlps',12h
dw avx_movlps_instruction-instruction_handler
db 'vmovupd',10h
dw avx_movpd_instruction-instruction_handler
db 'vmovups',10h
dw avx_movps_instruction-instruction_handler
db 'vmptrld',6
dw vmx_instruction-instruction_handler
db 'vmptrst',7
dw vmx_instruction-instruction_handler
db 'vmwrite',0
dw vmwrite_instruction-instruction_handler
db 'vpaddsb',0ECh
2063,8 → 2063,8
db 'vpcomub',-1
dw xop_pcom_ub_instruction-instruction_handler
db 'vpcomud',-1
dw xop_pcom_ud_instruction-instruction_handler
db 'vpcomuq',-1
dw xop_pcom_ud_instruction-instruction_handler
db 'vpcomuq',-1
dw xop_pcom_uq_instruction-instruction_handler
db 'vpcomuw',-1
dw xop_pcom_uw_instruction-instruction_handler
2075,9 → 2075,9
db 'vpextrb',14h
dw avx_pextrb_instruction-instruction_handler
db 'vpextrd',16h
dw avx_pextrd_instruction-instruction_handler
db 'vpextrq',16h
dw avx_pextrq_instruction-instruction_handler
dw avx_pextrd_instruction-instruction_handler
db 'vpextrq',16h
dw avx_pextrq_instruction-instruction_handler
db 'vpextrw',15h
dw avx_pextrw_instruction-instruction_handler
db 'vphaddd',2
2091,9 → 2091,9
db 'vpinsrb',20h
dw avx_pinsrb_instruction-instruction_handler
db 'vpinsrd',22h
dw avx_pinsrd_instruction-instruction_handler
db 'vpinsrq',22h
dw avx_pinsrq_instruction-instruction_handler
dw avx_pinsrd_instruction-instruction_handler
db 'vpinsrq',22h
dw avx_pinsrq_instruction-instruction_handler
db 'vpinsrw',0C4h
dw avx_pinsrw_instruction-instruction_handler
db 'vpmaxsb',3Ch
2161,97 → 2161,97
db 'vshufpd',0C6h
dw avx_pd_instruction_imm8-instruction_handler
db 'vshufps',0C6h
dw avx_ps_instruction_imm8-instruction_handler
db 'vsqrtpd',51h
dw avx_single_source_pd_instruction-instruction_handler
db 'vsqrtps',51h
dw avx_single_source_ps_instruction-instruction_handler
db 'vsqrtsd',51h
dw avx_sd_instruction-instruction_handler
db 'vsqrtss',51h
dw avx_ss_instruction-instruction_handler
db 'vtestpd',0Fh
dw avx_single_source_instruction_38-instruction_handler
db 'vtestps',0Eh
dw avx_single_source_instruction_38-instruction_handler
db 'xsave64',100b
dw fxsave_instruction_64bit-instruction_handler
instructions_8:
db 'addsubpd',0D0h
dw sse_pd_instruction-instruction_handler
db 'addsubps',0D0h
dw cvtpd2dq_instruction-instruction_handler
db 'blendvpd',15h
dw sse4_instruction_38_xmm0-instruction_handler
db 'blendvps',14h
dw sse4_instruction_38_xmm0-instruction_handler
db 'cmpneqpd',4
dw cmp_pd_instruction-instruction_handler
db 'cmpneqps',4
dw cmp_ps_instruction-instruction_handler
db 'cmpneqsd',4
dw cmp_sd_instruction-instruction_handler
db 'cmpneqss',4
dw cmp_ss_instruction-instruction_handler
db 'cmpnlepd',6
dw cmp_pd_instruction-instruction_handler
db 'cmpnleps',6
dw cmp_ps_instruction-instruction_handler
db 'cmpnlesd',6
dw cmp_sd_instruction-instruction_handler
db 'cmpnless',6
dw cmp_ss_instruction-instruction_handler
db 'cmpnltpd',5
dw cmp_pd_instruction-instruction_handler
db 'cmpnltps',5
dw cmp_ps_instruction-instruction_handler
db 'cmpnltsd',5
dw cmp_sd_instruction-instruction_handler
db 'cmpnltss',5
dw cmp_ss_instruction-instruction_handler
db 'cmpordpd',7
dw cmp_pd_instruction-instruction_handler
db 'cmpordps',7
dw cmp_ps_instruction-instruction_handler
db 'cmpordsd',7
dw cmp_sd_instruction-instruction_handler
db 'cmpordss',7
dw cmp_ss_instruction-instruction_handler
db 'cvtdq2pd',0E6h
dw cvtdq2pd_instruction-instruction_handler
db 'cvtdq2ps',5Bh
dw sse_ps_instruction-instruction_handler
db 'cvtpd2dq',0E6h
dw cvtpd2dq_instruction-instruction_handler
db 'cvtpd2pi',2Dh
dw cvtpd2pi_instruction-instruction_handler
db 'cvtpd2ps',5Ah
dw sse_pd_instruction-instruction_handler
db 'cvtpi2pd',2Ah
dw cvtpi2pd_instruction-instruction_handler
db 'cvtpi2ps',2Ah
dw cvtpi2ps_instruction-instruction_handler
db 'cvtps2dq',5Bh
dw sse_pd_instruction-instruction_handler
db 'cvtps2pd',5Ah
dw cvtps2pd_instruction-instruction_handler
db 'cvtps2pi',2Dh
dw cvtps2pi_instruction-instruction_handler
db 'cvtsd2si',2Dh
dw cvtsd2si_instruction-instruction_handler
db 'cvtsd2ss',5Ah
dw sse_sd_instruction-instruction_handler
db 'cvtsi2sd',2Ah
dw cvtsi2sd_instruction-instruction_handler
db 'cvtsi2ss',2Ah
dw cvtsi2ss_instruction-instruction_handler
db 'cvtss2sd',5Ah
dw sse_ss_instruction-instruction_handler
db 'cvtss2si',2Dh
dw cvtss2si_instruction-instruction_handler
db 'fcmovnbe',0D0h
dw fcomi_instruction-instruction_handler
db 'fnstenvd',6
dw avx_ps_instruction_imm8-instruction_handler
db 'vsqrtpd',51h
dw avx_single_source_pd_instruction-instruction_handler
db 'vsqrtps',51h
dw avx_single_source_ps_instruction-instruction_handler
db 'vsqrtsd',51h
dw avx_sd_instruction-instruction_handler
db 'vsqrtss',51h
dw avx_ss_instruction-instruction_handler
db 'vtestpd',0Fh
dw avx_single_source_instruction_38-instruction_handler
db 'vtestps',0Eh
dw avx_single_source_instruction_38-instruction_handler
db 'xsave64',100b
dw fxsave_instruction_64bit-instruction_handler
instructions_8:
db 'addsubpd',0D0h
dw sse_pd_instruction-instruction_handler
db 'addsubps',0D0h
dw cvtpd2dq_instruction-instruction_handler
db 'blendvpd',15h
dw sse4_instruction_38_xmm0-instruction_handler
db 'blendvps',14h
dw sse4_instruction_38_xmm0-instruction_handler
db 'cmpneqpd',4
dw cmp_pd_instruction-instruction_handler
db 'cmpneqps',4
dw cmp_ps_instruction-instruction_handler
db 'cmpneqsd',4
dw cmp_sd_instruction-instruction_handler
db 'cmpneqss',4
dw cmp_ss_instruction-instruction_handler
db 'cmpnlepd',6
dw cmp_pd_instruction-instruction_handler
db 'cmpnleps',6
dw cmp_ps_instruction-instruction_handler
db 'cmpnlesd',6
dw cmp_sd_instruction-instruction_handler
db 'cmpnless',6
dw cmp_ss_instruction-instruction_handler
db 'cmpnltpd',5
dw cmp_pd_instruction-instruction_handler
db 'cmpnltps',5
dw cmp_ps_instruction-instruction_handler
db 'cmpnltsd',5
dw cmp_sd_instruction-instruction_handler
db 'cmpnltss',5
dw cmp_ss_instruction-instruction_handler
db 'cmpordpd',7
dw cmp_pd_instruction-instruction_handler
db 'cmpordps',7
dw cmp_ps_instruction-instruction_handler
db 'cmpordsd',7
dw cmp_sd_instruction-instruction_handler
db 'cmpordss',7
dw cmp_ss_instruction-instruction_handler
db 'cvtdq2pd',0E6h
dw cvtdq2pd_instruction-instruction_handler
db 'cvtdq2ps',5Bh
dw sse_ps_instruction-instruction_handler
db 'cvtpd2dq',0E6h
dw cvtpd2dq_instruction-instruction_handler
db 'cvtpd2pi',2Dh
dw cvtpd2pi_instruction-instruction_handler
db 'cvtpd2ps',5Ah
dw sse_pd_instruction-instruction_handler
db 'cvtpi2pd',2Ah
dw cvtpi2pd_instruction-instruction_handler
db 'cvtpi2ps',2Ah
dw cvtpi2ps_instruction-instruction_handler
db 'cvtps2dq',5Bh
dw sse_pd_instruction-instruction_handler
db 'cvtps2pd',5Ah
dw cvtps2pd_instruction-instruction_handler
db 'cvtps2pi',2Dh
dw cvtps2pi_instruction-instruction_handler
db 'cvtsd2si',2Dh
dw cvtsd2si_instruction-instruction_handler
db 'cvtsd2ss',5Ah
dw sse_sd_instruction-instruction_handler
db 'cvtsi2sd',2Ah
dw cvtsi2sd_instruction-instruction_handler
db 'cvtsi2ss',2Ah
dw cvtsi2ss_instruction-instruction_handler
db 'cvtss2sd',5Ah
dw sse_ss_instruction-instruction_handler
db 'cvtss2si',2Dh
dw cvtss2si_instruction-instruction_handler
db 'fcmovnbe',0D0h
dw fcomi_instruction-instruction_handler
db 'fnstenvd',6
dw fldenv_instruction_32bit-instruction_handler
db 'fnstenvw',6
dw fldenv_instruction_16bit-instruction_handler
2260,8 → 2260,8
db 'insertps',0
dw insertps_instruction-instruction_handler
db 'maskmovq',0
dw maskmovq_instruction-instruction_handler
db 'movmskpd',0
dw maskmovq_instruction-instruction_handler
db 'movmskpd',0
dw movmskpd_instruction-instruction_handler
db 'movmskps',0
dw movmskps_instruction-instruction_handler
2269,144 → 2269,144
dw movntdqa_instruction-instruction_handler
db 'movshdup',16h
dw movshdup_instruction-instruction_handler
db 'movsldup',12h
dw movshdup_instruction-instruction_handler
db 'packssdw',6Bh
dw basic_mmx_instruction-instruction_handler
db 'packsswb',63h
dw basic_mmx_instruction-instruction_handler
db 'packusdw',2Bh
dw sse4_instruction_38-instruction_handler
db 'packuswb',67h
dw basic_mmx_instruction-instruction_handler
db 'pblendvb',10h
dw sse4_instruction_38_xmm0-instruction_handler
db 'pfrcpit1',0A6h
dw amd3dnow_instruction-instruction_handler
db 'pfrcpit2',0B6h
dw amd3dnow_instruction-instruction_handler
db 'pfrsqit1',0A7h
dw amd3dnow_instruction-instruction_handler
db 'pmovmskb',0D7h
dw pmovmskb_instruction-instruction_handler
db 'pmovsxbd',21h
dw pmovsxbd_instruction-instruction_handler
db 'pmovsxbq',22h
dw pmovsxbq_instruction-instruction_handler
db 'pmovsxbw',20h
dw pmovsxbw_instruction-instruction_handler
db 'pmovsxdq',25h
dw pmovsxdq_instruction-instruction_handler
db 'pmovsxwd',23h
dw pmovsxwd_instruction-instruction_handler
db 'pmovsxwq',24h
dw pmovsxwq_instruction-instruction_handler
db 'pmovzxbd',31h
dw pmovsxbd_instruction-instruction_handler
db 'pmovzxbq',32h
dw pmovsxbq_instruction-instruction_handler
db 'pmovzxbw',30h
dw pmovsxbw_instruction-instruction_handler
db 'pmovzxdq',35h
dw pmovsxdq_instruction-instruction_handler
db 'pmovzxwd',33h
dw pmovsxwd_instruction-instruction_handler
db 'pmovzxwq',34h
dw pmovsxwq_instruction-instruction_handler
db 'pmulhrsw',0Bh
dw ssse3_instruction-instruction_handler
db 'prefetch',0
dw amd_prefetch_instruction-instruction_handler
db 'rdfsbase',0
dw rdfsbase_instruction-instruction_handler
db 'rdgsbase',1
dw rdfsbase_instruction-instruction_handler
db 'sysenter',34h
dw simple_extended_instruction-instruction_handler
db 'sysexitq',35h
dw simple_extended_instruction_64bit-instruction_handler
db 'unpckhpd',15h
dw sse_pd_instruction-instruction_handler
db 'unpckhps',15h
dw sse_ps_instruction-instruction_handler
db 'unpcklpd',14h
dw sse_pd_instruction-instruction_handler
db 'unpcklps',14h
dw sse_ps_instruction-instruction_handler
db 'vblendpd',0Dh
dw avx_instruction_3a_imm8-instruction_handler
db 'vblendps',0Ch
dw avx_instruction_3a_imm8-instruction_handler
db 'vcmpeqpd',0
dw avx_cmp_pd_instruction-instruction_handler
db 'vcmpeqps',0
dw avx_cmp_ps_instruction-instruction_handler
db 'vcmpeqsd',0
dw avx_cmp_sd_instruction-instruction_handler
db 'vcmpeqss',0
dw avx_cmp_ss_instruction-instruction_handler
db 'vcmpgepd',0Dh
dw avx_cmp_pd_instruction-instruction_handler
db 'vcmpgeps',0Dh
dw avx_cmp_ps_instruction-instruction_handler
db 'vcmpgesd',0Dh
dw avx_cmp_sd_instruction-instruction_handler
db 'vcmpgess',0Dh
dw avx_cmp_ss_instruction-instruction_handler
db 'vcmpgtpd',0Eh
dw avx_cmp_pd_instruction-instruction_handler
db 'vcmpgtps',0Eh
dw avx_cmp_ps_instruction-instruction_handler
db 'vcmpgtsd',0Eh
dw avx_cmp_sd_instruction-instruction_handler
db 'vcmpgtss',0Eh
dw avx_cmp_ss_instruction-instruction_handler
db 'vcmplepd',2
dw avx_cmp_pd_instruction-instruction_handler
db 'vcmpleps',2
dw avx_cmp_ps_instruction-instruction_handler
db 'vcmplesd',2
dw avx_cmp_sd_instruction-instruction_handler
db 'vcmpless',2
dw avx_cmp_ss_instruction-instruction_handler
db 'vcmpltpd',1
dw avx_cmp_pd_instruction-instruction_handler
db 'vcmpltps',1
dw avx_cmp_ps_instruction-instruction_handler
db 'vcmpltsd',1
dw avx_cmp_sd_instruction-instruction_handler
db 'vcmpltss',1
dw avx_cmp_ss_instruction-instruction_handler
db 'vfmaddpd',69h
dw fma4_instruction_p-instruction_handler
db 'vfmaddps',68h
dw fma4_instruction_p-instruction_handler
db 'vfmaddsd',6Bh
dw fma4_instruction_sd-instruction_handler
db 'vfmaddss',6Ah
dw fma4_instruction_ss-instruction_handler
db 'vfmsubpd',6Dh
dw fma4_instruction_p-instruction_handler
db 'vfmsubps',6Ch
dw fma4_instruction_p-instruction_handler
db 'vfmsubsd',6Fh
dw fma4_instruction_sd-instruction_handler
db 'vfmsubss',6Eh
dw fma4_instruction_ss-instruction_handler
db 'vldmxcsr',10b
dw vldmxcsr_instruction-instruction_handler
db 'vmlaunch',0C2h
dw simple_vmx_instruction-instruction_handler
db 'vmovddup',12h
dw avx_movddup_instruction-instruction_handler
db 'vmovhlps',12h
dw avx_movhlps_instruction-instruction_handler
db 'vmovlhps',16h
dw avx_movhlps_instruction-instruction_handler
db 'vmovntdq',0E7h
dw avx_movntpd_instruction-instruction_handler
db 'vmovntpd',2Bh
dw avx_movntpd_instruction-instruction_handler
db 'movsldup',12h
dw movshdup_instruction-instruction_handler
db 'packssdw',6Bh
dw basic_mmx_instruction-instruction_handler
db 'packsswb',63h
dw basic_mmx_instruction-instruction_handler
db 'packusdw',2Bh
dw sse4_instruction_38-instruction_handler
db 'packuswb',67h
dw basic_mmx_instruction-instruction_handler
db 'pblendvb',10h
dw sse4_instruction_38_xmm0-instruction_handler
db 'pfrcpit1',0A6h
dw amd3dnow_instruction-instruction_handler
db 'pfrcpit2',0B6h
dw amd3dnow_instruction-instruction_handler
db 'pfrsqit1',0A7h
dw amd3dnow_instruction-instruction_handler
db 'pmovmskb',0D7h
dw pmovmskb_instruction-instruction_handler
db 'pmovsxbd',21h
dw pmovsxbd_instruction-instruction_handler
db 'pmovsxbq',22h
dw pmovsxbq_instruction-instruction_handler
db 'pmovsxbw',20h
dw pmovsxbw_instruction-instruction_handler
db 'pmovsxdq',25h
dw pmovsxdq_instruction-instruction_handler
db 'pmovsxwd',23h
dw pmovsxwd_instruction-instruction_handler
db 'pmovsxwq',24h
dw pmovsxwq_instruction-instruction_handler
db 'pmovzxbd',31h
dw pmovsxbd_instruction-instruction_handler
db 'pmovzxbq',32h
dw pmovsxbq_instruction-instruction_handler
db 'pmovzxbw',30h
dw pmovsxbw_instruction-instruction_handler
db 'pmovzxdq',35h
dw pmovsxdq_instruction-instruction_handler
db 'pmovzxwd',33h
dw pmovsxwd_instruction-instruction_handler
db 'pmovzxwq',34h
dw pmovsxwq_instruction-instruction_handler
db 'pmulhrsw',0Bh
dw ssse3_instruction-instruction_handler
db 'prefetch',0
dw amd_prefetch_instruction-instruction_handler
db 'rdfsbase',0
dw rdfsbase_instruction-instruction_handler
db 'rdgsbase',1
dw rdfsbase_instruction-instruction_handler
db 'sysenter',34h
dw simple_extended_instruction-instruction_handler
db 'sysexitq',35h
dw simple_extended_instruction_64bit-instruction_handler
db 'unpckhpd',15h
dw sse_pd_instruction-instruction_handler
db 'unpckhps',15h
dw sse_ps_instruction-instruction_handler
db 'unpcklpd',14h
dw sse_pd_instruction-instruction_handler
db 'unpcklps',14h
dw sse_ps_instruction-instruction_handler
db 'vblendpd',0Dh
dw avx_instruction_3a_imm8-instruction_handler
db 'vblendps',0Ch
dw avx_instruction_3a_imm8-instruction_handler
db 'vcmpeqpd',0
dw avx_cmp_pd_instruction-instruction_handler
db 'vcmpeqps',0
dw avx_cmp_ps_instruction-instruction_handler
db 'vcmpeqsd',0
dw avx_cmp_sd_instruction-instruction_handler
db 'vcmpeqss',0
dw avx_cmp_ss_instruction-instruction_handler
db 'vcmpgepd',0Dh
dw avx_cmp_pd_instruction-instruction_handler
db 'vcmpgeps',0Dh
dw avx_cmp_ps_instruction-instruction_handler
db 'vcmpgesd',0Dh
dw avx_cmp_sd_instruction-instruction_handler
db 'vcmpgess',0Dh
dw avx_cmp_ss_instruction-instruction_handler
db 'vcmpgtpd',0Eh
dw avx_cmp_pd_instruction-instruction_handler
db 'vcmpgtps',0Eh
dw avx_cmp_ps_instruction-instruction_handler
db 'vcmpgtsd',0Eh
dw avx_cmp_sd_instruction-instruction_handler
db 'vcmpgtss',0Eh
dw avx_cmp_ss_instruction-instruction_handler
db 'vcmplepd',2
dw avx_cmp_pd_instruction-instruction_handler
db 'vcmpleps',2
dw avx_cmp_ps_instruction-instruction_handler
db 'vcmplesd',2
dw avx_cmp_sd_instruction-instruction_handler
db 'vcmpless',2
dw avx_cmp_ss_instruction-instruction_handler
db 'vcmpltpd',1
dw avx_cmp_pd_instruction-instruction_handler
db 'vcmpltps',1
dw avx_cmp_ps_instruction-instruction_handler
db 'vcmpltsd',1
dw avx_cmp_sd_instruction-instruction_handler
db 'vcmpltss',1
dw avx_cmp_ss_instruction-instruction_handler
db 'vfmaddpd',69h
dw fma4_instruction_p-instruction_handler
db 'vfmaddps',68h
dw fma4_instruction_p-instruction_handler
db 'vfmaddsd',6Bh
dw fma4_instruction_sd-instruction_handler
db 'vfmaddss',6Ah
dw fma4_instruction_ss-instruction_handler
db 'vfmsubpd',6Dh
dw fma4_instruction_p-instruction_handler
db 'vfmsubps',6Ch
dw fma4_instruction_p-instruction_handler
db 'vfmsubsd',6Fh
dw fma4_instruction_sd-instruction_handler
db 'vfmsubss',6Eh
dw fma4_instruction_ss-instruction_handler
db 'vldmxcsr',10b
dw vldmxcsr_instruction-instruction_handler
db 'vmlaunch',0C2h
dw simple_vmx_instruction-instruction_handler
db 'vmovddup',12h
dw avx_movddup_instruction-instruction_handler
db 'vmovhlps',12h
dw avx_movhlps_instruction-instruction_handler
db 'vmovlhps',16h
dw avx_movhlps_instruction-instruction_handler
db 'vmovntdq',0E7h
dw avx_movntpd_instruction-instruction_handler
db 'vmovntpd',2Bh
dw avx_movntpd_instruction-instruction_handler
db 'vmovntps',2Bh
dw avx_movntps_instruction-instruction_handler
db 'vmpsadbw',42h
2442,49 → 2442,49
db 'vpcomeqb',4
dw xop_pcom_b_instruction-instruction_handler
db 'vpcomeqd',4
dw xop_pcom_d_instruction-instruction_handler
db 'vpcomeqq',4
dw xop_pcom_q_instruction-instruction_handler
db 'vpcomeqw',4
dw xop_pcom_w_instruction-instruction_handler
db 'vpcomgeb',3
dw xop_pcom_b_instruction-instruction_handler
db 'vpcomged',3
dw xop_pcom_d_instruction-instruction_handler
db 'vpcomgeq',3
dw xop_pcom_q_instruction-instruction_handler
db 'vpcomgew',3
dw xop_pcom_w_instruction-instruction_handler
db 'vpcomgtb',2
dw xop_pcom_b_instruction-instruction_handler
db 'vpcomgtd',2
dw xop_pcom_d_instruction-instruction_handler
db 'vpcomgtq',2
dw xop_pcom_q_instruction-instruction_handler
db 'vpcomgtw',2
dw xop_pcom_w_instruction-instruction_handler
db 'vpcomleb',1
dw xop_pcom_b_instruction-instruction_handler
db 'vpcomled',1
dw xop_pcom_d_instruction-instruction_handler
db 'vpcomleq',1
dw xop_pcom_q_instruction-instruction_handler
db 'vpcomlew',1
dw xop_pcom_w_instruction-instruction_handler
db 'vpcomltb',0
dw xop_pcom_b_instruction-instruction_handler
db 'vpcomltd',0
dw xop_pcom_d_instruction-instruction_handler
db 'vpcomltq',0
dw xop_pcom_q_instruction-instruction_handler
db 'vpcomltw',0
dw xop_pcom_w_instruction-instruction_handler
db 'vphaddbd',0C2h
dw xop_single_source_128bit_instruction-instruction_handler
db 'vphaddbq',0C3h
dw xop_single_source_128bit_instruction-instruction_handler
db 'vphaddbw',0C1h
dw xop_single_source_128bit_instruction-instruction_handler
dw xop_pcom_d_instruction-instruction_handler
db 'vpcomeqq',4
dw xop_pcom_q_instruction-instruction_handler
db 'vpcomeqw',4
dw xop_pcom_w_instruction-instruction_handler
db 'vpcomgeb',3
dw xop_pcom_b_instruction-instruction_handler
db 'vpcomged',3
dw xop_pcom_d_instruction-instruction_handler
db 'vpcomgeq',3
dw xop_pcom_q_instruction-instruction_handler
db 'vpcomgew',3
dw xop_pcom_w_instruction-instruction_handler
db 'vpcomgtb',2
dw xop_pcom_b_instruction-instruction_handler
db 'vpcomgtd',2
dw xop_pcom_d_instruction-instruction_handler
db 'vpcomgtq',2
dw xop_pcom_q_instruction-instruction_handler
db 'vpcomgtw',2
dw xop_pcom_w_instruction-instruction_handler
db 'vpcomleb',1
dw xop_pcom_b_instruction-instruction_handler
db 'vpcomled',1
dw xop_pcom_d_instruction-instruction_handler
db 'vpcomleq',1
dw xop_pcom_q_instruction-instruction_handler
db 'vpcomlew',1
dw xop_pcom_w_instruction-instruction_handler
db 'vpcomltb',0
dw xop_pcom_b_instruction-instruction_handler
db 'vpcomltd',0
dw xop_pcom_d_instruction-instruction_handler
db 'vpcomltq',0
dw xop_pcom_q_instruction-instruction_handler
db 'vpcomltw',0
dw xop_pcom_w_instruction-instruction_handler
db 'vphaddbd',0C2h
dw xop_single_source_128bit_instruction-instruction_handler
db 'vphaddbq',0C3h
dw xop_single_source_128bit_instruction-instruction_handler
db 'vphaddbw',0C1h
dw xop_single_source_128bit_instruction-instruction_handler
db 'vphadddq',0CBh
dw xop_single_source_128bit_instruction-instruction_handler
db 'vphaddsw',3
2492,9 → 2492,9
db 'vphaddwd',0C6h
dw xop_single_source_128bit_instruction-instruction_handler
db 'vphaddwq',0C7h
dw xop_single_source_128bit_instruction-instruction_handler
db 'vphsubbw',0E1h
dw xop_single_source_128bit_instruction-instruction_handler
dw xop_single_source_128bit_instruction-instruction_handler
db 'vphsubbw',0E1h
dw xop_single_source_128bit_instruction-instruction_handler
db 'vphsubdq',0E3h
dw xop_single_source_128bit_instruction-instruction_handler
db 'vphsubsw',7
2502,9 → 2502,9
db 'vphsubwd',0E2h
dw xop_single_source_128bit_instruction-instruction_handler
db 'vpmacsdd',9Eh
dw xop_triple_source_128bit_instruction-instruction_handler
db 'vpmacswd',96h
dw xop_triple_source_128bit_instruction-instruction_handler
dw xop_triple_source_128bit_instruction-instruction_handler
db 'vpmacswd',96h
dw xop_triple_source_128bit_instruction-instruction_handler
db 'vpmacsww',95h
dw xop_triple_source_128bit_instruction-instruction_handler
db 'vpmaddwd',0F5h
2524,24 → 2524,24
db 'vroundpd',9
dw avx_single_source_instruction_3a_imm8-instruction_handler
db 'vroundps',8
dw avx_single_source_instruction_3a_imm8-instruction_handler
db 'vroundsd',0Bh
dw avx_sd_instruction_3a_imm8-instruction_handler
db 'vroundss',0Ah
dw avx_ss_instruction_3a_imm8-instruction_handler
db 'vrsqrtps',52h
dw avx_single_source_ps_instruction-instruction_handler
db 'vrsqrtss',52h
dw avx_ss_instruction-instruction_handler
db 'vstmxcsr',11b
dw vldmxcsr_instruction-instruction_handler
db 'vucomisd',2Eh
dw avx_comisd_instruction-instruction_handler
db 'vucomiss',2Eh
dw avx_comiss_instruction-instruction_handler
db 'vzeroall',77h
dw vzeroall_instruction-instruction_handler
db 'wrfsbase',2
dw avx_single_source_instruction_3a_imm8-instruction_handler
db 'vroundsd',0Bh
dw avx_sd_instruction_3a_imm8-instruction_handler
db 'vroundss',0Ah
dw avx_ss_instruction_3a_imm8-instruction_handler
db 'vrsqrtps',52h
dw avx_single_source_ps_instruction-instruction_handler
db 'vrsqrtss',52h
dw avx_ss_instruction-instruction_handler
db 'vstmxcsr',11b
dw vldmxcsr_instruction-instruction_handler
db 'vucomisd',2Eh
dw avx_comisd_instruction-instruction_handler
db 'vucomiss',2Eh
dw avx_comiss_instruction-instruction_handler
db 'vzeroall',77h
dw vzeroall_instruction-instruction_handler
db 'wrfsbase',2
dw rdfsbase_instruction-instruction_handler
db 'wrgsbase',3
dw rdfsbase_instruction-instruction_handler
2552,21 → 2552,21
db 'xrstor64',101b
dw fxsave_instruction_64bit-instruction_handler
db 'xsaveopt',110b
dw fxsave_instruction-instruction_handler
instructions_9:
db 'cmpxchg8b',8
dw cmpxchgx_instruction-instruction_handler
db 'cvttpd2dq',0E6h
dw sse_pd_instruction-instruction_handler
db 'cvttpd2pi',2Ch
dw cvtpd2pi_instruction-instruction_handler
db 'cvttps2dq',5Bh
dw movshdup_instruction-instruction_handler
db 'cvttps2pi',2Ch
dw cvtps2pi_instruction-instruction_handler
db 'cvttsd2si',2Ch
dw cvtsd2si_instruction-instruction_handler
db 'cvttss2si',2Ch
dw fxsave_instruction-instruction_handler
instructions_9:
db 'cmpxchg8b',8
dw cmpxchgx_instruction-instruction_handler
db 'cvttpd2dq',0E6h
dw sse_pd_instruction-instruction_handler
db 'cvttpd2pi',2Ch
dw cvtpd2pi_instruction-instruction_handler
db 'cvttps2dq',5Bh
dw movshdup_instruction-instruction_handler
db 'cvttps2pi',2Ch
dw cvtps2pi_instruction-instruction_handler
db 'cvttsd2si',2Ch
dw cvtsd2si_instruction-instruction_handler
db 'cvttss2si',2Ch
dw cvtss2si_instruction-instruction_handler
db 'extractps',0
dw extractps_instruction-instruction_handler
2575,132 → 2575,132
db 'pclmulqdq',-1
dw pclmulqdq_instruction-instruction_handler
db 'pcmpestri',61h
dw sse4_instruction_3a_imm8-instruction_handler
db 'pcmpestrm',60h
dw sse4_instruction_3a_imm8-instruction_handler
db 'pcmpistri',63h
dw sse4_instruction_3a_imm8-instruction_handler
db 'pcmpistrm',62h
dw sse4_instruction_3a_imm8-instruction_handler
db 'pmaddubsw',4
dw ssse3_instruction-instruction_handler
db 'prefetchw',1
dw amd_prefetch_instruction-instruction_handler
db 'punpckhbw',68h
dw basic_mmx_instruction-instruction_handler
db 'punpckhdq',6Ah
dw basic_mmx_instruction-instruction_handler
db 'punpckhwd',69h
dw basic_mmx_instruction-instruction_handler
db 'punpcklbw',60h
dw basic_mmx_instruction-instruction_handler
db 'punpckldq',62h
dw basic_mmx_instruction-instruction_handler
db 'punpcklwd',61h
dw basic_mmx_instruction-instruction_handler
db 'vaddsubpd',0D0h
dw avx_pd_instruction-instruction_handler
db 'vaddsubps',0D0h
dw avx_haddps_instruction-instruction_handler
db 'vblendvpd',4Bh
dw avx_triple_source_instruction_3a-instruction_handler
db 'vblendvps',4Ah
dw avx_triple_source_instruction_3a-instruction_handler
db 'vcmpneqpd',4
dw avx_cmp_pd_instruction-instruction_handler
db 'vcmpneqps',4
dw avx_cmp_ps_instruction-instruction_handler
db 'vcmpneqsd',4
dw avx_cmp_sd_instruction-instruction_handler
db 'vcmpneqss',4
dw avx_cmp_ss_instruction-instruction_handler
db 'vcmpngepd',9
dw avx_cmp_pd_instruction-instruction_handler
db 'vcmpngeps',9
dw avx_cmp_ps_instruction-instruction_handler
db 'vcmpngesd',9
dw avx_cmp_sd_instruction-instruction_handler
db 'vcmpngess',9
dw avx_cmp_ss_instruction-instruction_handler
db 'vcmpngtpd',0Ah
dw avx_cmp_pd_instruction-instruction_handler
db 'vcmpngtps',0Ah
dw avx_cmp_ps_instruction-instruction_handler
db 'vcmpngtsd',0Ah
dw avx_cmp_sd_instruction-instruction_handler
db 'vcmpngtss',0Ah
dw avx_cmp_ss_instruction-instruction_handler
db 'vcmpnlepd',6
dw avx_cmp_pd_instruction-instruction_handler
db 'vcmpnleps',6
dw avx_cmp_ps_instruction-instruction_handler
db 'vcmpnlesd',6
dw avx_cmp_sd_instruction-instruction_handler
db 'vcmpnless',6
dw avx_cmp_ss_instruction-instruction_handler
db 'vcmpnltpd',5
dw avx_cmp_pd_instruction-instruction_handler
db 'vcmpnltps',5
dw avx_cmp_ps_instruction-instruction_handler
db 'vcmpnltsd',5
dw avx_cmp_sd_instruction-instruction_handler
db 'vcmpnltss',5
dw avx_cmp_ss_instruction-instruction_handler
db 'vcmpordpd',7
dw avx_cmp_pd_instruction-instruction_handler
db 'vcmpordps',7
dw avx_cmp_ps_instruction-instruction_handler
db 'vcmpordsd',7
dw avx_cmp_sd_instruction-instruction_handler
db 'vcmpordss',7
dw avx_cmp_ss_instruction-instruction_handler
db 'vcvtdq2pd',0E6h
dw avx_cvtdq2pd_instruction-instruction_handler
db 'vcvtdq2ps',5Bh
dw avx_single_source_ps_instruction-instruction_handler
db 'vcvtpd2dq',0E6h
dw avx_cvtpd2dq_instruction-instruction_handler
db 'vcvtpd2ps',5Ah
dw avx_cvtpd2ps_instruction-instruction_handler
db 'vcvtph2ps',13h
dw vcvtph2ps_instruction-instruction_handler
db 'vcvtps2dq',5Bh
dw avx_single_source_pd_instruction-instruction_handler
db 'vcvtps2pd',5Ah
dw avx_cvtps2pd_instruction-instruction_handler
db 'vcvtps2ph',1Dh
dw vcvtps2ph_instruction-instruction_handler
db 'vcvtsd2si',2Dh
dw avx_cvtsd2si_instruction-instruction_handler
db 'vcvtsd2ss',5Ah
dw avx_sd_instruction-instruction_handler
db 'vcvtsi2sd',2Ah
dw avx_cvtsi2sd_instruction-instruction_handler
db 'vcvtsi2ss',2Ah
dw avx_cvtsi2ss_instruction-instruction_handler
db 'vcvtss2sd',5Ah
dw avx_ss_instruction-instruction_handler
db 'vcvtss2si',2Dh
dw avx_cvtss2si_instruction-instruction_handler
db 'vfnmaddpd',79h
dw fma4_instruction_p-instruction_handler
db 'vfnmaddps',78h
dw fma4_instruction_p-instruction_handler
db 'vfnmaddsd',7Bh
dw fma4_instruction_sd-instruction_handler
db 'vfnmaddss',7Ah
dw fma4_instruction_ss-instruction_handler
db 'vfnmsubpd',7Dh
dw fma4_instruction_p-instruction_handler
db 'vfnmsubps',7Ch
dw fma4_instruction_p-instruction_handler
db 'vfnmsubsd',7Fh
dw fma4_instruction_sd-instruction_handler
db 'vfnmsubss',7Eh
dw fma4_instruction_ss-instruction_handler
db 'vinsertps',0
dw avx_insertps_instruction-instruction_handler
db 'vmovmskpd',0
dw sse4_instruction_3a_imm8-instruction_handler
db 'pcmpestrm',60h
dw sse4_instruction_3a_imm8-instruction_handler
db 'pcmpistri',63h
dw sse4_instruction_3a_imm8-instruction_handler
db 'pcmpistrm',62h
dw sse4_instruction_3a_imm8-instruction_handler
db 'pmaddubsw',4
dw ssse3_instruction-instruction_handler
db 'prefetchw',1
dw amd_prefetch_instruction-instruction_handler
db 'punpckhbw',68h
dw basic_mmx_instruction-instruction_handler
db 'punpckhdq',6Ah
dw basic_mmx_instruction-instruction_handler
db 'punpckhwd',69h
dw basic_mmx_instruction-instruction_handler
db 'punpcklbw',60h
dw basic_mmx_instruction-instruction_handler
db 'punpckldq',62h
dw basic_mmx_instruction-instruction_handler
db 'punpcklwd',61h
dw basic_mmx_instruction-instruction_handler
db 'vaddsubpd',0D0h
dw avx_pd_instruction-instruction_handler
db 'vaddsubps',0D0h
dw avx_haddps_instruction-instruction_handler
db 'vblendvpd',4Bh
dw avx_triple_source_instruction_3a-instruction_handler
db 'vblendvps',4Ah
dw avx_triple_source_instruction_3a-instruction_handler
db 'vcmpneqpd',4
dw avx_cmp_pd_instruction-instruction_handler
db 'vcmpneqps',4
dw avx_cmp_ps_instruction-instruction_handler
db 'vcmpneqsd',4
dw avx_cmp_sd_instruction-instruction_handler
db 'vcmpneqss',4
dw avx_cmp_ss_instruction-instruction_handler
db 'vcmpngepd',9
dw avx_cmp_pd_instruction-instruction_handler
db 'vcmpngeps',9
dw avx_cmp_ps_instruction-instruction_handler
db 'vcmpngesd',9
dw avx_cmp_sd_instruction-instruction_handler
db 'vcmpngess',9
dw avx_cmp_ss_instruction-instruction_handler
db 'vcmpngtpd',0Ah
dw avx_cmp_pd_instruction-instruction_handler
db 'vcmpngtps',0Ah
dw avx_cmp_ps_instruction-instruction_handler
db 'vcmpngtsd',0Ah
dw avx_cmp_sd_instruction-instruction_handler
db 'vcmpngtss',0Ah
dw avx_cmp_ss_instruction-instruction_handler
db 'vcmpnlepd',6
dw avx_cmp_pd_instruction-instruction_handler
db 'vcmpnleps',6
dw avx_cmp_ps_instruction-instruction_handler
db 'vcmpnlesd',6
dw avx_cmp_sd_instruction-instruction_handler
db 'vcmpnless',6
dw avx_cmp_ss_instruction-instruction_handler
db 'vcmpnltpd',5
dw avx_cmp_pd_instruction-instruction_handler
db 'vcmpnltps',5
dw avx_cmp_ps_instruction-instruction_handler
db 'vcmpnltsd',5
dw avx_cmp_sd_instruction-instruction_handler
db 'vcmpnltss',5
dw avx_cmp_ss_instruction-instruction_handler
db 'vcmpordpd',7
dw avx_cmp_pd_instruction-instruction_handler
db 'vcmpordps',7
dw avx_cmp_ps_instruction-instruction_handler
db 'vcmpordsd',7
dw avx_cmp_sd_instruction-instruction_handler
db 'vcmpordss',7
dw avx_cmp_ss_instruction-instruction_handler
db 'vcvtdq2pd',0E6h
dw avx_cvtdq2pd_instruction-instruction_handler
db 'vcvtdq2ps',5Bh
dw avx_single_source_ps_instruction-instruction_handler
db 'vcvtpd2dq',0E6h
dw avx_cvtpd2dq_instruction-instruction_handler
db 'vcvtpd2ps',5Ah
dw avx_cvtpd2ps_instruction-instruction_handler
db 'vcvtph2ps',13h
dw vcvtph2ps_instruction-instruction_handler
db 'vcvtps2dq',5Bh
dw avx_single_source_pd_instruction-instruction_handler
db 'vcvtps2pd',5Ah
dw avx_cvtps2pd_instruction-instruction_handler
db 'vcvtps2ph',1Dh
dw vcvtps2ph_instruction-instruction_handler
db 'vcvtsd2si',2Dh
dw avx_cvtsd2si_instruction-instruction_handler
db 'vcvtsd2ss',5Ah
dw avx_sd_instruction-instruction_handler
db 'vcvtsi2sd',2Ah
dw avx_cvtsi2sd_instruction-instruction_handler
db 'vcvtsi2ss',2Ah
dw avx_cvtsi2ss_instruction-instruction_handler
db 'vcvtss2sd',5Ah
dw avx_ss_instruction-instruction_handler
db 'vcvtss2si',2Dh
dw avx_cvtss2si_instruction-instruction_handler
db 'vfnmaddpd',79h
dw fma4_instruction_p-instruction_handler
db 'vfnmaddps',78h
dw fma4_instruction_p-instruction_handler
db 'vfnmaddsd',7Bh
dw fma4_instruction_sd-instruction_handler
db 'vfnmaddss',7Ah
dw fma4_instruction_ss-instruction_handler
db 'vfnmsubpd',7Dh
dw fma4_instruction_p-instruction_handler
db 'vfnmsubps',7Ch
dw fma4_instruction_p-instruction_handler
db 'vfnmsubsd',7Fh
dw fma4_instruction_sd-instruction_handler
db 'vfnmsubss',7Eh
dw fma4_instruction_ss-instruction_handler
db 'vinsertps',0
dw avx_insertps_instruction-instruction_handler
db 'vmovmskpd',0
dw avx_movmskpd_instruction-instruction_handler
db 'vmovmskps',0
dw avx_movmskps_instruction-instruction_handler
2723,103 → 2723,103
db 'vpcomequb',4
dw xop_pcom_ub_instruction-instruction_handler
db 'vpcomequd',4
dw xop_pcom_ud_instruction-instruction_handler
db 'vpcomequq',4
dw xop_pcom_uq_instruction-instruction_handler
db 'vpcomequw',4
dw xop_pcom_uw_instruction-instruction_handler
db 'vpcomgeub',3
dw xop_pcom_ub_instruction-instruction_handler
db 'vpcomgeud',3
dw xop_pcom_ud_instruction-instruction_handler
db 'vpcomgeuq',3
dw xop_pcom_uq_instruction-instruction_handler
db 'vpcomgeuw',3
dw xop_pcom_uw_instruction-instruction_handler
db 'vpcomgtub',2
dw xop_pcom_ub_instruction-instruction_handler
db 'vpcomgtud',2
dw xop_pcom_ud_instruction-instruction_handler
db 'vpcomgtuq',2
dw xop_pcom_uq_instruction-instruction_handler
db 'vpcomgtuw',2
dw xop_pcom_uw_instruction-instruction_handler
db 'vpcomleub',1
dw xop_pcom_ub_instruction-instruction_handler
db 'vpcomleud',1
dw xop_pcom_ud_instruction-instruction_handler
db 'vpcomleuq',1
dw xop_pcom_uq_instruction-instruction_handler
db 'vpcomleuw',1
dw xop_pcom_uw_instruction-instruction_handler
db 'vpcomltub',0
dw xop_pcom_ub_instruction-instruction_handler
db 'vpcomltud',0
dw xop_pcom_ud_instruction-instruction_handler
db 'vpcomltuq',0
dw xop_pcom_uq_instruction-instruction_handler
db 'vpcomltuw',0
dw xop_pcom_uw_instruction-instruction_handler
db 'vpcomneqb',5
dw xop_pcom_b_instruction-instruction_handler
db 'vpcomneqd',5
dw xop_pcom_d_instruction-instruction_handler
db 'vpcomneqq',5
dw xop_pcom_q_instruction-instruction_handler
db 'vpcomneqw',5
dw xop_pcom_w_instruction-instruction_handler
db 'vpermilpd',5
dw avx_permil_instruction-instruction_handler
db 'vpermilps',4
dw avx_permil_instruction-instruction_handler
db 'vphaddubd',0D2h
dw xop_single_source_128bit_instruction-instruction_handler
db 'vphaddubq',0D3h
dw xop_single_source_128bit_instruction-instruction_handler
db 'vphaddubw',0D1h
dw xop_single_source_128bit_instruction-instruction_handler
db 'vphaddudq',0DBh
dw xop_single_source_128bit_instruction-instruction_handler
db 'vphadduwd',0D6h
dw xop_single_source_128bit_instruction-instruction_handler
db 'vphadduwq',0D7h
dw xop_single_source_128bit_instruction-instruction_handler
db 'vpmacsdqh',9Fh
dw xop_triple_source_128bit_instruction-instruction_handler
db 'vpmacsdql',97h
dw xop_triple_source_128bit_instruction-instruction_handler
db 'vpmacssdd',8Eh
dw xop_triple_source_128bit_instruction-instruction_handler
db 'vpmacsswd',86h
dw xop_triple_source_128bit_instruction-instruction_handler
db 'vpmacssww',85h
dw xop_triple_source_128bit_instruction-instruction_handler
db 'vpmadcswd',0B6h
dw xop_triple_source_128bit_instruction-instruction_handler
db 'vpmovmskb',0D7h
dw avx_pmovmskb_instruction-instruction_handler
db 'vpmovsxbd',21h
dw avx_pmovsxbd_instruction-instruction_handler
db 'vpmovsxbq',22h
dw avx_pmovsxbq_instruction-instruction_handler
db 'vpmovsxbw',20h
dw avx_pmovsxbw_instruction-instruction_handler
db 'vpmovsxdq',25h
dw avx_pmovsxdq_instruction-instruction_handler
db 'vpmovsxwd',23h
dw avx_pmovsxwd_instruction-instruction_handler
db 'vpmovsxwq',24h
dw avx_pmovsxwq_instruction-instruction_handler
db 'vpmovzxbd',31h
dw avx_pmovsxbd_instruction-instruction_handler
db 'vpmovzxbq',32h
dw avx_pmovsxbq_instruction-instruction_handler
db 'vpmovzxbw',30h
dw avx_pmovsxbw_instruction-instruction_handler
db 'vpmovzxdq',35h
dw avx_pmovsxdq_instruction-instruction_handler
db 'vpmovzxwd',33h
dw avx_pmovsxwd_instruction-instruction_handler
dw xop_pcom_ud_instruction-instruction_handler
db 'vpcomequq',4
dw xop_pcom_uq_instruction-instruction_handler
db 'vpcomequw',4
dw xop_pcom_uw_instruction-instruction_handler
db 'vpcomgeub',3
dw xop_pcom_ub_instruction-instruction_handler
db 'vpcomgeud',3
dw xop_pcom_ud_instruction-instruction_handler
db 'vpcomgeuq',3
dw xop_pcom_uq_instruction-instruction_handler
db 'vpcomgeuw',3
dw xop_pcom_uw_instruction-instruction_handler
db 'vpcomgtub',2
dw xop_pcom_ub_instruction-instruction_handler
db 'vpcomgtud',2
dw xop_pcom_ud_instruction-instruction_handler
db 'vpcomgtuq',2
dw xop_pcom_uq_instruction-instruction_handler
db 'vpcomgtuw',2
dw xop_pcom_uw_instruction-instruction_handler
db 'vpcomleub',1
dw xop_pcom_ub_instruction-instruction_handler
db 'vpcomleud',1
dw xop_pcom_ud_instruction-instruction_handler
db 'vpcomleuq',1
dw xop_pcom_uq_instruction-instruction_handler
db 'vpcomleuw',1
dw xop_pcom_uw_instruction-instruction_handler
db 'vpcomltub',0
dw xop_pcom_ub_instruction-instruction_handler
db 'vpcomltud',0
dw xop_pcom_ud_instruction-instruction_handler
db 'vpcomltuq',0
dw xop_pcom_uq_instruction-instruction_handler
db 'vpcomltuw',0
dw xop_pcom_uw_instruction-instruction_handler
db 'vpcomneqb',5
dw xop_pcom_b_instruction-instruction_handler
db 'vpcomneqd',5
dw xop_pcom_d_instruction-instruction_handler
db 'vpcomneqq',5
dw xop_pcom_q_instruction-instruction_handler
db 'vpcomneqw',5
dw xop_pcom_w_instruction-instruction_handler
db 'vpermilpd',5
dw avx_permil_instruction-instruction_handler
db 'vpermilps',4
dw avx_permil_instruction-instruction_handler
db 'vphaddubd',0D2h
dw xop_single_source_128bit_instruction-instruction_handler
db 'vphaddubq',0D3h
dw xop_single_source_128bit_instruction-instruction_handler
db 'vphaddubw',0D1h
dw xop_single_source_128bit_instruction-instruction_handler
db 'vphaddudq',0DBh
dw xop_single_source_128bit_instruction-instruction_handler
db 'vphadduwd',0D6h
dw xop_single_source_128bit_instruction-instruction_handler
db 'vphadduwq',0D7h
dw xop_single_source_128bit_instruction-instruction_handler
db 'vpmacsdqh',9Fh
dw xop_triple_source_128bit_instruction-instruction_handler
db 'vpmacsdql',97h
dw xop_triple_source_128bit_instruction-instruction_handler
db 'vpmacssdd',8Eh
dw xop_triple_source_128bit_instruction-instruction_handler
db 'vpmacsswd',86h
dw xop_triple_source_128bit_instruction-instruction_handler
db 'vpmacssww',85h
dw xop_triple_source_128bit_instruction-instruction_handler
db 'vpmadcswd',0B6h
dw xop_triple_source_128bit_instruction-instruction_handler
db 'vpmovmskb',0D7h
dw avx_pmovmskb_instruction-instruction_handler
db 'vpmovsxbd',21h
dw avx_pmovsxbd_instruction-instruction_handler
db 'vpmovsxbq',22h
dw avx_pmovsxbq_instruction-instruction_handler
db 'vpmovsxbw',20h
dw avx_pmovsxbw_instruction-instruction_handler
db 'vpmovsxdq',25h
dw avx_pmovsxdq_instruction-instruction_handler
db 'vpmovsxwd',23h
dw avx_pmovsxwd_instruction-instruction_handler
db 'vpmovsxwq',24h
dw avx_pmovsxwq_instruction-instruction_handler
db 'vpmovzxbd',31h
dw avx_pmovsxbd_instruction-instruction_handler
db 'vpmovzxbq',32h
dw avx_pmovsxbq_instruction-instruction_handler
db 'vpmovzxbw',30h
dw avx_pmovsxbw_instruction-instruction_handler
db 'vpmovzxdq',35h
dw avx_pmovsxdq_instruction-instruction_handler
db 'vpmovzxwd',33h
dw avx_pmovsxwd_instruction-instruction_handler
db 'vpmovzxwq',34h
dw avx_pmovsxwq_instruction-instruction_handler
db 'vpmulhrsw',0Bh
2835,51 → 2835,51
instructions_10:
db 'aesdeclast',0DFh
dw sse4_instruction_38-instruction_handler
db 'aesenclast',0DDh
dw sse4_instruction_38-instruction_handler
db 'cmpunordpd',3
dw cmp_pd_instruction-instruction_handler
db 'cmpunordps',3
dw cmp_ps_instruction-instruction_handler
db 'cmpunordsd',3
dw cmp_sd_instruction-instruction_handler
db 'cmpunordss',3
dw cmp_ss_instruction-instruction_handler
db 'cmpxchg16b',16
dw cmpxchgx_instruction-instruction_handler
db 'loadall286',5
dw simple_extended_instruction-instruction_handler
db 'loadall386',7
dw simple_extended_instruction-instruction_handler
db 'maskmovdqu',0
dw maskmovdqu_instruction-instruction_handler
db 'phminposuw',41h
dw sse4_instruction_38-instruction_handler
db 'prefetcht0',1
dw prefetch_instruction-instruction_handler
db 'prefetcht1',2
dw prefetch_instruction-instruction_handler
db 'prefetcht2',3
dw prefetch_instruction-instruction_handler
db 'punpckhqdq',6Dh
dw sse_pd_instruction-instruction_handler
db 'punpcklqdq',6Ch
dw sse_pd_instruction-instruction_handler
db 'vcmptruepd',0Fh
dw avx_cmp_pd_instruction-instruction_handler
db 'vcmptrueps',0Fh
dw avx_cmp_ps_instruction-instruction_handler
db 'vcmptruesd',0Fh
dw avx_cmp_sd_instruction-instruction_handler
db 'vcmptruess',0Fh
dw avx_cmp_ss_instruction-instruction_handler
db 'vcvttpd2dq',0E6h
dw avx_cvtpd2ps_instruction-instruction_handler
db 'vcvttps2dq',5Bh
dw avx_cvttps2dq_instruction-instruction_handler
db 'vcvttsd2si',2Ch
dw avx_cvtsd2si_instruction-instruction_handler
db 'vcvttss2si',2Ch
db 'aesenclast',0DDh
dw sse4_instruction_38-instruction_handler
db 'cmpunordpd',3
dw cmp_pd_instruction-instruction_handler
db 'cmpunordps',3
dw cmp_ps_instruction-instruction_handler
db 'cmpunordsd',3
dw cmp_sd_instruction-instruction_handler
db 'cmpunordss',3
dw cmp_ss_instruction-instruction_handler
db 'cmpxchg16b',16
dw cmpxchgx_instruction-instruction_handler
db 'loadall286',5
dw simple_extended_instruction-instruction_handler
db 'loadall386',7
dw simple_extended_instruction-instruction_handler
db 'maskmovdqu',0
dw maskmovdqu_instruction-instruction_handler
db 'phminposuw',41h
dw sse4_instruction_38-instruction_handler
db 'prefetcht0',1
dw prefetch_instruction-instruction_handler
db 'prefetcht1',2
dw prefetch_instruction-instruction_handler
db 'prefetcht2',3
dw prefetch_instruction-instruction_handler
db 'punpckhqdq',6Dh
dw sse_pd_instruction-instruction_handler
db 'punpcklqdq',6Ch
dw sse_pd_instruction-instruction_handler
db 'vcmptruepd',0Fh
dw avx_cmp_pd_instruction-instruction_handler
db 'vcmptrueps',0Fh
dw avx_cmp_ps_instruction-instruction_handler
db 'vcmptruesd',0Fh
dw avx_cmp_sd_instruction-instruction_handler
db 'vcmptruess',0Fh
dw avx_cmp_ss_instruction-instruction_handler
db 'vcvttpd2dq',0E6h
dw avx_cvtpd2ps_instruction-instruction_handler
db 'vcvttps2dq',5Bh
dw avx_cvttps2dq_instruction-instruction_handler
db 'vcvttsd2si',2Ch
dw avx_cvtsd2si_instruction-instruction_handler
db 'vcvttss2si',2Ch
dw avx_cvtss2si_instruction-instruction_handler
db 'vextractps',0
dw avx_extractps_instruction-instruction_handler
2894,32 → 2894,32
db 'vmaskmovpd',2Dh
dw avx_maskmov_instruction-instruction_handler
db 'vmaskmovps',2Ch
dw avx_maskmov_instruction-instruction_handler
db 'vpclmulqdq',-1
dw avx_pclmulqdq_instruction-instruction_handler
db 'vpcmpestri',61h
dw avx_single_source_128bit_instruction_3a_imm8-instruction_handler
db 'vpcmpestrm',60h
dw avx_single_source_128bit_instruction_3a_imm8-instruction_handler
db 'vpcmpistri',63h
dw avx_single_source_128bit_instruction_3a_imm8-instruction_handler
db 'vpcmpistrm',62h
dw avx_single_source_128bit_instruction_3a_imm8-instruction_handler
db 'vpcomnequb',5
dw xop_pcom_ub_instruction-instruction_handler
db 'vpcomnequd',5
dw xop_pcom_ud_instruction-instruction_handler
db 'vpcomnequq',5
dw xop_pcom_uq_instruction-instruction_handler
db 'vpcomnequw',5
dw xop_pcom_uw_instruction-instruction_handler
db 'vpcomtrueb',7
dw xop_pcom_b_instruction-instruction_handler
db 'vpcomtrued',7
dw xop_pcom_d_instruction-instruction_handler
db 'vpcomtrueq',7
dw xop_pcom_q_instruction-instruction_handler
db 'vpcomtruew',7
dw avx_maskmov_instruction-instruction_handler
db 'vpclmulqdq',-1
dw avx_pclmulqdq_instruction-instruction_handler
db 'vpcmpestri',61h
dw avx_single_source_128bit_instruction_3a_imm8-instruction_handler
db 'vpcmpestrm',60h
dw avx_single_source_128bit_instruction_3a_imm8-instruction_handler
db 'vpcmpistri',63h
dw avx_single_source_128bit_instruction_3a_imm8-instruction_handler
db 'vpcmpistrm',62h
dw avx_single_source_128bit_instruction_3a_imm8-instruction_handler
db 'vpcomnequb',5
dw xop_pcom_ub_instruction-instruction_handler
db 'vpcomnequd',5
dw xop_pcom_ud_instruction-instruction_handler
db 'vpcomnequq',5
dw xop_pcom_uq_instruction-instruction_handler
db 'vpcomnequw',5
dw xop_pcom_uw_instruction-instruction_handler
db 'vpcomtrueb',7
dw xop_pcom_b_instruction-instruction_handler
db 'vpcomtrued',7
dw xop_pcom_d_instruction-instruction_handler
db 'vpcomtrueq',7
dw xop_pcom_q_instruction-instruction_handler
db 'vpcomtruew',7
dw xop_pcom_w_instruction-instruction_handler
db 'vperm2f128',6
dw avx_perm2f128_instruction-instruction_handler
2940,7 → 2940,7
db 'vpmacssdqh',8Fh
dw xop_triple_source_128bit_instruction-instruction_handler
db 'vpmacssdql',87h
dw xop_triple_source_128bit_instruction-instruction_handler
dw xop_triple_source_128bit_instruction-instruction_handler
db 'vpmadcsswd',0A6h
dw xop_triple_source_128bit_instruction-instruction_handler
db 'vpmaddubsw',4
2964,154 → 2964,154
db 'vzeroupper',77h
dw vzeroupper_instruction-instruction_handler
db 'xsaveopt64',110b
dw fxsave_instruction_64bit-instruction_handler
instructions_11:
db 'pclmulhqhdq',10001b
dw pclmulqdq_instruction-instruction_handler
db 'pclmullqhdq',10000b
dw pclmulqdq_instruction-instruction_handler
db 'prefetchnta',0
dw prefetch_instruction-instruction_handler
db 'vaesdeclast',0DFh
dw avx_128bit_instruction_38-instruction_handler
db 'vaesenclast',0DDh
dw avx_128bit_instruction_38-instruction_handler
db 'vcmpeq_ospd',10h
dw avx_cmp_pd_instruction-instruction_handler
db 'vcmpeq_osps',10h
dw avx_cmp_ps_instruction-instruction_handler
db 'vcmpeq_ossd',10h
dw avx_cmp_sd_instruction-instruction_handler
db 'vcmpeq_osss',10h
dw avx_cmp_ss_instruction-instruction_handler
db 'vcmpeq_uqpd',8
dw avx_cmp_pd_instruction-instruction_handler
db 'vcmpeq_uqps',8
dw avx_cmp_ps_instruction-instruction_handler
db 'vcmpeq_uqsd',8
dw avx_cmp_sd_instruction-instruction_handler
db 'vcmpeq_uqss',8
dw avx_cmp_ss_instruction-instruction_handler
db 'vcmpeq_uspd',18h
dw avx_cmp_pd_instruction-instruction_handler
db 'vcmpeq_usps',18h
dw avx_cmp_ps_instruction-instruction_handler
db 'vcmpeq_ussd',18h
dw avx_cmp_sd_instruction-instruction_handler
db 'vcmpeq_usss',18h
dw avx_cmp_ss_instruction-instruction_handler
db 'vcmpfalsepd',0Bh
dw avx_cmp_pd_instruction-instruction_handler
db 'vcmpfalseps',0Bh
dw avx_cmp_ps_instruction-instruction_handler
db 'vcmpfalsesd',0Bh
dw avx_cmp_sd_instruction-instruction_handler
db 'vcmpfalsess',0Bh
dw avx_cmp_ss_instruction-instruction_handler
db 'vcmpge_oqpd',1Dh
dw avx_cmp_pd_instruction-instruction_handler
db 'vcmpge_oqps',1Dh
dw avx_cmp_ps_instruction-instruction_handler
db 'vcmpge_oqsd',1Dh
dw avx_cmp_sd_instruction-instruction_handler
db 'vcmpge_oqss',1Dh
dw avx_cmp_ss_instruction-instruction_handler
db 'vcmpgt_oqpd',1Eh
dw avx_cmp_pd_instruction-instruction_handler
db 'vcmpgt_oqps',1Eh
dw avx_cmp_ps_instruction-instruction_handler
db 'vcmpgt_oqsd',1Eh
dw avx_cmp_sd_instruction-instruction_handler
db 'vcmpgt_oqss',1Eh
dw avx_cmp_ss_instruction-instruction_handler
db 'vcmple_oqpd',12h
dw avx_cmp_pd_instruction-instruction_handler
db 'vcmple_oqps',12h
dw avx_cmp_ps_instruction-instruction_handler
db 'vcmple_oqsd',12h
dw avx_cmp_sd_instruction-instruction_handler
db 'vcmple_oqss',12h
dw avx_cmp_ss_instruction-instruction_handler
db 'vcmplt_oqpd',11h
dw avx_cmp_pd_instruction-instruction_handler
db 'vcmplt_oqps',11h
dw avx_cmp_ps_instruction-instruction_handler
db 'vcmplt_oqsd',11h
dw avx_cmp_sd_instruction-instruction_handler
db 'vcmplt_oqss',11h
dw avx_cmp_ss_instruction-instruction_handler
db 'vcmpord_spd',17h
dw avx_cmp_pd_instruction-instruction_handler
db 'vcmpord_sps',17h
dw avx_cmp_ps_instruction-instruction_handler
db 'vcmpord_ssd',17h
dw avx_cmp_sd_instruction-instruction_handler
db 'vcmpord_sss',17h
dw avx_cmp_ss_instruction-instruction_handler
db 'vcmpunordpd',3
dw avx_cmp_pd_instruction-instruction_handler
db 'vcmpunordps',3
dw avx_cmp_ps_instruction-instruction_handler
db 'vcmpunordsd',3
dw avx_cmp_sd_instruction-instruction_handler
db 'vcmpunordss',3
dw avx_cmp_ss_instruction-instruction_handler
db 'vfmadd132pd',98h
dw fma_instruction_pd-instruction_handler
db 'vfmadd132ps',98h
dw fma_instruction_ps-instruction_handler
db 'vfmadd132sd',99h
dw fma_instruction_sd-instruction_handler
db 'vfmadd132ss',99h
dw fma_instruction_ss-instruction_handler
db 'vfmadd213pd',0A8h
dw fma_instruction_pd-instruction_handler
db 'vfmadd213ps',0A8h
dw fma_instruction_ps-instruction_handler
db 'vfmadd213sd',0A9h
dw fma_instruction_sd-instruction_handler
db 'vfmadd213ss',0A9h
dw fma_instruction_ss-instruction_handler
db 'vfmadd231pd',0B8h
dw fma_instruction_pd-instruction_handler
db 'vfmadd231ps',0B8h
dw fma_instruction_ps-instruction_handler
db 'vfmadd231sd',0B9h
dw fma_instruction_sd-instruction_handler
db 'vfmadd231ss',0B9h
dw fma_instruction_ss-instruction_handler
db 'vfmaddsubpd',5Dh
dw fma4_instruction_p-instruction_handler
db 'vfmaddsubps',5Ch
dw fma4_instruction_p-instruction_handler
db 'vfmsub132pd',9Ah
dw fma_instruction_pd-instruction_handler
db 'vfmsub132ps',9Ah
dw fma_instruction_ps-instruction_handler
db 'vfmsub132sd',9Bh
dw fma_instruction_sd-instruction_handler
db 'vfmsub132ss',9Bh
dw fma_instruction_ss-instruction_handler
db 'vfmsub213pd',0AAh
dw fma_instruction_pd-instruction_handler
db 'vfmsub213ps',0AAh
dw fma_instruction_ps-instruction_handler
db 'vfmsub213sd',0ABh
dw fma_instruction_sd-instruction_handler
db 'vfmsub213ss',0ABh
dw fma_instruction_ss-instruction_handler
db 'vfmsub231pd',0BAh
dw fma_instruction_pd-instruction_handler
db 'vfmsub231ps',0BAh
dw fma_instruction_ps-instruction_handler
db 'vfmsub231sd',0BBh
dw fma_instruction_sd-instruction_handler
db 'vfmsub231ss',0BBh
dw fma_instruction_ss-instruction_handler
db 'vfmsubaddpd',5Fh
dw fma4_instruction_p-instruction_handler
db 'vfmsubaddps',5Eh
dw fxsave_instruction_64bit-instruction_handler
instructions_11:
db 'pclmulhqhdq',10001b
dw pclmulqdq_instruction-instruction_handler
db 'pclmullqhdq',10000b
dw pclmulqdq_instruction-instruction_handler
db 'prefetchnta',0
dw prefetch_instruction-instruction_handler
db 'vaesdeclast',0DFh
dw avx_128bit_instruction_38-instruction_handler
db 'vaesenclast',0DDh
dw avx_128bit_instruction_38-instruction_handler
db 'vcmpeq_ospd',10h
dw avx_cmp_pd_instruction-instruction_handler
db 'vcmpeq_osps',10h
dw avx_cmp_ps_instruction-instruction_handler
db 'vcmpeq_ossd',10h
dw avx_cmp_sd_instruction-instruction_handler
db 'vcmpeq_osss',10h
dw avx_cmp_ss_instruction-instruction_handler
db 'vcmpeq_uqpd',8
dw avx_cmp_pd_instruction-instruction_handler
db 'vcmpeq_uqps',8
dw avx_cmp_ps_instruction-instruction_handler
db 'vcmpeq_uqsd',8
dw avx_cmp_sd_instruction-instruction_handler
db 'vcmpeq_uqss',8
dw avx_cmp_ss_instruction-instruction_handler
db 'vcmpeq_uspd',18h
dw avx_cmp_pd_instruction-instruction_handler
db 'vcmpeq_usps',18h
dw avx_cmp_ps_instruction-instruction_handler
db 'vcmpeq_ussd',18h
dw avx_cmp_sd_instruction-instruction_handler
db 'vcmpeq_usss',18h
dw avx_cmp_ss_instruction-instruction_handler
db 'vcmpfalsepd',0Bh
dw avx_cmp_pd_instruction-instruction_handler
db 'vcmpfalseps',0Bh
dw avx_cmp_ps_instruction-instruction_handler
db 'vcmpfalsesd',0Bh
dw avx_cmp_sd_instruction-instruction_handler
db 'vcmpfalsess',0Bh
dw avx_cmp_ss_instruction-instruction_handler
db 'vcmpge_oqpd',1Dh
dw avx_cmp_pd_instruction-instruction_handler
db 'vcmpge_oqps',1Dh
dw avx_cmp_ps_instruction-instruction_handler
db 'vcmpge_oqsd',1Dh
dw avx_cmp_sd_instruction-instruction_handler
db 'vcmpge_oqss',1Dh
dw avx_cmp_ss_instruction-instruction_handler
db 'vcmpgt_oqpd',1Eh
dw avx_cmp_pd_instruction-instruction_handler
db 'vcmpgt_oqps',1Eh
dw avx_cmp_ps_instruction-instruction_handler
db 'vcmpgt_oqsd',1Eh
dw avx_cmp_sd_instruction-instruction_handler
db 'vcmpgt_oqss',1Eh
dw avx_cmp_ss_instruction-instruction_handler
db 'vcmple_oqpd',12h
dw avx_cmp_pd_instruction-instruction_handler
db 'vcmple_oqps',12h
dw avx_cmp_ps_instruction-instruction_handler
db 'vcmple_oqsd',12h
dw avx_cmp_sd_instruction-instruction_handler
db 'vcmple_oqss',12h
dw avx_cmp_ss_instruction-instruction_handler
db 'vcmplt_oqpd',11h
dw avx_cmp_pd_instruction-instruction_handler
db 'vcmplt_oqps',11h
dw avx_cmp_ps_instruction-instruction_handler
db 'vcmplt_oqsd',11h
dw avx_cmp_sd_instruction-instruction_handler
db 'vcmplt_oqss',11h
dw avx_cmp_ss_instruction-instruction_handler
db 'vcmpord_spd',17h
dw avx_cmp_pd_instruction-instruction_handler
db 'vcmpord_sps',17h
dw avx_cmp_ps_instruction-instruction_handler
db 'vcmpord_ssd',17h
dw avx_cmp_sd_instruction-instruction_handler
db 'vcmpord_sss',17h
dw avx_cmp_ss_instruction-instruction_handler
db 'vcmpunordpd',3
dw avx_cmp_pd_instruction-instruction_handler
db 'vcmpunordps',3
dw avx_cmp_ps_instruction-instruction_handler
db 'vcmpunordsd',3
dw avx_cmp_sd_instruction-instruction_handler
db 'vcmpunordss',3
dw avx_cmp_ss_instruction-instruction_handler
db 'vfmadd132pd',98h
dw fma_instruction_pd-instruction_handler
db 'vfmadd132ps',98h
dw fma_instruction_ps-instruction_handler
db 'vfmadd132sd',99h
dw fma_instruction_sd-instruction_handler
db 'vfmadd132ss',99h
dw fma_instruction_ss-instruction_handler
db 'vfmadd213pd',0A8h
dw fma_instruction_pd-instruction_handler
db 'vfmadd213ps',0A8h
dw fma_instruction_ps-instruction_handler
db 'vfmadd213sd',0A9h
dw fma_instruction_sd-instruction_handler
db 'vfmadd213ss',0A9h
dw fma_instruction_ss-instruction_handler
db 'vfmadd231pd',0B8h
dw fma_instruction_pd-instruction_handler
db 'vfmadd231ps',0B8h
dw fma_instruction_ps-instruction_handler
db 'vfmadd231sd',0B9h
dw fma_instruction_sd-instruction_handler
db 'vfmadd231ss',0B9h
dw fma_instruction_ss-instruction_handler
db 'vfmaddsubpd',5Dh
dw fma4_instruction_p-instruction_handler
db 'vfmaddsubps',5Ch
dw fma4_instruction_p-instruction_handler
db 'vfmsub132pd',9Ah
dw fma_instruction_pd-instruction_handler
db 'vfmsub132ps',9Ah
dw fma_instruction_ps-instruction_handler
db 'vfmsub132sd',9Bh
dw fma_instruction_sd-instruction_handler
db 'vfmsub132ss',9Bh
dw fma_instruction_ss-instruction_handler
db 'vfmsub213pd',0AAh
dw fma_instruction_pd-instruction_handler
db 'vfmsub213ps',0AAh
dw fma_instruction_ps-instruction_handler
db 'vfmsub213sd',0ABh
dw fma_instruction_sd-instruction_handler
db 'vfmsub213ss',0ABh
dw fma_instruction_ss-instruction_handler
db 'vfmsub231pd',0BAh
dw fma_instruction_pd-instruction_handler
db 'vfmsub231ps',0BAh
dw fma_instruction_ps-instruction_handler
db 'vfmsub231sd',0BBh
dw fma_instruction_sd-instruction_handler
db 'vfmsub231ss',0BBh
dw fma_instruction_ss-instruction_handler
db 'vfmsubaddpd',5Fh
dw fma4_instruction_p-instruction_handler
db 'vfmsubaddps',5Eh
dw fma4_instruction_p-instruction_handler
db 'vinsertf128',18h
dw avx_insertf128_instruction-instruction_handler
db 'vinserti128',38h
3119,19 → 3119,19
db 'vmaskmovdqu',0
dw avx_maskmovdqu_instruction-instruction_handler
db 'vpcomfalseb',6
dw xop_pcom_b_instruction-instruction_handler
db 'vpcomfalsed',6
dw xop_pcom_d_instruction-instruction_handler
db 'vpcomfalseq',6
dw xop_pcom_q_instruction-instruction_handler
db 'vpcomfalsew',6
dw xop_pcom_w_instruction-instruction_handler
db 'vpcomtrueub',7
dw xop_pcom_ub_instruction-instruction_handler
db 'vpcomtrueud',7
dw xop_pcom_ud_instruction-instruction_handler
db 'vpcomtrueuq',7
dw xop_pcom_uq_instruction-instruction_handler
dw xop_pcom_b_instruction-instruction_handler
db 'vpcomfalsed',6
dw xop_pcom_d_instruction-instruction_handler
db 'vpcomfalseq',6
dw xop_pcom_q_instruction-instruction_handler
db 'vpcomfalsew',6
dw xop_pcom_w_instruction-instruction_handler
db 'vpcomtrueub',7
dw xop_pcom_ub_instruction-instruction_handler
db 'vpcomtrueud',7
dw xop_pcom_ud_instruction-instruction_handler
db 'vpcomtrueuq',7
dw xop_pcom_uq_instruction-instruction_handler
db 'vpcomtrueuw',7
dw xop_pcom_uw_instruction-instruction_handler
db 'vphminposuw',41h
3155,60 → 3155,60
dw avx_broadcastss_instruction-instruction_handler
db 'vcmpneq_oqpd',0Ch
dw avx_cmp_pd_instruction-instruction_handler
db 'vcmpneq_oqps',0Ch
dw avx_cmp_ps_instruction-instruction_handler
db 'vcmpneq_oqsd',0Ch
dw avx_cmp_sd_instruction-instruction_handler
db 'vcmpneq_oqss',0Ch
dw avx_cmp_ss_instruction-instruction_handler
db 'vcmpneq_ospd',1Ch
dw avx_cmp_pd_instruction-instruction_handler
db 'vcmpneq_osps',1Ch
dw avx_cmp_ps_instruction-instruction_handler
db 'vcmpneq_ossd',1Ch
dw avx_cmp_sd_instruction-instruction_handler
db 'vcmpneq_osss',1Ch
dw avx_cmp_ss_instruction-instruction_handler
db 'vcmpneq_uspd',14h
dw avx_cmp_pd_instruction-instruction_handler
db 'vcmpneq_usps',14h
dw avx_cmp_ps_instruction-instruction_handler
db 'vcmpneq_ussd',14h
dw avx_cmp_sd_instruction-instruction_handler
db 'vcmpneq_usss',14h
dw avx_cmp_ss_instruction-instruction_handler
db 'vcmpnge_uqpd',19h
dw avx_cmp_pd_instruction-instruction_handler
db 'vcmpnge_uqps',19h
dw avx_cmp_ps_instruction-instruction_handler
db 'vcmpnge_uqsd',19h
dw avx_cmp_sd_instruction-instruction_handler
db 'vcmpnge_uqss',19h
dw avx_cmp_ss_instruction-instruction_handler
db 'vcmpngt_uqpd',1Ah
dw avx_cmp_pd_instruction-instruction_handler
db 'vcmpngt_uqps',1Ah
dw avx_cmp_ps_instruction-instruction_handler
db 'vcmpngt_uqsd',1Ah
dw avx_cmp_sd_instruction-instruction_handler
db 'vcmpngt_uqss',1Ah
dw avx_cmp_ss_instruction-instruction_handler
db 'vcmpnle_uqpd',16h
dw avx_cmp_pd_instruction-instruction_handler
db 'vcmpnle_uqps',16h
dw avx_cmp_ps_instruction-instruction_handler
db 'vcmpnle_uqsd',16h
dw avx_cmp_sd_instruction-instruction_handler
db 'vcmpnle_uqss',16h
dw avx_cmp_ss_instruction-instruction_handler
db 'vcmpnlt_uqpd',15h
dw avx_cmp_pd_instruction-instruction_handler
db 'vcmpnlt_uqps',15h
dw avx_cmp_ps_instruction-instruction_handler
db 'vcmpnlt_uqsd',15h
dw avx_cmp_sd_instruction-instruction_handler
db 'vcmpnlt_uqss',15h
db 'vcmpneq_oqps',0Ch
dw avx_cmp_ps_instruction-instruction_handler
db 'vcmpneq_oqsd',0Ch
dw avx_cmp_sd_instruction-instruction_handler
db 'vcmpneq_oqss',0Ch
dw avx_cmp_ss_instruction-instruction_handler
db 'vcmpneq_ospd',1Ch
dw avx_cmp_pd_instruction-instruction_handler
db 'vcmpneq_osps',1Ch
dw avx_cmp_ps_instruction-instruction_handler
db 'vcmpneq_ossd',1Ch
dw avx_cmp_sd_instruction-instruction_handler
db 'vcmpneq_osss',1Ch
dw avx_cmp_ss_instruction-instruction_handler
db 'vcmpneq_uspd',14h
dw avx_cmp_pd_instruction-instruction_handler
db 'vcmpneq_usps',14h
dw avx_cmp_ps_instruction-instruction_handler
db 'vcmpneq_ussd',14h
dw avx_cmp_sd_instruction-instruction_handler
db 'vcmpneq_usss',14h
dw avx_cmp_ss_instruction-instruction_handler
db 'vcmpnge_uqpd',19h
dw avx_cmp_pd_instruction-instruction_handler
db 'vcmpnge_uqps',19h
dw avx_cmp_ps_instruction-instruction_handler
db 'vcmpnge_uqsd',19h
dw avx_cmp_sd_instruction-instruction_handler
db 'vcmpnge_uqss',19h
dw avx_cmp_ss_instruction-instruction_handler
db 'vcmpngt_uqpd',1Ah
dw avx_cmp_pd_instruction-instruction_handler
db 'vcmpngt_uqps',1Ah
dw avx_cmp_ps_instruction-instruction_handler
db 'vcmpngt_uqsd',1Ah
dw avx_cmp_sd_instruction-instruction_handler
db 'vcmpngt_uqss',1Ah
dw avx_cmp_ss_instruction-instruction_handler
db 'vcmpnle_uqpd',16h
dw avx_cmp_pd_instruction-instruction_handler
db 'vcmpnle_uqps',16h
dw avx_cmp_ps_instruction-instruction_handler
db 'vcmpnle_uqsd',16h
dw avx_cmp_sd_instruction-instruction_handler
db 'vcmpnle_uqss',16h
dw avx_cmp_ss_instruction-instruction_handler
db 'vcmpnlt_uqpd',15h
dw avx_cmp_pd_instruction-instruction_handler
db 'vcmpnlt_uqps',15h
dw avx_cmp_ps_instruction-instruction_handler
db 'vcmpnlt_uqsd',15h
dw avx_cmp_sd_instruction-instruction_handler
db 'vcmpnlt_uqss',15h
dw avx_cmp_ss_instruction-instruction_handler
db 'vextractf128',19h
dw avx_extractf128_instruction-instruction_handler
db 'vextracti128',39h
3216,49 → 3216,49
db 'vfnmadd132pd',9Ch
dw fma_instruction_pd-instruction_handler
db 'vfnmadd132ps',9Ch
dw fma_instruction_ps-instruction_handler
db 'vfnmadd132sd',9Dh
dw fma_instruction_sd-instruction_handler
db 'vfnmadd132ss',9Dh
dw fma_instruction_ss-instruction_handler
db 'vfnmadd213pd',0ACh
dw fma_instruction_pd-instruction_handler
db 'vfnmadd213ps',0ACh
dw fma_instruction_ps-instruction_handler
db 'vfnmadd213sd',0ADh
dw fma_instruction_sd-instruction_handler
db 'vfnmadd213ss',0ADh
dw fma_instruction_ss-instruction_handler
db 'vfnmadd231pd',0BCh
dw fma_instruction_pd-instruction_handler
db 'vfnmadd231ps',0BCh
dw fma_instruction_ps-instruction_handler
db 'vfnmadd231sd',0BDh
dw fma_instruction_sd-instruction_handler
db 'vfnmadd231ss',0BDh
dw fma_instruction_ss-instruction_handler
db 'vfnmsub132pd',9Eh
dw fma_instruction_pd-instruction_handler
db 'vfnmsub132ps',9Eh
dw fma_instruction_ps-instruction_handler
db 'vfnmsub132sd',9Fh
dw fma_instruction_sd-instruction_handler
db 'vfnmsub132ss',9Fh
dw fma_instruction_ss-instruction_handler
db 'vfnmsub213pd',0AEh
dw fma_instruction_pd-instruction_handler
db 'vfnmsub213ps',0AEh
dw fma_instruction_ps-instruction_handler
db 'vfnmsub213sd',0AFh
dw fma_instruction_sd-instruction_handler
db 'vfnmsub213ss',0AFh
dw fma_instruction_ss-instruction_handler
db 'vfnmsub231pd',0BEh
dw fma_instruction_pd-instruction_handler
db 'vfnmsub231ps',0BEh
dw fma_instruction_ps-instruction_handler
db 'vfnmsub231sd',0BFh
dw fma_instruction_ps-instruction_handler
db 'vfnmadd132sd',9Dh
dw fma_instruction_sd-instruction_handler
db 'vfnmadd132ss',9Dh
dw fma_instruction_ss-instruction_handler
db 'vfnmadd213pd',0ACh
dw fma_instruction_pd-instruction_handler
db 'vfnmadd213ps',0ACh
dw fma_instruction_ps-instruction_handler
db 'vfnmadd213sd',0ADh
dw fma_instruction_sd-instruction_handler
db 'vfnmadd213ss',0ADh
dw fma_instruction_ss-instruction_handler
db 'vfnmadd231pd',0BCh
dw fma_instruction_pd-instruction_handler
db 'vfnmadd231ps',0BCh
dw fma_instruction_ps-instruction_handler
db 'vfnmadd231sd',0BDh
dw fma_instruction_sd-instruction_handler
db 'vfnmadd231ss',0BDh
dw fma_instruction_ss-instruction_handler
db 'vfnmsub132pd',9Eh
dw fma_instruction_pd-instruction_handler
db 'vfnmsub132ps',9Eh
dw fma_instruction_ps-instruction_handler
db 'vfnmsub132sd',9Fh
dw fma_instruction_sd-instruction_handler
db 'vfnmsub132ss',9Fh
dw fma_instruction_ss-instruction_handler
db 'vfnmsub213pd',0AEh
dw fma_instruction_pd-instruction_handler
db 'vfnmsub213ps',0AEh
dw fma_instruction_ps-instruction_handler
db 'vfnmsub213sd',0AFh
dw fma_instruction_sd-instruction_handler
db 'vfnmsub213ss',0AFh
dw fma_instruction_ss-instruction_handler
db 'vfnmsub231pd',0BEh
dw fma_instruction_pd-instruction_handler
db 'vfnmsub231ps',0BEh
dw fma_instruction_ps-instruction_handler
db 'vfnmsub231sd',0BFh
dw fma_instruction_sd-instruction_handler
db 'vfnmsub231ss',0BFh
dw fma_instruction_ss-instruction_handler
db 'vpbroadcastb',78h
3272,46 → 3272,46
db 'vpclmulhqhdq',10001b
dw avx_pclmulqdq_instruction-instruction_handler
db 'vpclmullqhdq',10000b
dw avx_pclmulqdq_instruction-instruction_handler
db 'vpcomfalseub',6
dw xop_pcom_ub_instruction-instruction_handler
db 'vpcomfalseud',6
dw xop_pcom_ud_instruction-instruction_handler
db 'vpcomfalseuq',6
dw xop_pcom_uq_instruction-instruction_handler
db 'vpcomfalseuw',6
dw xop_pcom_uw_instruction-instruction_handler
db 'vpermilmo2pd',10b
dw vpermil_2pd_instruction-instruction_handler
db 'vpermilmo2ps',10b
dw vpermil_2ps_instruction-instruction_handler
db 'vpermilmz2pd',11b
dw vpermil_2pd_instruction-instruction_handler
db 'vpermilmz2ps',11b
dw vpermil_2ps_instruction-instruction_handler
db 'vpermiltd2pd',0
dw vpermil_2pd_instruction-instruction_handler
db 'vpermiltd2ps',0
dw vpermil_2ps_instruction-instruction_handler
instructions_13:
db 'vcmptrue_uspd',1Fh
dw avx_cmp_pd_instruction-instruction_handler
db 'vcmptrue_usps',1Fh
dw avx_cmp_ps_instruction-instruction_handler
db 'vcmptrue_ussd',1Fh
dw avx_cmp_sd_instruction-instruction_handler
db 'vcmptrue_usss',1Fh
dw avx_cmp_ss_instruction-instruction_handler
db 'vcmpunord_spd',13h
dw avx_cmp_pd_instruction-instruction_handler
db 'vcmpunord_sps',13h
dw avx_cmp_ps_instruction-instruction_handler
db 'vcmpunord_ssd',13h
dw avx_cmp_sd_instruction-instruction_handler
db 'vcmpunord_sss',13h
dw avx_cmp_ss_instruction-instruction_handler
db 'vpclmulhqlqdq',1
dw avx_pclmulqdq_instruction-instruction_handler
dw avx_pclmulqdq_instruction-instruction_handler
db 'vpcomfalseub',6
dw xop_pcom_ub_instruction-instruction_handler
db 'vpcomfalseud',6
dw xop_pcom_ud_instruction-instruction_handler
db 'vpcomfalseuq',6
dw xop_pcom_uq_instruction-instruction_handler
db 'vpcomfalseuw',6
dw xop_pcom_uw_instruction-instruction_handler
db 'vpermilmo2pd',10b
dw vpermil_2pd_instruction-instruction_handler
db 'vpermilmo2ps',10b
dw vpermil_2ps_instruction-instruction_handler
db 'vpermilmz2pd',11b
dw vpermil_2pd_instruction-instruction_handler
db 'vpermilmz2ps',11b
dw vpermil_2ps_instruction-instruction_handler
db 'vpermiltd2pd',0
dw vpermil_2pd_instruction-instruction_handler
db 'vpermiltd2ps',0
dw vpermil_2ps_instruction-instruction_handler
instructions_13:
db 'vcmptrue_uspd',1Fh
dw avx_cmp_pd_instruction-instruction_handler
db 'vcmptrue_usps',1Fh
dw avx_cmp_ps_instruction-instruction_handler
db 'vcmptrue_ussd',1Fh
dw avx_cmp_sd_instruction-instruction_handler
db 'vcmptrue_usss',1Fh
dw avx_cmp_ss_instruction-instruction_handler
db 'vcmpunord_spd',13h
dw avx_cmp_pd_instruction-instruction_handler
db 'vcmpunord_sps',13h
dw avx_cmp_ps_instruction-instruction_handler
db 'vcmpunord_ssd',13h
dw avx_cmp_sd_instruction-instruction_handler
db 'vcmpunord_sss',13h
dw avx_cmp_ss_instruction-instruction_handler
db 'vpclmulhqlqdq',1
dw avx_pclmulqdq_instruction-instruction_handler
db 'vpclmullqlqdq',0
dw avx_pclmulqdq_instruction-instruction_handler
instructions_14:
3322,81 → 3322,81
db 'vcmpfalse_ospd',1Bh
dw avx_cmp_pd_instruction-instruction_handler
db 'vcmpfalse_osps',1Bh
dw avx_cmp_ps_instruction-instruction_handler
db 'vcmpfalse_ossd',1Bh
dw avx_cmp_sd_instruction-instruction_handler
db 'vcmpfalse_osss',1Bh
dw avx_cmp_ss_instruction-instruction_handler
db 'vfmaddsub132pd',96h
dw fma_instruction_pd-instruction_handler
db 'vfmaddsub132ps',96h
dw fma_instruction_ps-instruction_handler
db 'vfmaddsub213pd',0A6h
dw fma_instruction_pd-instruction_handler
db 'vfmaddsub213ps',0A6h
dw fma_instruction_ps-instruction_handler
db 'vfmaddsub231pd',0B6h
dw fma_instruction_pd-instruction_handler
db 'vfmaddsub231ps',0B6h
dw fma_instruction_ps-instruction_handler
db 'vfmsubadd132pd',97h
dw fma_instruction_pd-instruction_handler
db 'vfmsubadd132ps',97h
dw fma_instruction_ps-instruction_handler
db 'vfmsubadd213pd',0A7h
dw fma_instruction_pd-instruction_handler
db 'vfmsubadd213ps',0A7h
dw fma_instruction_ps-instruction_handler
db 'vfmsubadd231pd',0B7h
dw fma_instruction_pd-instruction_handler
db 'vfmsubadd231ps',0B7h
dw fma_instruction_ps-instruction_handler
instructions_15:
db 'aeskeygenassist',0DFh
dw sse4_instruction_3a_imm8-instruction_handler
instructions_16:
db 'vaeskeygenassist',0DFh
dw avx_single_source_128bit_instruction_3a_imm8-instruction_handler
instructions_end:
 
data_directives:
dw data_directives_2-data_directives,(data_directives_3-data_directives_2)/(2+3)
dw data_directives_3-data_directives,(data_directives_4-data_directives_3)/(3+3)
dw data_directives_4-data_directives,(data_directives_end-data_directives_4)/(4+3)
 
data_directives_2:
db 'db',1
dw data_bytes-instruction_handler
db 'dd',4
dw data_dwords-instruction_handler
db 'df',6
dw data_pwords-instruction_handler
db 'dp',6
dw data_pwords-instruction_handler
db 'dq',8
dw data_qwords-instruction_handler
db 'dt',10
dw data_twords-instruction_handler
db 'du',2
dw data_unicode-instruction_handler
db 'dw',2
dw data_words-instruction_handler
db 'rb',1
dw reserve_bytes-instruction_handler
db 'rd',4
dw reserve_dwords-instruction_handler
db 'rf',6
dw reserve_pwords-instruction_handler
db 'rp',6
dw reserve_pwords-instruction_handler
db 'rq',8
dw reserve_qwords-instruction_handler
db 'rt',10
dw reserve_twords-instruction_handler
db 'rw',2
dw reserve_words-instruction_handler
data_directives_3:
data_directives_4:
db 'file',1
dw data_file-instruction_handler
data_directives_end:
dw avx_cmp_ps_instruction-instruction_handler
db 'vcmpfalse_ossd',1Bh
dw avx_cmp_sd_instruction-instruction_handler
db 'vcmpfalse_osss',1Bh
dw avx_cmp_ss_instruction-instruction_handler
db 'vfmaddsub132pd',96h
dw fma_instruction_pd-instruction_handler
db 'vfmaddsub132ps',96h
dw fma_instruction_ps-instruction_handler
db 'vfmaddsub213pd',0A6h
dw fma_instruction_pd-instruction_handler
db 'vfmaddsub213ps',0A6h
dw fma_instruction_ps-instruction_handler
db 'vfmaddsub231pd',0B6h
dw fma_instruction_pd-instruction_handler
db 'vfmaddsub231ps',0B6h
dw fma_instruction_ps-instruction_handler
db 'vfmsubadd132pd',97h
dw fma_instruction_pd-instruction_handler
db 'vfmsubadd132ps',97h
dw fma_instruction_ps-instruction_handler
db 'vfmsubadd213pd',0A7h
dw fma_instruction_pd-instruction_handler
db 'vfmsubadd213ps',0A7h
dw fma_instruction_ps-instruction_handler
db 'vfmsubadd231pd',0B7h
dw fma_instruction_pd-instruction_handler
db 'vfmsubadd231ps',0B7h
dw fma_instruction_ps-instruction_handler
instructions_15:
db 'aeskeygenassist',0DFh
dw sse4_instruction_3a_imm8-instruction_handler
instructions_16:
db 'vaeskeygenassist',0DFh
dw avx_single_source_128bit_instruction_3a_imm8-instruction_handler
instructions_end:
 
data_directives:
dw data_directives_2-data_directives,(data_directives_3-data_directives_2)/(2+3)
dw data_directives_3-data_directives,(data_directives_4-data_directives_3)/(3+3)
dw data_directives_4-data_directives,(data_directives_end-data_directives_4)/(4+3)
 
data_directives_2:
db 'db',1
dw data_bytes-instruction_handler
db 'dd',4
dw data_dwords-instruction_handler
db 'df',6
dw data_pwords-instruction_handler
db 'dp',6
dw data_pwords-instruction_handler
db 'dq',8
dw data_qwords-instruction_handler
db 'dt',10
dw data_twords-instruction_handler
db 'du',2
dw data_unicode-instruction_handler
db 'dw',2
dw data_words-instruction_handler
db 'rb',1
dw reserve_bytes-instruction_handler
db 'rd',4
dw reserve_dwords-instruction_handler
db 'rf',6
dw reserve_pwords-instruction_handler
db 'rp',6
dw reserve_pwords-instruction_handler
db 'rq',8
dw reserve_qwords-instruction_handler
db 'rt',10
dw reserve_twords-instruction_handler
db 'rw',2
dw reserve_words-instruction_handler
data_directives_3:
data_directives_4:
db 'file',1
dw data_file-instruction_handler
data_directives_end:
/programs/develop/fasm/trunk/whatsnew.txt
0,0 → 1,279
 
Visit http://flatassembler.net/ for more information.
 
 
version 1.70.03 (Jun 29, 2012)
 
[-] Allowed to freely upgrade or downgrade the relocatable addresses in
object format between the 32-bit or 64-bit size.
 
 
version 1.70.02 (May 22, 2012)
 
[-] Corrected the optimization of segment prefixes when the extended syntax
of some string instructions ("cmps", "lods", "movs" and "outs") is
used in long mode. Now it is consistent with optimizations done with
all the other instructions.
 
 
version 1.70.01 (Apr 30, 2012)
 
[-] Corrected a recently introduced bug that caused some illegal
address expressions to cause an error prematurely during the
parsing stage.
 
 
version 1.70 (Apr 17, 2012)
 
[+] Added support for AVX, AVX2, AES, CLMUL, FMA, RDRAND, FSGSBASE, F16C,
FMA4, XOP, MOVBE, BMI, TBM, INVPCID, HLE and RTM instruction sets.
 
[+] Added half-precision floating point values support.
 
[+] Extended the syntax of "rept" directive to allow numerical expressions
to be calculated by preprocessor in its arguments.
 
[+] Added "large" and "NX" settings for PE format.
 
[+] Allowed PE fixups to be resolved anywhere in the generated executable.
 
[+] Allowed to specify branding value (use 3 for Linux) after the
"format ELF executable" setting.
 
[+] Added "intepreter", "dynamic" and "note" keywords for creation of
special segments in ELF executables.
 
[-] Fixed long mode opcode generator to allow absolute addresses to be
generated with "qword" keyword inside square brackets.
 
[-] Disallowed negative immediates with "int", "enter", "ret" instructions.
 
[+] Allowed symbolic information dump file to be created even in case of error.
In such case it contains only the preprocessed source that can be extracted
with PREPSRC tool. If error occured during preprocessing, only the source up
to the point of error is provided.
 
[+] Added symbol references table to symbolic dump file.
 
[-] Corrected the "defined" and "used" flags in the symbols dump to reflect the
state from the final assembly pass.
 
[+] Added "assert" directive.
 
[-] Formatter symbols like "PE" or "readable" are now recognized only in the
context of formatter directives, and thus are no longer disallowed as
labels.
 
[+] Macroinstruction argument now can have default value, defined with "="
symbol followed by value after the argument name in definition.
 
[+] Added "relativeto" operator, which can be used in logical expressions
to test whether two values differ only by a constant and not relocatable
amount.
 
[-] Revised the expression calculator, it now is able to correctly perform
calculations in signed and unsigned ranges in full 64-bit. This fixes
a number of issues - the overflow will now be correctly detected for
64-bit values in cases, where previous versions could not distinguish
whether it was an overflow or not. The effect of these corrections is
that "dq" directive will now behave consistently with behavior of the
data directives for smaller sizes, and the same applies to all the
places where "qword" size for value is used.
 
 
version 1.68 (Jun 13, 2009)
 
[+] Added SSSE3 (Supplemental SSE3), SSE4.1, SSE4.2 and SSE4a instructions.
 
[+] Added the AMD SVM and Intel SMX instructions.
 
[+] Added "rdmsrq", "wrmsrq", "sysexitq" and "sysretq" mnemonics for the
64-bit variants of respective instructions.
 
[+] Added "fstenvw", "fstenvd", "fsavew", "fsaved", "frstorw" and "frstord"
mnemonics to allow choosing between 16-bit and 32-bit variants of
structures used by the "fstenv", "fsave" and "frstor" instructions.
 
[+] Added "plt" operator for the ELF output format.
 
[+] Allowed "rva" operator to be used in MS COFF object format, and also
added "static" keyword for the "public" directive.
 
[+] Added Intel-style aliases for the additional long mode 8-bit registers.
 
[-] The PE formatter now automatically detects whether relocatable labels
should be used, depending on whether the fixups directory is placed
somewhere into executable by programer, or not. This makes possible the
more flexible use of the addressing symbols in case of PE executable fixed
at some position.
 
[-] Added support for outputting the 32-bit address relocations in case of
64-bit object formats and PE executable. This makes some specific
instructions compilable, but it also forces linker to put such
generated code into the low 2 gigabytes of addressing space.
 
[+] Added "EFI", "EFIboot" and "EFIruntime" subsystem keywords for PE format.
 
[-] Corrected the precedence of operators of macroinstruction line maker.
The symbol escaping now has always the higher priority than symbol conversion,
and both have higher precedence than concatenation.
 
[+] Allowed to check "@b" and "@f" symbols with "defined" operator.
 
[+] Allowed "as" operator to specify the output file extension when
placed at the end of the "format" directive line.
 
[-] Definition of macro with the same name as one of the preprocessor's directives
is no longer allowed.
 
[+] Allowed single quote character to be put inside the number value,
to help improve long numbers readability.
 
[+] Added optional symbolic information output, and a set of tools that extract
various kinds of information from it.
 
[+] Added "err" directive that allows to signalize error from the source.
 
 
version 1.66 (May 7, 2006)
 
[+] Added "define" directive to preprocessor, which defines symbolic constants,
the same kind as "equ" directive, however there's an important difference
that "define" doesn't process symbolic constants in the value before
assigning it. For example:
 
a equ 1
a equ a+a
 
define b 1
define b b+b
 
defines the "a" constant with value "1+1", but the "b" is defined with
value "b+b". This directive may be useful in some advanced
macroinstructions.
 
[-] Moved part of the conditional expression processing into parser,
for slightly better performance and lesser memory usage by assembler.
The logical values defined with "eq", "eqtype" and "in" operators are now
evaluated by the parser and if they are enough to determine the condition,
the whole block is processed accordingly. Thus this block:
 
if eax eq EAX | 0/0
nop
end if
 
is parsed into just "nop" instruction, since parser is able to determine
that the condition is true, even though one of the logical values makes no
sense - but since this is none of the "eq", "eqtype" and "in" expressions,
the parser doesn't investigate.
 
[-] Also the assembler is now calculating only as many logical values as it
needs to determine the condition. So this block:
 
if defined alpha & alpha
 
end if
 
will not cause error when "alpha" is not defined, as it would with previous
versions. This is because after checking that "defined alpha" is false
condition it doesn't need to know the second logical value to determine the
value of conjunction.
 
[+] Added "short" keyword for specifying jump type, the "jmp byte" form is now
obsolete and no longer correct - use "jmp short" instead.
 
[-] The size operator applied to jump no longer applies to the size of relative
displacement - now it applies to the size of target address.
 
[-] The "ret" instruction with 0 parameter is now assembled into short form,
unless you force using the 16-bit immediate with "word" operator.
 
[+] Added missing extended registers for the 32-bit addressing in long mode.
 
[+] Added "linkremove" and "linkinfo" section flags for MS COFF output.
 
[+] Added support for GOT offsets in ELF object formatter, which can be useful
when making position-independent code for shared libraries. For any label
you can get its offset relative to GOT by preceding it with "rva" operator
(the same keyword as for PE format is used, to avoid adding a new one,
while this one has very similar meaning).
 
[-] Changed ELF executable to use "segment" directive in place of "section",
to make the distinction between the run-time segments and linkable
sections. If you had a "section" directive in your ELF executables and they
no longer assemble, replace it with "segment".
 
[-] The PE formatter now always creates the fixups directory when told to -
even when there are no fixups to be put there (in such case it creates the
directory with one empty block).
 
[-] Some of the internal structures have been extended to provide the
possibility of making extensive symbol dumps.
 
[-] Corrected "fix" directive to keep the value intact before assigning it to the
prioritized constant.
 
[+] The ` operator now works with any kind of symbol; when used with quoted
string it simply does nothing. Thus the sequence of ` operators applied to
one symbol work the same as if there was just one. In similar manner, the
sequence of # operators now works as if it was a single one - using such a
sequence instead of escaping, which was kept for some backward
compatibility, is now deprecated.
 
[-] Corrected order of identifying assembler directives ("if db eq db" was
incorrectly interpreted as data definition).
 
[-] Many other small bugs fixed.
 
 
version 1.64 (Aug 8, 2005)
 
[+] Output of PE executables for Win64 architecture (with "format PE64"
setting).
 
[+] Added "while" and "break" directives.
 
[+] Added "irp" and "irps" directives.
 
[+] The macro arguments can be marked as required with the "*" character.
 
[-] Fixed checking for overflow when multiplying 64-bit values - the result
must always fit in the range of signed 64 integer now.
 
[-] Segment prefixes were generated incorrectly in 16-bit mode when BP was used
as a second addressing register - fixed.
 
[-] The "local" directive was not creating unique labels in some cases - fixed.
 
[-] The "not encodable with long immediate" error in 64-bit mode was sometimes
wrongly signaled - fixed.
 
[-] Other minor fixes and corrections.
 
 
version 1.62 (Jun 14, 2005)
 
[+] Escaping of symbols inside macroinstructions with backslash.
 
[+] Ability of outputting the COFF object files for Win64 architecture
(with "format MS64 COFF" setting).
 
[+] New preprocessor directives: "restruc", "rept" and "match"
 
[+] VMX instructions support (not documented).
 
[+] Extended data directives to allow use of the "dup" operator.
 
[+] Extended "struc" features to allow custom definitions of main structure's
label.
 
[-] When building resources from the the .RES file that contained more
than one resource of the same string name, the separate resource
directories were created with the same names - fixed.
 
[-] Several bugs in the ELF64 object output has been fixed.
 
[-] Corrected behavior of "fix" directive to more straightforward.
 
[-] Fixed bug in "include" directive, which caused files included from within
macros to be processed the wrong way.