fasm: update to 1.70.03

git-svn-id: svn://kolibrios.org@3010 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
Ivan Baravy 2012-11-08 20:11:07 +00:00
parent 8f3b0cbcde
commit 737ea528e8
4 changed files with 43 additions and 32 deletions

View File

@ -2,9 +2,23 @@
Visit http://flatassembler.net/ for more information. 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) version 1.70.01 (Apr 30, 2012)
[-] Corrected a recently introduced bug that caused some incorrect [-] Corrected a recently introduced bug that caused some illegal
address expressions to cause an error prematurely during the address expressions to cause an error prematurely during the
parsing stage. parsing stage.
@ -19,7 +33,7 @@ version 1.70 (Apr 17, 2012)
[+] Extended the syntax of "rept" directive to allow numerical expressions [+] Extended the syntax of "rept" directive to allow numerical expressions
to be calculated by preprocessor in its arguments. to be calculated by preprocessor in its arguments.
[+] Added "large" and "NX" settings from PE format. [+] Added "large" and "NX" settings for PE format.
[+] Allowed PE fixups to be resolved anywhere in the generated executable. [+] Allowed PE fixups to be resolved anywhere in the generated executable.

View File

@ -1560,18 +1560,18 @@ get_address_value:
or [address_size],al or [address_size],al
shr al,4 shr al,4
or ah,ah or ah,ah
jz address_size_ok jz address_size_ok
cmp al,ah cmp al,ah
je address_size_ok je address_size_ok
cmp ax,0804h cmp ax,0408h
jne address_sizes_do_not_agree je address_sizes_mixed
cmp [value_type],2 cmp ax,0804h
ja value_type_correction_ok jne address_sizes_do_not_agree
mov [value_type],2 address_sizes_mixed:
value_type_correction_ok: mov [value_type],2
mov eax,[edi] mov eax,[edi]
cdq cdq
cmp edx,[edi+4] cmp edx,[edi+4]
je address_size_ok je address_size_ok
cmp [error_line],0 cmp [error_line],0
jne address_size_ok jne address_size_ok
@ -1802,7 +1802,10 @@ calculate_relative_offset:
jnz relative_offset_unallowed jnz relative_offset_unallowed
cmp bl,6 cmp bl,6
je plt_relative_offset je plt_relative_offset
cmp bl,[labels_type] mov bh,[labels_type]
cmp bl,bh
je set_relative_offset_type
cmp bx,0402h
je set_relative_offset_type je set_relative_offset_type
relative_offset_unallowed: relative_offset_unallowed:
call recoverable_misuse call recoverable_misuse

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.70.01" VERSION_STRING equ "1.70.03"
VERSION_MAJOR = 1 VERSION_MAJOR = 1
VERSION_MINOR = 70 VERSION_MINOR = 70

View File

@ -3312,10 +3312,8 @@ movs_instruction:
je invalid_address_size je invalid_address_size
call address_16bit_prefix call address_16bit_prefix
movs_store: movs_store:
cmp [segment_register],4 xor ebx,ebx
je movs_segment_ok call store_segment_prefix_if_necessary
call store_segment_prefix
movs_segment_ok:
mov al,0A4h mov al,0A4h
movs_check_size: movs_check_size:
mov bl,[operand_size] mov bl,[operand_size]
@ -3359,10 +3357,8 @@ lods_instruction:
je invalid_address_size je invalid_address_size
call address_16bit_prefix call address_16bit_prefix
lods_store: lods_store:
cmp [segment_register],4 xor ebx,ebx
je lods_segment_ok call store_segment_prefix_if_necessary
call store_segment_prefix
lods_segment_ok:
mov al,0ACh mov al,0ACh
jmp movs_check_size jmp movs_check_size
stos_instruction: stos_instruction:
@ -3452,10 +3448,8 @@ cmps_instruction:
je invalid_address_size je invalid_address_size
call address_16bit_prefix call address_16bit_prefix
cmps_store: cmps_store:
cmp [segment_register],4 xor ebx,ebx
je cmps_segment_ok call store_segment_prefix_if_necessary
call store_segment_prefix
cmps_segment_ok:
mov al,0A6h mov al,0A6h
jmp movs_check_size jmp movs_check_size
ins_instruction: ins_instruction:
@ -3537,10 +3531,8 @@ outs_instruction:
je invalid_address_size je invalid_address_size
call address_16bit_prefix call address_16bit_prefix
outs_store: outs_store:
cmp [segment_register],4 xor ebx,ebx
je outs_segment_ok call store_segment_prefix_if_necessary
call store_segment_prefix
outs_segment_ok:
mov al,6Eh mov al,6Eh
jmp ins_check_size jmp ins_check_size
xlat_instruction: xlat_instruction:
@ -6880,6 +6872,8 @@ store_instruction:
je address_immediate_sib je address_immediate_sib
test ch,44h test ch,44h
jnz address_immediate_32bit jnz address_immediate_32bit
test ch,88h
jnz address_immediate_32bit
test ch,22h test ch,22h
jnz address_immediate_16bit jnz address_immediate_16bit
or ch,ch or ch,ch