forked from KolibriOS/kolibrios
fasm: update to 1.70.03
git-svn-id: svn://kolibrios.org@3010 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
8f3b0cbcde
commit
737ea528e8
@ -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.
|
||||||
|
|
||||||
|
@ -1563,12 +1563,12 @@ get_address_value:
|
|||||||
jz address_size_ok
|
jz address_size_ok
|
||||||
cmp al,ah
|
cmp al,ah
|
||||||
je address_size_ok
|
je address_size_ok
|
||||||
|
cmp ax,0408h
|
||||||
|
je address_sizes_mixed
|
||||||
cmp ax,0804h
|
cmp ax,0804h
|
||||||
jne address_sizes_do_not_agree
|
jne address_sizes_do_not_agree
|
||||||
cmp [value_type],2
|
address_sizes_mixed:
|
||||||
ja value_type_correction_ok
|
|
||||||
mov [value_type],2
|
mov [value_type],2
|
||||||
value_type_correction_ok:
|
|
||||||
mov eax,[edi]
|
mov eax,[edi]
|
||||||
cdq
|
cdq
|
||||||
cmp edx,[edi+4]
|
cmp edx,[edi+4]
|
||||||
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user