Flat Assembler Changelog

What's new in Flat Assembler 1.73.32

Dec 5, 2023
  • Corrected encoding of "rdpid" instruction operand.

New in Flat Assembler 1.73.31 (Jul 12, 2023)

  • Handling multiple sign characters before a floating-point value.
  • Corrected an issue with negative offsets for some relocatable addresses.
  • Fixed a potential crash in external stub processor for PE.

New in Flat Assembler 1.73.30 (Feb 21, 2022)

  • No longer signal an error when there is no line to concatenate with "".

New in Flat Assembler 1.73.29 (Dec 18, 2021)

  • Corrected an issue in external use of expression calculator.

New in Flat Assembler 1.73.28 (Sep 16, 2021)

  • Added special preprocessing of symbols "__file__" and "__line__" (backported from flat assembler g).

New in Flat Assembler 1.73.27 (Jan 27, 2021)

  • The assembler should no longer prematurely abort when sign-extended 32-bit value in 64-bit instruction overflows during intermediate passes.

New in Flat Assembler 1.73.25 (Oct 21, 2020)

  • Corrected operand size handling for "vldmxcsr"/"vstmxcsr" instructions.

New in Flat Assembler 1.70 (May 4, 2012)

  • Added support for AVX, AVX2, AES, CLMUL, FMA, RDRAND, FSGSBASE, F16C,
  • FMA4, XOP, MOVBE, BMI, TBM, INVPCID, HLE and RTM instruction sets.
  • Added half-precision floating point values support.
  • 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.
  • Allowed PE fixups to be resolved anywhere in the generated executable.
  • Allowed to specify branding value (use 3 for Linux) after the "format ELF executable" setting.
  • Added "interpreter", "dynamic" and "note" keywords for creation of
  • special segments in ELF executable.
  • Fixed long mode opcode generator to allow absolute addresses to be
  • generated with "qword" keyword inside square brackets.
  • Disallowed negative immediates with "int", "enter", "ret" instructions.
  • Allowed symbolic information dump file to be created even in case of error.
  • In such case it contains only the preprocessed source that can be extracted
  • with PREPSRC tool. If error occurred during preprocessing, only the source up
  • to the point of error is provided.
  • Added symbol references table to symbolic dump file.
  • Corrected the "defined" and "used" flags in the symbols dump to reflect the
  • state from the final assembly pass.
  • Added "assert" directive.
  • Formatter symbols like "PE" or "readable" are now recognized only in the
  • context of formatter directives, and thus are no longer disallowed as
  • labels.
  • Macroinstruction argument now can have default value, defined with "="
  • symbol followed by value after the argument name in definition.
  • Added "relativeto" operator, which can be used in logical expressions
  • to test whether two values differ only by a constant and not relocatable amount.
  • Revised the expression calculator, it now is able to correctly perform
  • alculations in signed and unsigned ranges in full 64-bit. This fixes a number of issues - the overflow will now be correctly detected for 64-bit values in cases, where previous versions could not distinguish whether it was an overflow or not. The effect of these corrections is that "dq" directive will now behave consistently with behavior of the data directives for smaller sizes, and the same applies to all the places where "qword" size for value is used.

New in Flat Assembler 1.69.03 (Aug 27, 2009)

  • Allowed simplified syntax for "monitor", "mwait", "blendvps", "blendvpd" and "pblendvb" instructions.

New in Flat Assembler 1.69.02 (Aug 27, 2009)

  • Minor bugfixes.

New in Flat Assembler 1.69.01 (Aug 27, 2009)

  • Added "movbe" instruction.
  • "extractps" no longer generates the double 66h prefix.

New in Flat Assembler 1.69.00 (Aug 27, 2009)

  • Extended the syntax of "rept" directive to allow numerical expressions to be calculated by preprocessor in its arguments.
  • The code of assembler (but not data) has been made position-independent, and this allowed to use code segmentation in DOS unREAL mode, so the code is no longer limited to 64 kilobytes.

New in Flat Assembler 1.68 (Aug 27, 2009)

  • Added SSSE3 (Supplemental SSE3), SSE4.1, SSE4.2 and SSE4a instructions.
  • Added the AMD SVM and Intel SMX instructions.
  • Added "rdmsrq", "wrmsrq", "sysexitq" and "sysretq" mnemonics for the bit variants of respective instructions.
  • Added "fstenvw", "fstenvd", "fsavew", "fsaved", "frstorw" and "frstord" mnemonics to allow choosing between 16-bit and 32-bit variants of structures used by the "fstenv", "fsave" and "frstor" instructions.
  • Added "plt" operator for the ELF output format.
  • Allowed "rva" operator to be used in MS COFF object format, and also added "static" keyword for the "public" directive.
  • Added Intel-style aliases for the additional long mode 8-bit registers.
  • 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 and PE executable. This makes some specific instructions compilable, but it also forces linker to put such generated code into the low 2 gigabytes of addressing space.
  • Added "EFI", "EFIboot" and "EFIruntime" subsystem keywords for PE format.
  • 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.
  • 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.
  • Definition of macro with the same name as one of the preprocessor's directives is no longer allowed.
  • Allowed single quote character to be put inside the number value, to help improve long numbers readability.
  • Added optional symbolic information output, and a set of tools that extract various kinds of information from it.
  • Added "err" directive that allows to signalize error from the source.

New in Flat Assembler 1.67.27 (Aug 14, 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