fasm: 1.71.16
git-svn-id: svn://kolibrios.org@4478 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
b2e030871f
commit
69834ba166
@ -3707,6 +3707,7 @@ format_elf_exe:
|
||||
add eax,edi
|
||||
adc ebp,0
|
||||
adc cl,0
|
||||
mov edx,ebp
|
||||
elf_exe_addressing_setup:
|
||||
push eax
|
||||
call init_addressing_space
|
||||
@ -3938,6 +3939,7 @@ elf_segment:
|
||||
add eax,edi
|
||||
sub eax,edx
|
||||
mov [ebx+10h],eax
|
||||
and [undefined_data_end],0
|
||||
mov eax,[ebx+8]
|
||||
cmp byte [ebx],1
|
||||
jne elf_segment_position_ok
|
||||
@ -4067,6 +4069,7 @@ elf_segment:
|
||||
add eax,edi
|
||||
sub eax,edx
|
||||
mov [ebx+20h],eax
|
||||
and [undefined_data_end],0
|
||||
mov eax,[ebx+10h]
|
||||
mov edx,[ebx+10h+4]
|
||||
cmp byte [ebx],1
|
||||
|
@ -1,6 +1,6 @@
|
||||
|
||||
flat assembler version 1.70
|
||||
Copyright (c) 1999-2012, Tomasz Grysztar.
|
||||
flat assembler version 1.71
|
||||
Copyright (c) 1999-2013, Tomasz Grysztar.
|
||||
All rights reserved.
|
||||
|
||||
This program is free for commercial and non-commercial use as long as
|
||||
|
@ -48,12 +48,45 @@ preprocessor:
|
||||
jc main_file_not_found
|
||||
mov edi,[memory_start]
|
||||
call preprocess_file
|
||||
cmp [macro_status],0
|
||||
je process_postponed
|
||||
mov eax,[error_line]
|
||||
mov [current_line],eax
|
||||
cmp [macro_status],0
|
||||
jne incomplete_macro
|
||||
jmp incomplete_macro
|
||||
process_postponed:
|
||||
mov edx,hash_tree
|
||||
mov ecx,32
|
||||
find_postponed_list:
|
||||
mov edx,[edx]
|
||||
or edx,edx
|
||||
loopnz find_postponed_list
|
||||
jz preprocessing_finished
|
||||
process_postponed_list:
|
||||
mov eax,[edx]
|
||||
or eax,eax
|
||||
jz preprocessing_finished
|
||||
push edx
|
||||
mov ebx,edx
|
||||
find_earliest_postponed:
|
||||
mov eax,[edx]
|
||||
or eax,eax
|
||||
jz earliest_postponed_found
|
||||
mov ebx,edx
|
||||
mov edx,eax
|
||||
jmp find_earliest_postponed
|
||||
earliest_postponed_found:
|
||||
mov [ebx],eax
|
||||
call use_postponed_macro
|
||||
pop edx
|
||||
jmp process_postponed_list
|
||||
preprocessing_finished:
|
||||
mov [source_start],edi
|
||||
ret
|
||||
use_postponed_macro:
|
||||
lea esi,[edi-1]
|
||||
push ecx esi
|
||||
mov [struc_name],0
|
||||
jmp use_macro
|
||||
|
||||
preprocess_file:
|
||||
push [memory_end]
|
||||
@ -691,6 +724,9 @@ get_preprocessor_symbol:
|
||||
ret
|
||||
add_preprocessor_symbol:
|
||||
push edi esi
|
||||
xor eax,eax
|
||||
or cl,cl
|
||||
jz reshape_hash
|
||||
cmp ch,11b
|
||||
je preprocessor_symbol_name_ok
|
||||
push ecx
|
||||
@ -701,6 +737,7 @@ add_preprocessor_symbol:
|
||||
pop ecx
|
||||
preprocessor_symbol_name_ok:
|
||||
call calculate_hash
|
||||
reshape_hash:
|
||||
mov ebp,eax
|
||||
and ebp,3FFh
|
||||
shr eax,10
|
||||
@ -1013,6 +1050,27 @@ define_macro:
|
||||
lods dword [esi]
|
||||
add esi,eax
|
||||
jmp skip_macro_block
|
||||
postpone_directive:
|
||||
push esi
|
||||
mov esi,edx
|
||||
xor ecx,ecx
|
||||
call add_preprocessor_symbol
|
||||
mov eax,[current_line]
|
||||
mov [edx+12],eax
|
||||
pop esi
|
||||
mov [edx+8],esi
|
||||
mov al,[macro_status]
|
||||
and al,0F0h
|
||||
or al,1
|
||||
mov [macro_status],al
|
||||
mov eax,[current_line]
|
||||
mov [error_line],eax
|
||||
lods byte [esi]
|
||||
or al,al
|
||||
jz line_preprocessed
|
||||
cmp al,'{'
|
||||
jne unexpected_characters
|
||||
jmp found_macro_block
|
||||
rept_directive:
|
||||
mov [base_code],0
|
||||
jmp define_instant_macro
|
||||
@ -1987,8 +2045,21 @@ process_macro:
|
||||
stos dword [edi]
|
||||
jmp macro_line_header_ok
|
||||
instant_macro_line_header:
|
||||
mov eax,[macro_line]
|
||||
add eax,16+1
|
||||
mov eax,[esp]
|
||||
add eax,16
|
||||
find_defining_directive:
|
||||
inc eax
|
||||
cmp byte [eax-1],3Bh
|
||||
je defining_directive_ok
|
||||
cmp byte [eax-1],1Ah
|
||||
jne find_defining_directive
|
||||
push eax
|
||||
movzx eax,byte [eax]
|
||||
inc eax
|
||||
add [esp],eax
|
||||
pop eax
|
||||
jmp find_defining_directive
|
||||
defining_directive_ok:
|
||||
stos dword [edi]
|
||||
mov eax,ecx
|
||||
stos dword [edi]
|
||||
|
@ -21,6 +21,8 @@ preprocessor_directives:
|
||||
dw define_macro-directive_handler
|
||||
db 5,'match'
|
||||
dw match_directive-directive_handler
|
||||
db 8,'postpone'
|
||||
dw postpone_directive-directive_handler
|
||||
db 5,'purge'
|
||||
dw purge_macro-directive_handler
|
||||
db 4,'rept'
|
||||
|
@ -33,7 +33,7 @@
|
||||
; cannot simply be copied and put under another distribution licence
|
||||
; (including the GNU Public Licence).
|
||||
|
||||
VERSION_STRING equ "1.71.13"
|
||||
VERSION_STRING equ "1.71.16"
|
||||
|
||||
VERSION_MAJOR = 1
|
||||
VERSION_MINOR = 71
|
||||
|
@ -2,6 +2,128 @@
|
||||
Visit http://flatassembler.net/ for more information.
|
||||
|
||||
|
||||
version 1.71.16 (Oct 30, 2013)
|
||||
|
||||
[-] Fixed some bugs in the ELF executable formatter.
|
||||
|
||||
|
||||
version 1.71.15 (Oct 26, 2013)
|
||||
|
||||
[-] Fixed some bugs inadvertently introduced in the previous release.
|
||||
|
||||
|
||||
version 1.71.14 (Oct 25, 2013)
|
||||
|
||||
[+] Added "postpone" directive to preprocessor.
|
||||
|
||||
|
||||
version 1.71.13 (Sep 09, 2013)
|
||||
|
||||
[-] Fixed a bug that caused the expressions containing external symbols
|
||||
to overflow from time to time.
|
||||
|
||||
|
||||
version 1.71.12 (Aug 04, 2013)
|
||||
|
||||
[-] Expressions in square brackets were incorrectly treated as valid numerical
|
||||
values when used in some logical expressions.
|
||||
|
||||
[-] A previous fix to "store" directive did not apply to all the cases when it
|
||||
was incorrectly leaving the data marked as uninitialized. The new fix
|
||||
addresses this issue.
|
||||
|
||||
|
||||
version 1.71.11 (Jul 09, 2013)
|
||||
|
||||
[-] Modifying a value in uninitialized data block with "store" directive will
|
||||
now correctly mark this data as initialized when it is in a different
|
||||
addressing space.
|
||||
|
||||
[-] Missing quote will no longer cause the symbols generator to hang or crash.
|
||||
|
||||
[-] Address range restrictions for addressing modes no longer apply to addresses
|
||||
provided to assembler directives like "label", "virtual" or "load".
|
||||
|
||||
|
||||
version 1.71.10 (Apr 03, 2013)
|
||||
|
||||
[-] Fixed a crashing "heap" directive in 64-bit PE format.
|
||||
|
||||
|
||||
version 1.71.09 (Mar 30, 2013)
|
||||
|
||||
[-] "use16","use32" and "use64" no longer allow to put another instruction in
|
||||
the same line.
|
||||
|
||||
[-] Fixed a bug in parser that caused it to hang while processing some
|
||||
specific ill-structured preprocessed lines.
|
||||
|
||||
[-] Modified memory allocation algorithm on Windows machines with large RAM.
|
||||
|
||||
|
||||
version 1.71.08 (Mar 08, 2013)
|
||||
|
||||
[-] Fixed a bug that caused "irp" to skip processing a list with one empty
|
||||
element when default value for iterating variable was specified.
|
||||
|
||||
|
||||
version 1.71.07 (Dec 23, 2012)
|
||||
|
||||
[-] Fixed a bug that was causing "used" operator to give incorrect results
|
||||
in some very specific cases.
|
||||
|
||||
|
||||
version 1.71.06 (Nov 22, 2012)
|
||||
|
||||
[-] Fixed a few bugs caused by unnecesarily strong restrictions on allowed
|
||||
types of relocatable values in some places (like "label" directive).
|
||||
|
||||
|
||||
version 1.71.05 (Oct 15, 2012)
|
||||
|
||||
[-] Fixed a bug which caused "load" and "store" directives to sometimes
|
||||
fail when assembler had preallocated very large amount of memory.
|
||||
|
||||
|
||||
version 1.71.04 (Oct 10, 2012)
|
||||
|
||||
[-] Fixed another bug in "org" directive, which was causing it to deal
|
||||
incorrectly with negative addresses.
|
||||
|
||||
|
||||
version 1.71.03 (Sep 27, 2012)
|
||||
|
||||
[-] Fixed a bug in "org" directive introduced by recent changes, which
|
||||
was manifesting with bases larger than 31-bit.
|
||||
|
||||
|
||||
version 1.71.02 (Sep 26, 2012)
|
||||
|
||||
[-] Expression calculator now allows to calculate the difference of
|
||||
relocatable addresses in a reverse order (first substracting/negating
|
||||
and then adding the other one).
|
||||
|
||||
|
||||
version 1.71.01 (Sep 23, 2012)
|
||||
|
||||
[+] Added support for ADX, RDSEED and SMAP instruction sets.
|
||||
|
||||
[-] Fixed the bugs related to creating a new addressing space inside the
|
||||
virtual block with "org" directive.
|
||||
|
||||
|
||||
version 1.71.00 (Sep 21, 2012)
|
||||
|
||||
[+] Added ability to define a special kind of label identifying the
|
||||
addressing space. This label can the be used with "load" or "store"
|
||||
directives to allow operations on bytes in any addressing space,
|
||||
not just the current one. This special label is defined by following
|
||||
its name with double colon, and can only be used with "load" and
|
||||
"store" directive, where address can now be specified in two parts,
|
||||
first the adressing space label, then the colon and then the
|
||||
address inside that addressing space.
|
||||
|
||||
|
||||
version 1.70.03 (Jun 29, 2012)
|
||||
|
||||
[-] Allowed to freely upgrade or downgrade the relocatable addresses in
|
||||
|
Loading…
Reference in New Issue
Block a user