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
jmp instruction_assembled
assemble_instruction:
mov [operand_size],0
mov [size_override],0
mov [operand_prefix],0
mov [rex_prefix],0
; mov [operand_size],0
; mov [size_override],0
; mov [operand_prefix],0
; mov [rex_prefix],0
mov dword [operand_size],0
mov [immediate_size],0
movzx ebx,word [esi]
mov al,[esi+2]

View File

@ -583,6 +583,10 @@ instructions_4:
dw simple_instruction_32bit-assembler
db 'data',0
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
dw else_directive-assembler
db 'emms',77h
@ -1072,6 +1076,8 @@ instructions_5:
dw basic_mmx_instruction-assembler
db 'psubw',0F9h
dw basic_mmx_instruction-assembler
db 'ptest',17h
dw sse4_instruction_38-assembler
db 'pusha',60h
dw simple_instruction_except64-assembler
db 'pushd',4
@ -1293,6 +1299,8 @@ instructions_6:
dw ffree_instruction-assembler
db 'fxsave',0
dw fxsave_instruction-assembler
db 'getsec',37h
dw simple_extended_instruction-assembler
db 'haddpd',07Ch
dw sse_pd_instruction-assembler
db 'haddps',07Ch
@ -1369,16 +1377,36 @@ instructions_6:
dw ssse3_instruction-assembler
db 'pinsrw',0C4h
dw pinsrw_instruction-assembler
db 'pmaxsb',3Ch
dw sse4_instruction_38-assembler
db 'pmaxsd',3Dh
dw sse4_instruction_38-assembler
db 'pmaxsw',0EEh
dw basic_mmx_instruction-assembler
db 'pmaxub',0DEh
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
dw basic_mmx_instruction-assembler
db 'pminub',0DAh
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
dw basic_mmx_instruction-assembler
db 'pmulld',40h
dw sse4_instruction_38-assembler
db 'pmullw',0D5h
dw basic_mmx_instruction-assembler
db 'psadbw',0F6h
@ -1436,9 +1464,9 @@ instructions_6:
db 'sfence',0F8h
dw fence_instruction-assembler
db 'shufpd',0C6h
dw sse_pd_instruction-assembler
dw sse_pd_instruction_imm8-assembler
db 'shufps',0C6h
dw sse_ps_instruction-assembler
dw sse_ps_instruction_imm8-assembler
db 'skinit',0
dw skinit_instruction-assembler
db 'sqrtpd',51h
@ -1468,6 +1496,10 @@ instructions_6:
db 'wrmsrq',30h
dw simple_extended_instruction_64bit-assembler
instructions_7:
db 'blendpd',0Dh
dw sse4_instruction_3a_imm8-assembler
db 'blendps',0Ch
dw sse4_instruction_3a_imm8-assembler
db 'clflush',111b
dw fxsave_instruction-assembler
db 'cmovnae',42h
@ -1568,6 +1600,8 @@ instructions_7:
dw movntps_instruction-assembler
db 'movq2dq',0
dw movq2dq_instruction-assembler
db 'mpsadbw',42h
dw sse4_instruction_3a_imm8-assembler
db 'paddusb',0DCh
dw basic_mmx_instruction-assembler
db 'paddusw',0DDh
@ -1576,16 +1610,22 @@ instructions_7:
dw palignr_instruction-assembler
db 'pavgusb',0BFh
dw amd3dnow_instruction-assembler
db 'pblendw',0Eh
dw sse4_instruction_3a_imm8-assembler
db 'pcmpeqb',74h
dw basic_mmx_instruction-assembler
db 'pcmpeqd',76h
dw basic_mmx_instruction-assembler
db 'pcmpeqq',29h
dw sse4_instruction_38-assembler
db 'pcmpeqw',75h
dw basic_mmx_instruction-assembler
db 'pcmpgtb',64h
dw basic_mmx_instruction-assembler
db 'pcmpgtd',66h
dw basic_mmx_instruction-assembler
db 'pcmpgtq',37h
dw sse4_instruction_38-assembler
db 'pcmpgtw',65h
dw basic_mmx_instruction-assembler
db 'pfcmpeq',0B0h
@ -1618,6 +1658,14 @@ instructions_7:
dw basic_mmx_instruction-assembler
db 'psubusw',0D9h
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
dw sse_ps_instruction-assembler
db 'rsqrtss',52h
@ -1655,6 +1703,10 @@ instructions_8:
dw sse_pd_instruction-assembler
db 'addsubps',0D0h
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
dw cmp_pd_instruction-assembler
db 'cmpneqps',4
@ -1735,8 +1787,12 @@ instructions_8:
dw basic_mmx_instruction-assembler
db 'packsswb',63h
dw basic_mmx_instruction-assembler
db 'packusdw',2Bh
dw sse4_instruction_38-assembler
db 'packuswb',67h
dw basic_mmx_instruction-assembler
db 'pblendvb',10h
dw sse4_instruction_38_xmm0-assembler
db 'pfrcpit1',0A6h
dw amd3dnow_instruction-assembler
db 'pfrcpit2',0B6h
@ -1780,6 +1836,14 @@ instructions_9:
dw cvtsd2si_instruction-assembler
db 'cvttss2si',2Ch
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
dw ssse3_instruction-assembler
db 'prefetchw',1
@ -1813,6 +1877,8 @@ instructions_10:
dw simple_extended_instruction-assembler
db 'maskmovdqu',0
dw maskmovdqu_instruction-assembler
db 'phminposuw',41h
dw sse4_instruction_38-assembler
db 'prefetcht0',1
dw prefetch_instruction-assembler
db 'prefetcht1',2

