release 1.72

This commit is contained in:
Tomasz Grysztar 2017-10-20 12:00:00 +00:00
parent 53e065b3f6
commit e27dd0bf7c
8 changed files with 51 additions and 414 deletions

View file

@ -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]:

View file

@ -1,5 +1,5 @@
flat assembler version 1.71
flat assembler version 1.72
Copyright (c) 1999-2017, Tomasz Grysztar.
All rights reserved.

View file

@ -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:

View file

@ -186,6 +186,9 @@ lseek:
mov dl,al
mov eax,19
int 0x80
cmp eax,-1
je file_error
clc
ret
display_string:

View file

@ -220,6 +220,9 @@ lseek:
syscall
mov esi,r12d
mov edi,r13d
cmp eax,-1
je file_error
clc
ret
display_string:

View file

@ -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

View file

@ -187,6 +187,9 @@ lseek:
push edx
push ebx
call [SetFilePointer]
cmp eax,-1
je file_error
clc
ret
display_string:

View file

@ -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)