0,0 → 1,419 |
|
Visit http://flatassembler.net/ for more information. |
|
|
version 1.67.35 (Mar 09, 2009) |
|
[-] Some internal code size reductions. |
|
[-] Discontinued "-d" switch implementation. |
|
|
version 1.67.34 (Feb 22, 2009) |
|
[-] Fixed small bug with DT directive far pointer syntax. |
|
|
version 1.67.33 (Feb 20, 2009) |
|
[+] Added ERR directive that allows to signalize error from the source. |
|
|
version 1.67.32 (Feb 13, 2009) |
|
[+] Allowed single quote character to be put inside the number value, |
to help improve long numbers readability. |
|
|
version 1.67.31 (Feb 11, 2009) |
|
[-] Fixed floating point converter to no longer generate NaN in some cases, |
and corrected denormal numbers generation. |
|
|
version 1.67.30 (Feb 08, 2009) |
|
[+] Added missing Intel SSE4 instructions. |
|
[+] Added SSE4a (EXTRQ/INSERTQ/MOVNTSD/MOVNTSS) instructions. |
|
[+] Added FSTENVW/FSTENVD/FSAVEW/FSAVED mnemonics. |
|
|
version 1.67.29 (Nov 15, 2008) |
|
[+] Added optional symbolic information output, and a set of tools that extract |
various kinds of information from it. |
|
[+] Allowed RVA operator to be used in COFF object format. |
|
[-] Corrected the FIX directive to allow names of preprocessor's directives to be |
used as prioritized symbolic constant name. |
|
|
version 1.67.28 (Nov 06, 2008) |
|
[+] Added EFI/EFIBOOT/EFIRUNTIME subsystem keywords for PE format (experimental |
feature, still needs to be tested). |
|
[-] Fixed a bug in preprocessor which caused some problems with DISPLAY directive |
output in some cases. |
|
[-] Fixed a bug that allowed to define a symbol named "eip" or "rip". |
|
[-] Fixed a problem with assembling MOVQ RAX,XMM0 instruction. |
|
|
version 1.67.27 (Jul 12, 2008) |
|
[-] Fixed a bug which caused instructions from JCXZ/LOOP family to be incorrectly |
assembled when requiring 67h prefix and provided with "$" operand. |
|
[-] Definition of macro with the same name as one of the preprocessor's directives |
is no longer allowed. |
|
[-] Fixed REPT directive to check out validity of its parameters even when the |
count is zero. |
|
[-] Fixed VMREAD/VMWRITE syntax in the USE64 mode. |
|
[-] Corrected MZ header generation and handling for the case when the last page of |
executable contains the round 512 bytes. |
|
|
version 1.67.26 (Jan 27, 2008) |
|
[+] Added partial SSE4 support (a couple of instructions left to be implemented |
in the next releases) |
|
[+] Added GETSEC instruction for the SMX functions calling. |
|
[-] Some fixes and rearrangements in the DOS version. |
|
|
version 1.67.25 (Dec 30, 2007) |
|
[-] Fixed a couple of bugs related to undefined symbol error signaling. |
|
|
version 1.67.24 (Dec 03, 2007) |
|
[+] Added "-d" option to allow predefining symbolic constants from command line. |
|
[-] Changed some of the error messages to be more informative. |
|
|
version 1.67.23 (Sep 08, 2007) |
|
[+] Added "static" keyword for the "public" directive in COFF format. |
|
[-] Redirected error information into stderr. |
|
|
version 1.67.22 (Aug 05, 2007) |
|
[+] Allowed to check "@b" and "@f" symbols with "defined" operator. |
|
[+] Allowed "as" operator to specify the output file extension when |
placed at the end of the "format" directive line. |
|
[-] Fixed a bug with stack size declaration in PE64 format that |
caused assembler to crash. |
|
[-] Corrected the VMREAD and VMWRITE instructions to allow registers |
in place of memory operands. |
|
[-] Corrected a mistake that made PLT operator not work correctly with |
the CALL instruction. |
|
|
version 1.67.21 (Feb 17, 2007) |
|
[+] Allowed 32-bit relocations in PE64 output format. |
|
[-] Fixed a bug that caused "push cr0" error to go unnoticed by assembler. |
|
|
version 1.67.20 (Feb 12, 2007) |
|
[-] Corrected the range checking of signed address displacements in 64-bit mode. |
|
|
version 1.67.19 (Feb 10, 2007) |
|
[-] Disallowed labels starting with $ character. |
|
[-] Fixed some problems with handling 32-bit relocations in 64-bit formats. |
|
|
version 1.67.18 (Dec 27, 2006) |
|
[-] Fixed a small mistake in the recent corrections of logical expression parser. |
|
|
version 1.67.17 (Dec 20, 2006) |
|
[-] Corrected the precedence of operators of macroinstruction line maker. |
The symbol escaping now has always the higher priority than symbol conversion, |
and both have higher precedence than concatenation. |
|
[-] Fixed problems with logical expression parser to handle correctly comparing |
values containing round brackets with the EQ or EQTYPE operator. |
The only limitation now is that when you use round brackets to enclose some |
logical expressions, they must be paired everywhere inside those expressions. |
|
|
version 1.67.16 (Dec 17, 2006) |
|
[-] Fixed a really old bug in register expression calculator. |
|
|
version 1.67.15 (Nov 20, 2006) |
|
[-] Some final (?) fixes and cleanup in the relative-offsets calculations. |
|
|
version 1.67.14 (Oct 28, 2006) |
|
[-] Another small bug fixes. |
|
|
version 1.67.13 (Oct 26, 2006) |
|
[-] Fixed a bug with handling of invalid expressions by "defined" operator. |
|
[-] Fixed a newly-introduced bug with relocations in automatically generated RIP-relative |
addressings. |
|
|
version 1.67.12 (Oct 1, 2006) |
|
[+] Added EIP-relative addressing, and fixed some bugs with RIP-related one aswell. |
|
|
version 1.67.11 (Sep 26, 2006) |
|
[+] Added PLT operator for the ELF output format. |
|
[-] Rearranged and fixed some of the relocation handling routines. |
|
|
version 1.67.10 (Sep 23, 2006) |
|
[+] Added SSSE3 (Supplemental SSE3) instructions. |
|
|
version 1.67.9 (Sep 21, 2006) |
|
[+] Added some Win64 headers and examples in the Windows package. |
|
[-] Fixed another operand size checking bug with MOVQ instruction. |
|
|
version 1.67.8 (Sep 17, 2006) |
|
[-] Fixed a bug in address processing that caused disallowed combinations like |
[qword eax] to be accepted. |
|
|
version 1.67.7 (Jul 31, 2006) |
|
[-] Fixed a bug that caused over-repeated processing of macro operators when |
many embedded macros were placed in one line |
|
[+] Added SYSRETQ mnemonic. |
|
|
version 1.67.6 (Jul 21, 2006) |
|
[+] Added (not yet documented) RDMSRQ/WRMSRQ/SYSEXITQ mnemonics for the 64-bit |
variants of respective instructions. |
|
[+] Added information about memory allocation to the command line interfaces. |
This should make it easier to decide when to use the -m switch. |
|
|
version 1.67.5 (Jul 7, 2006) |
|
[-] Fixed encoding of MOV (E)AX,[WORD ADDR] instruction in 32-bit mode. |
|
|
version 1.67.4 (Jul 5, 2006) |
|
[+] Added R8L-R15L (Intel-style) aliases for R8B-R15B registers. |
|
[-] Further optimizations in the parser. |
|
|
version 1.67.3 (Jul 2, 2006) |
|
[-] Improved an instruction searching algorithm a bit. |
|
|
version 1.67.2 (Jul 1, 2006) |
|
[-] Fixed a recently introduced bug with ELF relocations in case of 32-bit |
object. |
|
|
version 1.67.1 (Jun 30, 2006) |
|
[+] Added the support for the new AMD SVM technology instructions. |
|
|
version 1.67.0 (Jun 28, 2006) |
|
[-] The PE formatter now automatically detects whether relocatable labels |
should be used, depending on whether the fixups directory is placed |
somewhere into executable by programer, or not. This makes possible the |
more flexible use of the addressing symbols in case of PE executable fixed |
at some position. |
|
[-] Added support for outputting the 32-bit address relocations in case of |
64-bit object formats. This makes some specific instructions compilable, |
but it also forces linker to put such generated code into the low 2 |
gigabytes of addressing space. |
|
|
version 1.66 (May 7, 2006) |
|
[+] Added DEFINE directive to preprocessor, which defines symbolic constants, |
the same kind as EQU directive, however there's an important difference |
that DEFINE doesn't process symbolic constants in the value before |
assigning it. For example: |
|
a equ 1 |
a equ a+a |
|
define b 1 |
define b b+b |
|
defines the "a" constant with value "1+1", but the "b" is defined with |
value "b+b". This directive may be useful in some advanced |
macroinstructions. |
|
[-] Moved part of the conditional expression processing into parser, |
for slightly better performance and lesser memory usage by assembler. |
The logical values defined with "eq", "eqtype" and "in" operators are now |
evaluated by the parser and if they are enough to determine the condition, |
the whole block is processed accordingly. Thus this block: |
|
if eax eq EAX | 0/0 |
nop |
end if |
|
is parsed into just NOP instruction, since parser is able to determine |
that the condition is true, even though one of the logical values makes no |
sense - but since this is none of the "eq", "eqtype" and "in" expressions, |
the parser doesn't investigate. |
|
[-] Also the assembler is now calculating only as many logical values as it |
needs to determine the condition. So this block: |
|
if defined alpha & alpha |
|
end if |
|
will not cause error when "alpha" is not defined, as it would with previous |
versions. This is because after checking that "defined alpha" is false |
condition it doesn't need to know the second logical value to determine the |
value of conjunction. |
|
[+] Added "short" keyword for specifying jump type, the "jmp byte" form is now |
obsolete and no longer correct - use "jmp short" instead. |
|
[-] The size operator applied to jump no longer applies to the size of relative |
displacement - now it applies to the size of target address. |
|
[-] The RET instruction with 0 parameter is now assembled into short form, |
unless you force using the 16-bit immediate with "word" operator. |
|
[+] Added missing extended registers for the 32-bit addressing in long mode. |
|
[+] Added "linkremove" and "linkinfo" section flags for MS COFF output. |
|
[+] Added support for GOT offsets in ELF object formatter, which can be useful |
when making position-independent code for shared libraries. For any label |
you can get its offset relative to GOT by preceding it with "rva" operator |
(the same keyword as for PE format is used, to avoid adding a new one, |
while this one has very similar meaning). |
|
[-] Changed ELF executable to use "segment" directive in place of "section", |
to make the distinction between the run-time segments and linkable |
sections. If you had a "section" directive in your ELF executables and they |
no longer assemble, replace it with "segment". |
|
[-] The PE formatter now always creates the fixups directory when told to - |
even when there are no fixups to be put there (in such case it creates the |
directory with one empty block). |
|
[-] Some of the internal structures have been extended to provide the |
possibility of making extensive symbol dumps. |
|
[-] Corrected FIX directive to keep the value intact before assigning it to the |
prioritized constant. |
|
[+] The ` operator now works with any kind of symbol; when used with quoted |
string it simply does nothing. Thus the sequence of ` operators applied to |
one symbol work the same as if there was just one. In similar manner, the |
sequence of # operators now works as if it was a single one - using such a |
sequence instead of escaping, which was kept for some backward |
compatibility, is now deprecated. |
|
[-] Corrected order of identifying assembler directives ("if db eq db" was |
incorrectly interpreted as data definition). |
|
[-] Many other small bugs fixed. |
|
|
version 1.64 (Aug 8, 2005) |
|
[+] Output of PE executables for Win64 architecture (with "format PE64" |
setting). |
|
[+] Added "while" and "break" directives. |
|
[+] Added "irp" and "irps" directives. |
|
[+] The macro arguments can be marked as required with the "*" character. |
|
[-] Fixed checking for overflow when multiplying 64-bit values - the result |
must always fit in the range of signed 64 integer now. |
|
[-] Segment prefixes were generated incorrectly in 16-bit mode when BP was used |
as a second addressing register - fixed. |
|
[-] The "local" directive was not creating unique labels in some cases - fixed. |
|
[-] The "not encodable with long immediate" error in 64-bit mode was sometimes |
wrongly signaled - fixed. |
|
[-] Other minor fixes and corrections. |
|
|
version 1.62 (Jun 14, 2005) |
|
[+] Escaping of symbols inside macroinstructions with backslash. |
|
[+] Ability of outputting the COFF object files for Win64 architecture |
(with "format MS64 COFF" setting). |
|
[+] New preprocessor directives: "restruc", "rept" and "match" |
|
[+] VMX instructions support (not documented). |
|
[+] Extended data directives to allow use of the "dup" operator. |
|
[+] Extended "struc" features to allow custom definitions of main structure's |
label. |
|
[-] When building resources from the the .RES file that contained more |
than one resource of the same string name, the separate resource |
directories were created with the same names - fixed. |
|
[-] Several bugs in the ELF64 object output has been fixed. |
|
[-] Corrected behavior of "fix" directive to more straightforward. |
|
[-] Fixed bug in "include" directive, which caused files included from within |
macros to be processed the wrong way. |