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.
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 incorrect
[-] Corrected a recently introduced bug that caused some illegal
address expressions to cause an error prematurely during the
parsing stage.
@ -19,7 +33,7 @@ version 1.70 (Apr 17, 2012)
[+] Extended the syntax of "rept" directive to allow numerical expressions
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.

View File

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

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

View File

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