/programs/develop/fasm/trunk/WHATSNEW.TXT |
---|
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 |
[+] 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. |
/programs/develop/fasm/trunk/exprcalc.inc |
---|
1563,12 → 1563,12 |
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 |
cmp [value_type],2 |
ja value_type_correction_ok |
address_sizes_mixed: |
mov [value_type],2 |
value_type_correction_ok: |
mov eax,[edi] |
cdq |
cmp edx,[edi+4] |
1802,8 → 1802,11 |
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 |
set_relative_offset_type: |
/programs/develop/fasm/trunk/version.inc |
---|
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 |
/programs/develop/fasm/trunk/x86_64.inc |
---|
3312,10 → 3312,8 |
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 |
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 |
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 |
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 |
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 |