forked from KolibriOS/kolibrios
fasm 1.67.26
git-svn-id: svn://kolibrios.org@707 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
03ec9a762d
commit
eda7490bf5
@ -331,10 +331,11 @@ assemble_line:
|
|||||||
or byte [ebx+8],1+2
|
or byte [ebx+8],1+2
|
||||||
jmp instruction_assembled
|
jmp instruction_assembled
|
||||||
assemble_instruction:
|
assemble_instruction:
|
||||||
mov [operand_size],0
|
; mov [operand_size],0
|
||||||
mov [size_override],0
|
; mov [size_override],0
|
||||||
mov [operand_prefix],0
|
; mov [operand_prefix],0
|
||||||
mov [rex_prefix],0
|
; mov [rex_prefix],0
|
||||||
|
mov dword [operand_size],0
|
||||||
mov [immediate_size],0
|
mov [immediate_size],0
|
||||||
movzx ebx,word [esi]
|
movzx ebx,word [esi]
|
||||||
mov al,[esi+2]
|
mov al,[esi+2]
|
||||||
|
@ -583,6 +583,10 @@ instructions_4:
|
|||||||
dw simple_instruction_32bit-assembler
|
dw simple_instruction_32bit-assembler
|
||||||
db 'data',0
|
db 'data',0
|
||||||
dw data_directive-assembler
|
dw data_directive-assembler
|
||||||
|
db 'dppd',41h
|
||||||
|
dw sse4_instruction_3a_imm8-assembler
|
||||||
|
db 'dpps',40h
|
||||||
|
dw sse4_instruction_3a_imm8-assembler
|
||||||
db 'else',0
|
db 'else',0
|
||||||
dw else_directive-assembler
|
dw else_directive-assembler
|
||||||
db 'emms',77h
|
db 'emms',77h
|
||||||
@ -1072,6 +1076,8 @@ instructions_5:
|
|||||||
dw basic_mmx_instruction-assembler
|
dw basic_mmx_instruction-assembler
|
||||||
db 'psubw',0F9h
|
db 'psubw',0F9h
|
||||||
dw basic_mmx_instruction-assembler
|
dw basic_mmx_instruction-assembler
|
||||||
|
db 'ptest',17h
|
||||||
|
dw sse4_instruction_38-assembler
|
||||||
db 'pusha',60h
|
db 'pusha',60h
|
||||||
dw simple_instruction_except64-assembler
|
dw simple_instruction_except64-assembler
|
||||||
db 'pushd',4
|
db 'pushd',4
|
||||||
@ -1293,6 +1299,8 @@ instructions_6:
|
|||||||
dw ffree_instruction-assembler
|
dw ffree_instruction-assembler
|
||||||
db 'fxsave',0
|
db 'fxsave',0
|
||||||
dw fxsave_instruction-assembler
|
dw fxsave_instruction-assembler
|
||||||
|
db 'getsec',37h
|
||||||
|
dw simple_extended_instruction-assembler
|
||||||
db 'haddpd',07Ch
|
db 'haddpd',07Ch
|
||||||
dw sse_pd_instruction-assembler
|
dw sse_pd_instruction-assembler
|
||||||
db 'haddps',07Ch
|
db 'haddps',07Ch
|
||||||
@ -1369,16 +1377,36 @@ instructions_6:
|
|||||||
dw ssse3_instruction-assembler
|
dw ssse3_instruction-assembler
|
||||||
db 'pinsrw',0C4h
|
db 'pinsrw',0C4h
|
||||||
dw pinsrw_instruction-assembler
|
dw pinsrw_instruction-assembler
|
||||||
|
db 'pmaxsb',3Ch
|
||||||
|
dw sse4_instruction_38-assembler
|
||||||
|
db 'pmaxsd',3Dh
|
||||||
|
dw sse4_instruction_38-assembler
|
||||||
db 'pmaxsw',0EEh
|
db 'pmaxsw',0EEh
|
||||||
dw basic_mmx_instruction-assembler
|
dw basic_mmx_instruction-assembler
|
||||||
db 'pmaxub',0DEh
|
db 'pmaxub',0DEh
|
||||||
dw basic_mmx_instruction-assembler
|
dw basic_mmx_instruction-assembler
|
||||||
|
db 'pmaxud',3Fh
|
||||||
|
dw sse4_instruction_38-assembler
|
||||||
|
db 'pmaxuw',3Eh
|
||||||
|
dw sse4_instruction_38-assembler
|
||||||
|
db 'pminsb',38h
|
||||||
|
dw sse4_instruction_38-assembler
|
||||||
|
db 'pminsd',39h
|
||||||
|
dw sse4_instruction_38-assembler
|
||||||
db 'pminsw',0EAh
|
db 'pminsw',0EAh
|
||||||
dw basic_mmx_instruction-assembler
|
dw basic_mmx_instruction-assembler
|
||||||
db 'pminub',0DAh
|
db 'pminub',0DAh
|
||||||
dw basic_mmx_instruction-assembler
|
dw basic_mmx_instruction-assembler
|
||||||
|
db 'pminud',3Bh
|
||||||
|
dw sse4_instruction_38-assembler
|
||||||
|
db 'pminuw',3Ah
|
||||||
|
dw sse4_instruction_38-assembler
|
||||||
|
db 'pmuldq',28h
|
||||||
|
dw sse4_instruction_38-assembler
|
||||||
db 'pmulhw',0E5h
|
db 'pmulhw',0E5h
|
||||||
dw basic_mmx_instruction-assembler
|
dw basic_mmx_instruction-assembler
|
||||||
|
db 'pmulld',40h
|
||||||
|
dw sse4_instruction_38-assembler
|
||||||
db 'pmullw',0D5h
|
db 'pmullw',0D5h
|
||||||
dw basic_mmx_instruction-assembler
|
dw basic_mmx_instruction-assembler
|
||||||
db 'psadbw',0F6h
|
db 'psadbw',0F6h
|
||||||
@ -1436,9 +1464,9 @@ instructions_6:
|
|||||||
db 'sfence',0F8h
|
db 'sfence',0F8h
|
||||||
dw fence_instruction-assembler
|
dw fence_instruction-assembler
|
||||||
db 'shufpd',0C6h
|
db 'shufpd',0C6h
|
||||||
dw sse_pd_instruction-assembler
|
dw sse_pd_instruction_imm8-assembler
|
||||||
db 'shufps',0C6h
|
db 'shufps',0C6h
|
||||||
dw sse_ps_instruction-assembler
|
dw sse_ps_instruction_imm8-assembler
|
||||||
db 'skinit',0
|
db 'skinit',0
|
||||||
dw skinit_instruction-assembler
|
dw skinit_instruction-assembler
|
||||||
db 'sqrtpd',51h
|
db 'sqrtpd',51h
|
||||||
@ -1468,6 +1496,10 @@ instructions_6:
|
|||||||
db 'wrmsrq',30h
|
db 'wrmsrq',30h
|
||||||
dw simple_extended_instruction_64bit-assembler
|
dw simple_extended_instruction_64bit-assembler
|
||||||
instructions_7:
|
instructions_7:
|
||||||
|
db 'blendpd',0Dh
|
||||||
|
dw sse4_instruction_3a_imm8-assembler
|
||||||
|
db 'blendps',0Ch
|
||||||
|
dw sse4_instruction_3a_imm8-assembler
|
||||||
db 'clflush',111b
|
db 'clflush',111b
|
||||||
dw fxsave_instruction-assembler
|
dw fxsave_instruction-assembler
|
||||||
db 'cmovnae',42h
|
db 'cmovnae',42h
|
||||||
@ -1568,6 +1600,8 @@ instructions_7:
|
|||||||
dw movntps_instruction-assembler
|
dw movntps_instruction-assembler
|
||||||
db 'movq2dq',0
|
db 'movq2dq',0
|
||||||
dw movq2dq_instruction-assembler
|
dw movq2dq_instruction-assembler
|
||||||
|
db 'mpsadbw',42h
|
||||||
|
dw sse4_instruction_3a_imm8-assembler
|
||||||
db 'paddusb',0DCh
|
db 'paddusb',0DCh
|
||||||
dw basic_mmx_instruction-assembler
|
dw basic_mmx_instruction-assembler
|
||||||
db 'paddusw',0DDh
|
db 'paddusw',0DDh
|
||||||
@ -1576,16 +1610,22 @@ instructions_7:
|
|||||||
dw palignr_instruction-assembler
|
dw palignr_instruction-assembler
|
||||||
db 'pavgusb',0BFh
|
db 'pavgusb',0BFh
|
||||||
dw amd3dnow_instruction-assembler
|
dw amd3dnow_instruction-assembler
|
||||||
|
db 'pblendw',0Eh
|
||||||
|
dw sse4_instruction_3a_imm8-assembler
|
||||||
db 'pcmpeqb',74h
|
db 'pcmpeqb',74h
|
||||||
dw basic_mmx_instruction-assembler
|
dw basic_mmx_instruction-assembler
|
||||||
db 'pcmpeqd',76h
|
db 'pcmpeqd',76h
|
||||||
dw basic_mmx_instruction-assembler
|
dw basic_mmx_instruction-assembler
|
||||||
|
db 'pcmpeqq',29h
|
||||||
|
dw sse4_instruction_38-assembler
|
||||||
db 'pcmpeqw',75h
|
db 'pcmpeqw',75h
|
||||||
dw basic_mmx_instruction-assembler
|
dw basic_mmx_instruction-assembler
|
||||||
db 'pcmpgtb',64h
|
db 'pcmpgtb',64h
|
||||||
dw basic_mmx_instruction-assembler
|
dw basic_mmx_instruction-assembler
|
||||||
db 'pcmpgtd',66h
|
db 'pcmpgtd',66h
|
||||||
dw basic_mmx_instruction-assembler
|
dw basic_mmx_instruction-assembler
|
||||||
|
db 'pcmpgtq',37h
|
||||||
|
dw sse4_instruction_38-assembler
|
||||||
db 'pcmpgtw',65h
|
db 'pcmpgtw',65h
|
||||||
dw basic_mmx_instruction-assembler
|
dw basic_mmx_instruction-assembler
|
||||||
db 'pfcmpeq',0B0h
|
db 'pfcmpeq',0B0h
|
||||||
@ -1618,6 +1658,14 @@ instructions_7:
|
|||||||
dw basic_mmx_instruction-assembler
|
dw basic_mmx_instruction-assembler
|
||||||
db 'psubusw',0D9h
|
db 'psubusw',0D9h
|
||||||
dw basic_mmx_instruction-assembler
|
dw basic_mmx_instruction-assembler
|
||||||
|
db 'roundpd',9
|
||||||
|
dw sse4_instruction_3a_imm8-assembler
|
||||||
|
db 'roundps',8
|
||||||
|
dw sse4_instruction_3a_imm8-assembler
|
||||||
|
db 'roundsd',0Bh
|
||||||
|
dw sse4_instruction_3a_imm8-assembler
|
||||||
|
db 'roundss',0Ah
|
||||||
|
dw sse4_instruction_3a_imm8-assembler
|
||||||
db 'rsqrtps',52h
|
db 'rsqrtps',52h
|
||||||
dw sse_ps_instruction-assembler
|
dw sse_ps_instruction-assembler
|
||||||
db 'rsqrtss',52h
|
db 'rsqrtss',52h
|
||||||
@ -1655,6 +1703,10 @@ instructions_8:
|
|||||||
dw sse_pd_instruction-assembler
|
dw sse_pd_instruction-assembler
|
||||||
db 'addsubps',0D0h
|
db 'addsubps',0D0h
|
||||||
dw cvtpd2dq_instruction-assembler
|
dw cvtpd2dq_instruction-assembler
|
||||||
|
db 'blendvpd',15h
|
||||||
|
dw sse4_instruction_38_xmm0-assembler
|
||||||
|
db 'blendvps',14h
|
||||||
|
dw sse4_instruction_38_xmm0-assembler
|
||||||
db 'cmpneqpd',4
|
db 'cmpneqpd',4
|
||||||
dw cmp_pd_instruction-assembler
|
dw cmp_pd_instruction-assembler
|
||||||
db 'cmpneqps',4
|
db 'cmpneqps',4
|
||||||
@ -1735,8 +1787,12 @@ instructions_8:
|
|||||||
dw basic_mmx_instruction-assembler
|
dw basic_mmx_instruction-assembler
|
||||||
db 'packsswb',63h
|
db 'packsswb',63h
|
||||||
dw basic_mmx_instruction-assembler
|
dw basic_mmx_instruction-assembler
|
||||||
|
db 'packusdw',2Bh
|
||||||
|
dw sse4_instruction_38-assembler
|
||||||
db 'packuswb',67h
|
db 'packuswb',67h
|
||||||
dw basic_mmx_instruction-assembler
|
dw basic_mmx_instruction-assembler
|
||||||
|
db 'pblendvb',10h
|
||||||
|
dw sse4_instruction_38_xmm0-assembler
|
||||||
db 'pfrcpit1',0A6h
|
db 'pfrcpit1',0A6h
|
||||||
dw amd3dnow_instruction-assembler
|
dw amd3dnow_instruction-assembler
|
||||||
db 'pfrcpit2',0B6h
|
db 'pfrcpit2',0B6h
|
||||||
@ -1780,6 +1836,14 @@ instructions_9:
|
|||||||
dw cvtsd2si_instruction-assembler
|
dw cvtsd2si_instruction-assembler
|
||||||
db 'cvttss2si',2Ch
|
db 'cvttss2si',2Ch
|
||||||
dw cvtss2si_instruction-assembler
|
dw cvtss2si_instruction-assembler
|
||||||
|
db 'pcmpestri',61h
|
||||||
|
dw sse4_instruction_3a_imm8-assembler
|
||||||
|
db 'pcmpestrm',60h
|
||||||
|
dw sse4_instruction_3a_imm8-assembler
|
||||||
|
db 'pcmpistri',63h
|
||||||
|
dw sse4_instruction_3a_imm8-assembler
|
||||||
|
db 'pcmpistrm',62h
|
||||||
|
dw sse4_instruction_3a_imm8-assembler
|
||||||
db 'pmaddubsw',4
|
db 'pmaddubsw',4
|
||||||
dw ssse3_instruction-assembler
|
dw ssse3_instruction-assembler
|
||||||
db 'prefetchw',1
|
db 'prefetchw',1
|
||||||
@ -1813,6 +1877,8 @@ instructions_10:
|
|||||||
dw simple_extended_instruction-assembler
|
dw simple_extended_instruction-assembler
|
||||||
db 'maskmovdqu',0
|
db 'maskmovdqu',0
|
||||||
dw maskmovdqu_instruction-assembler
|
dw maskmovdqu_instruction-assembler
|
||||||
|
db 'phminposuw',41h
|
||||||
|
dw sse4_instruction_38-assembler
|
||||||
db 'prefetcht0',1
|
db 'prefetcht0',1
|
||||||
dw prefetch_instruction-assembler
|
dw prefetch_instruction-assembler
|
||||||
db 'prefetcht1',2
|
db 'prefetcht1',2
|
||||||
|
@ -91,35 +91,36 @@ parsed_lines dd ?
|
|||||||
logical_value_parentheses dd ?
|
logical_value_parentheses dd ?
|
||||||
file_extension dd ?
|
file_extension dd ?
|
||||||
|
|
||||||
|
operand_size db ?
|
||||||
|
size_override db ?
|
||||||
|
operand_prefix db ?
|
||||||
|
rex_prefix db ?
|
||||||
|
base_code db ?
|
||||||
|
extended_code db ?
|
||||||
|
supplemental_code db ?
|
||||||
|
postbyte_register db ?
|
||||||
|
|
||||||
|
immediate_size db ?
|
||||||
|
mmx_size db ?
|
||||||
|
jump_type db ?
|
||||||
|
push_size db ?
|
||||||
|
value_size db ?
|
||||||
|
address_size db ?
|
||||||
|
size_declared db ?
|
||||||
|
value_undefined db ?
|
||||||
|
value_type db ?
|
||||||
|
compare_type db ?
|
||||||
|
logical_value_wrapping db ?
|
||||||
next_pass_needed db ?
|
next_pass_needed db ?
|
||||||
macro_status db ?
|
macro_status db ?
|
||||||
output_format db ?
|
output_format db ?
|
||||||
code_type db ?
|
code_type db ?
|
||||||
labels_type db ?
|
labels_type db ?
|
||||||
|
segment_register db ?
|
||||||
prefixed_instruction db ?
|
prefixed_instruction db ?
|
||||||
virtual_data db ?
|
virtual_data db ?
|
||||||
fp_sign db ?
|
fp_sign db ?
|
||||||
fp_format db ?
|
fp_format db ?
|
||||||
value_size db ?
|
|
||||||
size_override db ?
|
|
||||||
address_size db ?
|
|
||||||
operand_size db ?
|
|
||||||
size_declared db ?
|
|
||||||
value_undefined db ?
|
|
||||||
value_type db ?
|
|
||||||
compare_type db ?
|
|
||||||
base_code db ?
|
|
||||||
extended_code db ?
|
|
||||||
supplemental_code db ?
|
|
||||||
postbyte_register db ?
|
|
||||||
segment_register db ?
|
|
||||||
mmx_size db ?
|
|
||||||
jump_type db ?
|
|
||||||
push_size db ?
|
|
||||||
operand_prefix db ?
|
|
||||||
rex_prefix db ?
|
|
||||||
immediate_size db ?
|
|
||||||
logical_value_wrapping db ?
|
|
||||||
|
|
||||||
characters rb 100h
|
characters rb 100h
|
||||||
converted rb 100h
|
converted rb 100h
|
||||||
|
@ -33,7 +33,7 @@
|
|||||||
; cannot simply be copied and put under another distribution licence
|
; cannot simply be copied and put under another distribution licence
|
||||||
; (including the GNU Public Licence).
|
; (including the GNU Public Licence).
|
||||||
|
|
||||||
VERSION_STRING equ "1.67.25"
|
VERSION_STRING equ "1.67.26"
|
||||||
|
|
||||||
VERSION_MAJOR = 1
|
VERSION_MAJOR = 1
|
||||||
VERSION_MINOR = 67
|
VERSION_MINOR = 67
|
||||||
|
@ -5022,9 +5022,13 @@ movdq2q_instruction:
|
|||||||
call store_nomem_instruction
|
call store_nomem_instruction
|
||||||
jmp instruction_assembled
|
jmp instruction_assembled
|
||||||
|
|
||||||
|
sse_ps_instruction_imm8:
|
||||||
|
mov [immediate_size],8
|
||||||
sse_ps_instruction:
|
sse_ps_instruction:
|
||||||
mov [mmx_size],16
|
mov [mmx_size],16
|
||||||
jmp sse_instruction
|
jmp sse_instruction
|
||||||
|
sse_pd_instruction_imm8:
|
||||||
|
mov [immediate_size],8
|
||||||
sse_pd_instruction:
|
sse_pd_instruction:
|
||||||
mov [mmx_size],16
|
mov [mmx_size],16
|
||||||
mov [operand_prefix],66h
|
mov [operand_prefix],66h
|
||||||
@ -5086,8 +5090,12 @@ sse_instruction:
|
|||||||
cmp [operand_size],al
|
cmp [operand_size],al
|
||||||
jne invalid_operand_size
|
jne invalid_operand_size
|
||||||
sse_mem_size_ok:
|
sse_mem_size_ok:
|
||||||
cmp [extended_code],0C6h
|
cmp [immediate_size],8
|
||||||
je mmx_imm8
|
je mmx_imm8
|
||||||
|
cmp [immediate_size],-1
|
||||||
|
jne sse_ok
|
||||||
|
call take_additional_xmm0
|
||||||
|
sse_ok:
|
||||||
call store_instruction
|
call store_instruction
|
||||||
jmp instruction_assembled
|
jmp instruction_assembled
|
||||||
sse_xmmreg_xmmreg:
|
sse_xmmreg_xmmreg:
|
||||||
@ -5103,10 +5111,29 @@ sse_instruction:
|
|||||||
cmp ah,16
|
cmp ah,16
|
||||||
jne invalid_operand_size
|
jne invalid_operand_size
|
||||||
mov bl,al
|
mov bl,al
|
||||||
cmp [extended_code],0C6h
|
cmp [immediate_size],8
|
||||||
je mmx_nomem_imm8
|
je mmx_nomem_imm8
|
||||||
|
cmp [immediate_size],-1
|
||||||
|
jne sse_nomem_ok
|
||||||
|
call take_additional_xmm0
|
||||||
|
sse_nomem_ok:
|
||||||
call store_nomem_instruction
|
call store_nomem_instruction
|
||||||
jmp instruction_assembled
|
jmp instruction_assembled
|
||||||
|
take_additional_xmm0:
|
||||||
|
lods byte [esi]
|
||||||
|
cmp al,','
|
||||||
|
jne invalid_operand
|
||||||
|
lods byte [esi]
|
||||||
|
cmp al,10h
|
||||||
|
jne invalid_operand
|
||||||
|
lods byte [esi]
|
||||||
|
call convert_mmx_register
|
||||||
|
cmp ah,16
|
||||||
|
jne invalid_operand_size
|
||||||
|
test al,al
|
||||||
|
jnz invalid_operand
|
||||||
|
ret
|
||||||
|
|
||||||
ps_dq_instruction:
|
ps_dq_instruction:
|
||||||
mov [postbyte_register],al
|
mov [postbyte_register],al
|
||||||
mov [operand_prefix],66h
|
mov [operand_prefix],66h
|
||||||
@ -5585,6 +5612,26 @@ amd3dnow_instruction:
|
|||||||
stos byte [edi]
|
stos byte [edi]
|
||||||
jmp instruction_assembled
|
jmp instruction_assembled
|
||||||
|
|
||||||
|
sse4_instruction_38_xmm0:
|
||||||
|
mov [immediate_size],-1
|
||||||
|
jmp sse4_instruction_38
|
||||||
|
sse4_instruction_38_imm8:
|
||||||
|
mov [immediate_size],8
|
||||||
|
sse4_instruction_38:
|
||||||
|
mov [operand_prefix],66h
|
||||||
|
mov [base_code],0Fh
|
||||||
|
mov [supplemental_code],al
|
||||||
|
mov al,38h
|
||||||
|
jmp sse_instruction
|
||||||
|
sse4_instruction_3a_imm8:
|
||||||
|
mov [immediate_size],8
|
||||||
|
sse4_instruction_3a:
|
||||||
|
mov [operand_prefix],66h
|
||||||
|
mov [base_code],0Fh
|
||||||
|
mov [supplemental_code],al
|
||||||
|
mov al,3Ah
|
||||||
|
jmp sse_instruction
|
||||||
|
|
||||||
fxsave_instruction:
|
fxsave_instruction:
|
||||||
mov [extended_code],0AEh
|
mov [extended_code],0AEh
|
||||||
mov [base_code],0Fh
|
mov [base_code],0Fh
|
||||||
@ -6063,7 +6110,13 @@ get_address:
|
|||||||
mov [address_high],edx
|
mov [address_high],edx
|
||||||
cdq
|
cdq
|
||||||
cmp edx,[address_high]
|
cmp edx,[address_high]
|
||||||
jne value_out_of_range
|
je address_high_ok
|
||||||
|
cmp [error_line],0
|
||||||
|
jne address_high_ok
|
||||||
|
mov ebx,[current_line]
|
||||||
|
mov [error_line],ebx
|
||||||
|
mov [error],value_out_of_range
|
||||||
|
address_high_ok:
|
||||||
mov edx,eax
|
mov edx,eax
|
||||||
ror ecx,16
|
ror ecx,16
|
||||||
mov cl,[value_type]
|
mov cl,[value_type]
|
||||||
|
Loading…
Reference in New Issue
Block a user