mirror of
https://github.com/tgrysztar/fasm
synced 2026-08-26 00:23:06 -04:00
release 1.72
This commit is contained in:
parent
53e065b3f6
commit
e27dd0bf7c
8 changed files with 51 additions and 414 deletions
10
FASM.TXT
10
FASM.TXT
|
|
@ -5,7 +5,7 @@
|
|||
Û ÜßßßßÛ ßßßßÜ Û Û Û
|
||||
Û ßÜÜÜÜÛÜ ÜÜÜÜÜß Û Û Û
|
||||
|
||||
flat assembler 1.71
|
||||
flat assembler 1.72
|
||||
Programmer's Manual
|
||||
|
||||
|
||||
|
|
@ -146,21 +146,21 @@ done, how much time it took, and how many bytes were written into the
|
|||
destination file.
|
||||
The following is an example of the compilation summary:
|
||||
|
||||
flat assembler version 1.70 (16384 kilobytes memory)
|
||||
flat assembler version 1.72 (16384 kilobytes memory)
|
||||
38 passes, 5.3 seconds, 77824 bytes.
|
||||
|
||||
In case of error during the compilation process, the program will display an
|
||||
error message. For example, when compiler can't find the input file, it will
|
||||
display the following message:
|
||||
|
||||
flat assembler version 1.70 (16384 kilobytes memory)
|
||||
flat assembler version 1.72 (16384 kilobytes memory)
|
||||
error: source file not found.
|
||||
|
||||
If the error is connected with a specific part of source code, the source line
|
||||
that caused the error will be also displayed. Also placement of this line in
|
||||
the source is given to help you finding this error, for example:
|
||||
|
||||
flat assembler version 1.70 (16384 kilobytes memory)
|
||||
flat assembler version 1.72 (16384 kilobytes memory)
|
||||
example.asm [3]:
|
||||
mob ax,1
|
||||
error: illegal instruction.
|
||||
|
|
@ -170,7 +170,7 @@ encountered an unrecognized instruction. When the line that caused error
|
|||
contains a macroinstruction, also the line in macroinstruction definition
|
||||
that generated the erroneous instruction is displayed:
|
||||
|
||||
flat assembler version 1.70 (16384 kilobytes memory)
|
||||
flat assembler version 1.72 (16384 kilobytes memory)
|
||||
example.asm [6]:
|
||||
stoschar 7
|
||||
example.asm [3] stoschar [1]:
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
|
||||
flat assembler version 1.71
|
||||
flat assembler version 1.72
|
||||
Copyright (c) 1999-2017, Tomasz Grysztar.
|
||||
All rights reserved.
|
||||
|
||||
|
|
|
|||
|
|
@ -131,9 +131,16 @@ lseek:
|
|||
push ebx
|
||||
movzx eax,al
|
||||
ccall fseek,ebx,edx,eax
|
||||
test eax,eax
|
||||
jnz lseek_error
|
||||
mov ebx,[esp]
|
||||
ccall ftell,ebx
|
||||
pop ebx
|
||||
clc
|
||||
ret
|
||||
lseek_error:
|
||||
pop ebx
|
||||
stc
|
||||
ret
|
||||
|
||||
display_string:
|
||||
|
|
|
|||
|
|
@ -186,6 +186,9 @@ lseek:
|
|||
mov dl,al
|
||||
mov eax,19
|
||||
int 0x80
|
||||
cmp eax,-1
|
||||
je file_error
|
||||
clc
|
||||
ret
|
||||
|
||||
display_string:
|
||||
|
|
|
|||
|
|
@ -220,6 +220,9 @@ lseek:
|
|||
syscall
|
||||
mov esi,r12d
|
||||
mov edi,r13d
|
||||
cmp eax,-1
|
||||
je file_error
|
||||
clc
|
||||
ret
|
||||
|
||||
display_string:
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
|
||||
; flat assembler version 1.71
|
||||
; flat assembler version 1.72
|
||||
; Copyright (c) 1999-2017, Tomasz Grysztar.
|
||||
; All rights reserved.
|
||||
;
|
||||
|
|
@ -33,7 +33,7 @@
|
|||
; cannot simply be copied and put under another distribution licence
|
||||
; (including the GNU Public Licence).
|
||||
|
||||
VERSION_STRING equ "1.71.63"
|
||||
VERSION_STRING equ "1.72"
|
||||
|
||||
VERSION_MAJOR = 1
|
||||
VERSION_MINOR = 71
|
||||
VERSION_MINOR = 72
|
||||
|
|
|
|||
|
|
@ -187,6 +187,9 @@ lseek:
|
|||
push edx
|
||||
push ebx
|
||||
call [SetFilePointer]
|
||||
cmp eax,-1
|
||||
je file_error
|
||||
clc
|
||||
ret
|
||||
|
||||
display_string:
|
||||
|
|
|
|||
431
WHATSNEW.TXT
431
WHATSNEW.TXT
|
|
@ -2,401 +2,12 @@
|
|||
Visit http://flatassembler.net/ for more information.
|
||||
|
||||
|
||||
version 1.71.63 (Jun 21, 2017)
|
||||
version 1.72 (Oct 10, 2017)
|
||||
|
||||
[-] Minor fixes in formatter.
|
||||
[+] Support for Intel AVX-512, SHA, CLFLUSHOPT, CLWB, PCOMMIT, ADX, RDSEED, SMAP
|
||||
and MPX instruction sets.
|
||||
|
||||
|
||||
version 1.71.62 (May 08, 2017)
|
||||
|
||||
[-] Minor correction in "kmovq" error checking.
|
||||
|
||||
[-] Minor fix in the encoding of some absolute addresses in long mode.
|
||||
|
||||
|
||||
version 1.71.61 (May 04, 2017)
|
||||
|
||||
[-] Minor correction in "vcvtpd2dq" error checking.
|
||||
|
||||
|
||||
version 1.71.60 (Feb 05, 2017)
|
||||
|
||||
[+] Updated documentation.
|
||||
|
||||
[-] Minor corrections in error detection of some AVX instruction handlers.
|
||||
|
||||
|
||||
version 1.71.59 (Jan 20,2017)
|
||||
|
||||
[-] Corrected range-checking for minimal denormal floating-point values.
|
||||
|
||||
[-] Other minor fixes.
|
||||
|
||||
|
||||
version 1.71.58 (Dec 08, 2016)
|
||||
|
||||
[+] Added a 64-bit ELF executable version of flat assembler for Linux. It has
|
||||
no extended capabilities compared to regular versions, it just simulates
|
||||
the 32-bit environment to allow running the assembler on systems that
|
||||
support only 64-bit executables.
|
||||
|
||||
|
||||
version 1.71.57 (Sep 26, 2016)
|
||||
|
||||
[+] Added "gnustack" and "gnuehframe" segment types to ELF executable formatter.
|
||||
|
||||
[+] Console versions now display preprocessed instruction that caused an error
|
||||
(previously only displayed by Windows GUI interface).
|
||||
|
||||
|
||||
version 1.71.56 (Sep 19, 2016)
|
||||
|
||||
[+] Allowed underscore character to be put inside the number value.
|
||||
|
||||
[+] Allowed octal numbers ending with "q".
|
||||
|
||||
|
||||
version 1.71.55 (Sep 18, 2016)
|
||||
|
||||
[-] Fixed generation of PLT relocations in ELF64 output.
|
||||
|
||||
|
||||
version 1.71.54 (Jun 09, 2016)
|
||||
|
||||
[-] Corrected syntax options of "pextrb", "pextrd", "extractps" and "crc32"
|
||||
instructions in long mode to be consistent with how "pextrw" behaved already.
|
||||
They all now allow either 32-bit or 64-bit register as destination and this
|
||||
choice does not affect the result of the operation.
|
||||
|
||||
[-] The error message trigerred by "mov [eax],1.0" was misleading.
|
||||
|
||||
|
||||
version 1.71.53 (May 21, 2016)
|
||||
|
||||
[+] Added missing "vmfunc" instruction.
|
||||
|
||||
[-] Fixed recently introduced bug in "swapgs" instruction.
|
||||
|
||||
|
||||
version 1.71.52 (May 13, 2016)
|
||||
|
||||
[+] Added "rdpkru" and "wrpkru" instructions.
|
||||
|
||||
[-] Fixed a bug in processing the "-d" switch.
|
||||
|
||||
|
||||
version 1.71.51 (Feb 08, 2016)
|
||||
|
||||
[-] Corrected the signalling of "operand size not specified" error with
|
||||
AVX instructions.
|
||||
|
||||
|
||||
version 1.71.50 (Jan 30, 2016)
|
||||
|
||||
[-] Overflow error in the RIP-relative addresses has been made recoverable.
|
||||
|
||||
|
||||
version 1.71.49 (Dec 06, 2015)
|
||||
|
||||
[-] Few small fixes.
|
||||
|
||||
|
||||
version 1.71.48 (Nov 18, 2015)
|
||||
|
||||
[-] Fixed recently introduced bug in MOV instruction with debug register
|
||||
as target.
|
||||
|
||||
|
||||
version 1.71.47 (Nov 09, 2015)
|
||||
|
||||
[+] Added support for Intel MPX instructions.
|
||||
|
||||
|
||||
version 1.71.46 (Oct 31, 2015)
|
||||
|
||||
[-] Another minor bug fixed.
|
||||
|
||||
|
||||
version 1.71.45 (Oct 31, 2015)
|
||||
|
||||
[-] Few more bugs fixed in AVX encodings.
|
||||
|
||||
|
||||
version 1.71.44 (Oct 27, 2015)
|
||||
|
||||
[-] Minor bug fixes.
|
||||
|
||||
|
||||
version 1.71.43 (Oct 26, 2015)
|
||||
|
||||
[+] Added two missing instructions.
|
||||
|
||||
[-] Fixed few minor bugs in AVX-512 encodings.
|
||||
|
||||
|
||||
version 1.71.42 (Oct 22, 2015)
|
||||
|
||||
[-] Fixed a couple of regression bugs.
|
||||
|
||||
|
||||
version 1.71.41 (Oct 21, 2015)
|
||||
|
||||
[-] Fixed a bug that caused the "word" operator inside square brackets to
|
||||
have no effect.
|
||||
|
||||
|
||||
version 1.71.40 (Oct 19, 2015)
|
||||
|
||||
[+] Added support for Intel AVX-512, SHA, CLFLUSHOPT, CLWB and
|
||||
PCOMMIT instruction sets.
|
||||
|
||||
|
||||
version 1.71.39 (Mar 11, 2015)
|
||||
|
||||
[-] Minor bug fix.
|
||||
|
||||
|
||||
version 1.71.38 (Mar 09, 2015)
|
||||
|
||||
[-] Minor bug fixes.
|
||||
|
||||
|
||||
version 1.71.37 (Mar 03, 2015)
|
||||
|
||||
[-] Fixed a crash caused by incorrect handling of any error in definition
|
||||
provided through "-d" switch.
|
||||
|
||||
|
||||
version 1.71.36 (Feb 26, 2015)
|
||||
|
||||
[-] Fixed a small bug with "irp" directive.
|
||||
|
||||
|
||||
version 1.71.35 (Feb 25, 2015)
|
||||
|
||||
[-] Corrected a flaw that caused a crash when processing incomplete macro
|
||||
definitions within the "postpone" block.
|
||||
|
||||
|
||||
version 1.71.34 (Feb 17, 2015)
|
||||
|
||||
[-] Fixed a recently introduced bug that caused assembler to hang when a
|
||||
missing closing parenthesis error was encountered.
|
||||
|
||||
|
||||
version 1.71.33 (Jan 09, 2015)
|
||||
|
||||
[+] Default value for macroinstruction parameter can now be defined with ":"
|
||||
character as an alternative to "=".
|
||||
|
||||
|
||||
version 1.71.32 (Jan 04, 2015)
|
||||
|
||||
[+] Brought back the "-d" switch for command line.
|
||||
|
||||
|
||||
version 1.71.31 (Dec 08, 2014)
|
||||
|
||||
[-] Removed dependence on size context for expression operators like NOT and XOR.
|
||||
|
||||
[-] Relaxed range checking to allow extended negative range for all sizes.
|
||||
|
||||
|
||||
version 1.71.30 (Dec 07, 2014)
|
||||
|
||||
[-] Clearing the instruction data field when filling the addend for 64-bit ELF
|
||||
relocaiton.
|
||||
|
||||
|
||||
version 1.71.29 (Dec 05, 2014)
|
||||
|
||||
[-] Supressed error message when parsing some malformed expressions that do not
|
||||
get evaluated.
|
||||
|
||||
|
||||
version 1.71.28 (Dec 01, 2014)
|
||||
|
||||
[-] The addend field of relocation structure for 64-bit ELF format is now filled with
|
||||
correct information.
|
||||
|
||||
|
||||
version 1.71.27 (Nov 18, 2014)
|
||||
|
||||
[-] Corrected initial predictions of immediate size for "mov" and "test" instructions
|
||||
(this may sometimes help to generate smaller code).
|
||||
|
||||
|
||||
version 1.71.26 (Nov 12, 2014)
|
||||
|
||||
[-] Fixed a bug introduced by previous version that allowed address values to
|
||||
bypass range checks.
|
||||
|
||||
|
||||
version 1.71.25 (Nov 03, 2014)
|
||||
|
||||
[-] Fixed a bug that cause valued of argument starting with "<" character to be
|
||||
incorrectly processed when the parameter in question was marked with "&"
|
||||
character.
|
||||
|
||||
|
||||
version 1.71.24 (Oct 27, 2014)
|
||||
|
||||
[+] In the definition of macroinstruction the last argument can now be followed by
|
||||
"&" character to indicate that this argument can be filled with all the remaining
|
||||
contents of line that called the macro. This feature cannot be combined with a
|
||||
multi-value arguments.
|
||||
|
||||
|
||||
version 1.71.23 (Oct 21, 2014)
|
||||
|
||||
[+] Added "bsf" and "bsr" operators to numerical expressions.
|
||||
|
||||
[-] Removed the restriction that disallowed numerical constant to
|
||||
forward-reference its own value.
|
||||
|
||||
|
||||
version 1.71.22 (Sep 28, 2014)
|
||||
|
||||
[-] Format MZ no longer allows the table of relocations to overflow.
|
||||
|
||||
|
||||
version 1.71.21 (May 27, 2014)
|
||||
|
||||
[-] Fixed a bug in the 64-bit floating points value converter.
|
||||
|
||||
|
||||
version 1.71.20 (Feb 27, 2014)
|
||||
|
||||
[-] Fixed a bug in the backward patching of PE fixups.
|
||||
|
||||
|
||||
version 1.71.19 (Feb 09, 2014)
|
||||
|
||||
[-] Corrected some of the range errors in intermediate passes to be correctly
|
||||
resolvable.
|
||||
|
||||
|
||||
version 1.71.18 (Feb 02, 2014)
|
||||
|
||||
[+] Added "irpv" directive.
|
||||
|
||||
|
||||
version 1.71.17 (Jan 27, 2014)
|
||||
|
||||
[-] Minor corrections.
|
||||
|
||||
|
||||
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 "irpv" and "postpone" directives.
|
||||
|
||||
[+] Added ability to define a special kind of label identifying the
|
||||
addressing space. This label can the be used with "load" or "store"
|
||||
|
|
@ -407,26 +18,36 @@ version 1.71.00 (Sep 21, 2012)
|
|||
first the adressing space label, then the colon and then the
|
||||
address inside that addressing space.
|
||||
|
||||
[+] In the definition of macroinstruction the last argument can now be followed by
|
||||
"&" character to indicate that this argument can be filled with all the remaining
|
||||
contents of line that called the macro. This feature cannot be combined with a
|
||||
multi-value arguments.
|
||||
|
||||
version 1.70.03 (Jun 29, 2012)
|
||||
[+] Default value for macroinstruction parameter can now be defined with ":"
|
||||
character as an alternative to "=".
|
||||
|
||||
[-] Allowed to freely upgrade or downgrade the relocatable addresses in
|
||||
object format between the 32-bit or 64-bit size.
|
||||
[+] Added a 64-bit ELF executable version of flat assembler for Linux. It has
|
||||
no extended capabilities compared to regular versions, it just simulates
|
||||
the 32-bit environment to allow running the assembler on systems that
|
||||
support only 64-bit executables.
|
||||
|
||||
[+] Added "gnustack" and "gnuehframe" segment types to ELF executable formatter.
|
||||
|
||||
version 1.70.02 (May 22, 2012)
|
||||
[+] Console versions now display preprocessed instruction that caused an error
|
||||
(previously only displayed by Windows GUI interface).
|
||||
|
||||
[-] 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.
|
||||
[+] Brought back the "-d" switch for command line.
|
||||
|
||||
[-] Removed dependence on size context for expression operators like NOT and XOR.
|
||||
|
||||
version 1.70.01 (Apr 30, 2012)
|
||||
[+] Added "bsf" and "bsr" operators to numerical expressions.
|
||||
|
||||
[-] Corrected a recently introduced bug that caused some illegal
|
||||
address expressions to cause an error prematurely during the
|
||||
parsing stage.
|
||||
[+] Allowed underscore character to be put inside a number value.
|
||||
|
||||
[+] Allowed octal numbers ending with "q".
|
||||
|
||||
[-] Removed the restriction that disallowed numerical constant to
|
||||
forward-reference its own value.
|
||||
|
||||
|
||||
version 1.70 (Apr 17, 2012)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue