fasm 1.67.26

git-svn-id: svn://kolibrios.org@707 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
heavyiron 2008-01-31 21:32:32 +00:00
parent 03ec9a762d
commit eda7490bf5
5 changed files with 151 additions and 30 deletions

View File

@ -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]

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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]