View File

@ -91,35 +91,36 @@ parsed_lines dd ?
logical_value_parentheses 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 ?
macro_status db ?
output_format db ?
code_type db ?
labels_type db ?
segment_register db ?
prefixed_instruction db ?
virtual_data db ?
fp_sign 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
converted rb 100h

View File

@ -33,7 +33,7 @@
; cannot simply be copied and put under another distribution licence
; (including the GNU Public Licence).
VERSION_STRING equ "1.67.25"
VERSION_STRING equ "1.67.26"
VERSION_MAJOR = 1
VERSION_MINOR = 67

View File

@ -5022,9 +5022,13 @@ movdq2q_instruction:
call store_nomem_instruction
jmp instruction_assembled
sse_ps_instruction_imm8:
mov [immediate_size],8
sse_ps_instruction:
mov [mmx_size],16
jmp sse_instruction
sse_pd_instruction_imm8:
mov [immediate_size],8
sse_pd_instruction:
mov [mmx_size],16
mov [operand_prefix],66h
@ -5086,8 +5090,12 @@ sse_instruction:
cmp [operand_size],al
jne invalid_operand_size
sse_mem_size_ok:
cmp [extended_code],0C6h
cmp [immediate_size],8
je mmx_imm8
cmp [immediate_size],-1
jne sse_ok
call take_additional_xmm0
sse_ok:
call store_instruction
jmp instruction_assembled
sse_xmmreg_xmmreg:
@ -5103,10 +5111,29 @@ sse_instruction:
cmp ah,16
jne invalid_operand_size
mov bl,al
cmp [extended_code],0C6h
cmp [immediate_size],8
je mmx_nomem_imm8
cmp [immediate_size],-1
jne sse_nomem_ok
call take_additional_xmm0
sse_nomem_ok:
call store_nomem_instruction
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:
mov [postbyte_register],al
mov [operand_prefix],66h
@ -5585,6 +5612,26 @@ amd3dnow_instruction:
stos byte [edi]
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:
mov [extended_code],0AEh
mov [base_code],0Fh
@ -6063,7 +6110,13 @@ get_address:
mov [address_high],edx
cdq
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
ror ecx,16
mov cl,[value_type]