"Fossies" - the Fresh Open Source Software Archive

Member "fasm/whatsnew.txt" (21 Feb 2022, 16449 Bytes) of package /linux/misc/fasm-1.73.30.tgz:


As a special service "Fossies" has tried to format the requested text file into HTML format (style: standard) with prefixed line numbers. Alternatively you can here view or download the uninterpreted source code file. See also the latest Fossies "Diffs" side-by-side code changes report for "whatsnew.txt": 1.73.29_vs_1.73.30.

    1 
    2 Visit http://flatassembler.net/ for more information.
    3 
    4 
    5 version 1.73.30 (Feb 21, 2022)
    6 
    7 [-] No longer signal an error when there is no line to concatenate with "\".
    8 
    9 
   10 version 1.73.29 (Dec 18, 2021)
   11 
   12 [-] Corrected an issue in external use of expression calculator.
   13 
   14 
   15 version 1.73.28 (Sep 16, 2021)
   16 
   17 [+] Added special preprocessing of symbols "__file__" and "__line__"
   18     (backported from flat assembler g).
   19 
   20 
   21 version 1.73.27 (Jan 27, 2021)
   22 
   23 [-] The assembler should no longer prematurely abort when sign-extended 32-bit
   24     value in 64-bit instruction overflows during intermediate passes.
   25 
   26 
   27 version 1.73.26 (Jan 26, 2021)
   28 
   29 [-] Corrected assembly of some "mov" variants when "use32" setting is used
   30     with 64-bit relocatable formats.
   31 
   32 
   33 version 1.73.25 (Aug 20, 2020)
   34 
   35 [-] Corrected operand size handling for "vldmxcsr"/"vstmxcsr" instructions.
   36 
   37 
   38 version 1.73.24 (Apr 29, 2020)
   39 
   40 [+] Added "invlpgb" and "tlbsync" instructions.
   41 
   42 [-] Upper bits of default entry point of ELF64 executable were not correctly
   43     stored in the header.
   44 
   45 
   46 version 1.73.23 (Apr 09, 2020)
   47 
   48 [+] Added "psmash", "pvalidate", "rmpadjust" and "rmpupdate" instructions.
   49 
   50 [-] No longer allowing "mov" to/from CR9-CR15 outside of long mode.
   51 
   52 
   53 version 1.73.22 (Feb 09, 2020)
   54 
   55 [-] Removed a trick from preprocessor's implementation that caused
   56     the x64 version to crash when replacing symbolic constant in a label.
   57 
   58 
   59 version 1.73.21 (Dec 05, 2019)
   60 
   61 [+] Added "$%" and "$%%" symbols, and output offset addressing with "load"
   62     and "store" directives (backported from flat assembler g).
   63     It can be used only with binary output format.
   64 
   65 [+] Added VAES and VPCMULQDQ instruction set extensions.
   66 
   67 [+] Added "pconfig" instruction.
   68 
   69 
   70 version 1.73.20 (Nov 29, 2019)
   71 
   72 [-] Fixed a bug in "cmpxchg" and "xadd" introduced by previous version.
   73 
   74 
   75 version 1.73.19 (Nov 27, 2019)
   76 
   77 [+] Added AVX512_BITALG, AVX512_VPOPCNTDQ, AVX512_VBMI2, AVX512_VNNI
   78     and AVX512_4VNNIW instruction sets.
   79 
   80 [+] Added CET_SS and CET_IBT instruction sets.
   81 
   82 [+] Added "ptwrite" instruction.
   83 
   84 
   85 version 1.73.18 (Nov 13, 2019)
   86 
   87 [-] Addresses prefixed with "fs:" or "gs:" are no longer RIP-relative by default.
   88 
   89 
   90 version 1.73.17 (Nov 10, 2019)
   91 
   92 [+] Added "mcommit" instruction.
   93 
   94 
   95 version 1.73.16 (Aug 04, 2019)
   96 
   97 [-] Corrected a mistake in AVX-512 mask parsing that led to "{k0}" mask being
   98     erroneously accepted.
   99 
  100 
  101 version 1.73.15 (Aug 01, 2019)
  102 
  103 [+] Added "movdiri", "movdir64b" instructions and GFNI instruction set.
  104 
  105 
  106 version 1.73.14 (Jul 30, 2019)
  107 
  108 [+] Added "rdpru" and "wbnoinvd" instructions.
  109 
  110 
  111 version 1.73.13 (Jul 14, 2019)
  112 
  113 [-] Corrections in 64-bit Linux interface.
  114 
  115 
  116 version 1.73.12 (May 19, 2019)
  117 
  118 [-] Implied memory size allowed for 16-bit "movzx"/"movsx".
  119 
  120 
  121 version 1.73.11 (Apr 19, 2019)
  122 
  123 [+] Added "definite" operator.
  124 
  125 
  126 version 1.73.10 (Apr 05, 2019)
  127 
  128 [+] Added "cldemote", "tpause", "umonitor" and "umwait" instructions.
  129 
  130 
  131 version 1.73.09 (Feb 17, 2019)
  132 
  133 [-] Fixed a bug in AVX-512 instruction encoding with "{sae}" modifier.
  134 
  135 
  136 version 1.73.08 (Jan 31, 2019)
  137 
  138 [-] Fixed a bug in "align" directive for "dynamic" variant of ELF executable.
  139 
  140 
  141 version 1.73.07 (Jan 30, 2019)
  142 
  143 [+] Added "dynamic" variant of ELF executable.
  144 
  145 [+] Added "gnurelro" segment type for ELF executable.
  146 
  147 
  148 version 1.73.06 (Jan 04, 2019)
  149 
  150 [+] Added "ud0" and "ud1" instruction.
  151 
  152 [-] Fixed a minor bug in ELF formatter.
  153 
  154 
  155 version 1.73.05 (Jan 03, 2019)
  156 
  157 [-] Segments in ELF executable format automatically expanded to cover headers
  158     and dynamic linking information.
  159 
  160 
  161 version 1.73.04 (Apr 30, 2018)
  162 
  163 [-] Fixed a bug in "bndstx"/"bndldx" special address syntax processing.
  164 
  165 
  166 version 1.73.03 (Apr 15, 2018)
  167 
  168 [+] Added "rdpid", "xsavec", "xsaves", "xrstors", "clzero", "monitorx" and "mwaitx"
  169     instructions.
  170 
  171 
  172 version 1.73.02 (Dec 16, 2017)
  173 
  174 [-] Fixed a bug in the storage of "virtual as" blocks.
  175 
  176 
  177 version 1.73.01 (Nov 25, 2017)
  178 
  179 [+] Added virtual block continuation syntax (backported from flat assembler g).
  180 
  181 [+] Documentation update.
  182 
  183 [-] Fixed a bug in addressing data of the "virtual as" block.
  184 
  185 
  186 version 1.73.00 (Nov 24, 2017)
  187 
  188 [+] Added "virtual as" syntax (backported from flat assembler g).
  189 
  190 
  191 version 1.72 (Oct 10, 2017)
  192 
  193 [+] Support for Intel AVX-512, SHA, CLFLUSHOPT, CLWB, PCOMMIT, ADX, RDSEED, SMAP
  194     and MPX instruction sets.
  195 
  196 [+] Added "irpv" and "postpone" directives.
  197 
  198 [+] Added ability to define a special kind of label identifying the
  199     addressing space. This label can the be used with "load" or "store"
  200     directives to allow operations on bytes in any addressing space,
  201     not just the current one. This special label is defined by following
  202     its name with double colon, and can only be used with "load" and
  203     "store" directive, where address can now be specified in two parts,
  204     first the adressing space label, then the colon and then the
  205     address inside that addressing space.
  206 
  207 [+] In the definition of macroinstruction the last argument can now be followed by
  208     "&" character to indicate that this argument can be filled with all the remaining
  209     contents of line that called the macro. This feature cannot be combined with a
  210     multi-value arguments.
  211 
  212 [+] Default value for macroinstruction parameter can now be defined with ":"
  213     character as an alternative to "=".
  214 
  215 [+] Added a 64-bit ELF executable version of flat assembler for Linux. It has
  216     no extended capabilities compared to regular versions, it just simulates
  217     the 32-bit environment to allow running the assembler on systems that
  218     support only 64-bit executables.
  219 
  220 [+] Added "gnustack" and "gnuehframe" segment types to ELF executable formatter.
  221 
  222 [+] Console versions now display preprocessed instruction that caused an error
  223     (previously only displayed by Windows GUI interface).
  224 
  225 [+] Brought back the "-d" switch for command line.
  226 
  227 [-] Removed dependence on size context for expression operators like NOT and XOR.
  228 
  229 [+] Added "bsf" and "bsr" operators to numerical expressions.
  230 
  231 [+] Allowed underscore character to be put inside a number value.
  232 
  233 [+] Allowed octal numbers ending with "q".
  234 
  235 [-] Removed the restriction that disallowed numerical constant to
  236     forward-reference its own value.
  237 
  238 
  239 version 1.70 (Apr 17, 2012)
  240 
  241 [+] Added support for AVX, AVX2, AES, CLMUL, FMA, RDRAND, FSGSBASE, F16C,
  242     FMA4, XOP, MOVBE, BMI, TBM, INVPCID, HLE and RTM instruction sets.
  243 
  244 [+] Added half-precision floating point values support.
  245 
  246 [+] Extended the syntax of "rept" directive to allow numerical expressions
  247     to be calculated by preprocessor in its arguments.
  248 
  249 [+] Added "large" and "NX" settings for PE format.
  250 
  251 [+] Allowed PE fixups to be resolved anywhere in the generated executable.
  252 
  253 [+] Allowed to specify branding value (use 3 for Linux) after the
  254     "format ELF executable" setting.
  255 
  256 [+] Added "intepreter", "dynamic" and "note" keywords for creation of
  257     special segments in ELF executables.
  258 
  259 [-] Fixed long mode opcode generator to allow absolute addresses to be
  260     generated with "qword" keyword inside square brackets.
  261 
  262 [-] Disallowed negative immediates with "int", "enter", "ret" instructions.
  263 
  264 [+] Allowed symbolic information dump file to be created even in case of error.
  265     In such case it contains only the preprocessed source that can be extracted
  266     with PREPSRC tool. If error occured during preprocessing, only the source up
  267     to the point of error is provided.
  268 
  269 [+] Added symbol references table to symbolic dump file.
  270 
  271 [-] Corrected the "defined" and "used" flags in the symbols dump to reflect the
  272     state from the final assembly pass.
  273 
  274 [+] Added "assert" directive.
  275 
  276 [-] Formatter symbols like "PE" or "readable" are now recognized only in the
  277     context of formatter directives, and thus are no longer disallowed as
  278     labels.
  279 
  280 [+] Macroinstruction argument now can have default value, defined with "="
  281     symbol followed by value after the argument name in definition.
  282 
  283 [+] Added "relativeto" operator, which can be used in logical expressions
  284     to test whether two values differ only by a constant and not relocatable
  285     amount.
  286 
  287 [-] Revised the expression calculator, it now is able to correctly perform
  288     calculations in signed and unsigned ranges in full 64-bit. This fixes
  289     a number of issues - the overflow will now be correctly detected for
  290     64-bit values in cases, where previous versions could not distinguish
  291     whether it was an overflow or not. The effect of these corrections is
  292     that "dq" directive will now behave consistently with behavior of the
  293     data directives for smaller sizes, and the same applies to all the
  294     places where "qword" size for value is used.
  295 
  296 
  297 version 1.68 (Jun 13, 2009)
  298 
  299 [+] Added SSSE3 (Supplemental SSE3), SSE4.1, SSE4.2 and SSE4a instructions.
  300 
  301 [+] Added the AMD SVM and Intel SMX instructions.
  302 
  303 [+] Added "rdmsrq", "wrmsrq", "sysexitq" and "sysretq" mnemonics for the
  304     64-bit variants of respective instructions.
  305 
  306 [+] Added "fstenvw", "fstenvd", "fsavew", "fsaved", "frstorw" and "frstord"
  307     mnemonics to allow choosing between 16-bit and 32-bit variants of
  308     structures used by the "fstenv", "fsave" and "frstor" instructions.
  309 
  310 [+] Added "plt" operator for the ELF output format.
  311 
  312 [+] Allowed "rva" operator to be used in MS COFF object format, and also
  313     added "static" keyword for the "public" directive.
  314 
  315 [+] Added Intel-style aliases for the additional long mode 8-bit registers.
  316 
  317 [-] The PE formatter now automatically detects whether relocatable labels
  318     should be used, depending on whether the fixups directory is placed
  319     somewhere into executable by programer, or not. This makes possible the
  320     more flexible use of the addressing symbols in case of PE executable fixed
  321     at some position.
  322 
  323 [-] Added support for outputting the 32-bit address relocations in case of
  324     64-bit object formats and PE executable. This makes some specific
  325     instructions compilable, but it also forces linker to put such
  326     generated code into the low 2 gigabytes of addressing space.
  327 
  328 [+] Added "EFI", "EFIboot" and "EFIruntime" subsystem keywords for PE format.
  329 
  330 [-] Corrected the precedence of operators of macroinstruction line maker.
  331     The symbol escaping now has always the higher priority than symbol conversion,
  332     and both have higher precedence than concatenation.
  333 
  334 [+] Allowed to check "@b" and "@f" symbols with "defined" operator.
  335 
  336 [+] Allowed "as" operator to specify the output file extension when
  337     placed at the end of the "format" directive line.
  338 
  339 [-] Definition of macro with the same name as one of the preprocessor's directives
  340     is no longer allowed.
  341 
  342 [+] Allowed single quote character to be put inside the number value,
  343     to help improve long numbers readability.
  344 
  345 [+] Added optional symbolic information output, and a set of tools that extract
  346     various kinds of information from it.
  347 
  348 [+] Added "err" directive that allows to signalize error from the source.
  349 
  350 
  351 version 1.66 (May 7, 2006)
  352 
  353 [+] Added "define" directive to preprocessor, which defines symbolic constants,
  354     the same kind as "equ" directive, however there's an important difference
  355     that "define" doesn't process symbolic constants in the value before
  356     assigning it. For example:
  357 
  358         a equ 1
  359         a equ a+a
  360 
  361         define b 1
  362         define b b+b
  363 
  364     defines the "a" constant with value "1+1", but the "b" is defined with
  365     value "b+b". This directive may be useful in some advanced
  366     macroinstructions.
  367 
  368 [-] Moved part of the conditional expression processing into parser,
  369     for slightly better performance and lesser memory usage by assembler.
  370     The logical values defined with "eq", "eqtype" and "in" operators are now
  371     evaluated by the parser and if they are enough to determine the condition,
  372     the whole block is processed accordingly. Thus this block:
  373 
  374         if eax eq EAX | 0/0
  375                 nop
  376         end if
  377 
  378     is parsed into just "nop" instruction, since parser is able to determine
  379     that the condition is true, even though one of the logical values makes no
  380     sense - but since this is none of the "eq", "eqtype" and "in" expressions,
  381     the parser doesn't investigate.
  382 
  383 [-] Also the assembler is now calculating only as many logical values as it
  384     needs to determine the condition. So this block:
  385 
  386         if defined alpha & alpha
  387 
  388         end if
  389 
  390     will not cause error when "alpha" is not defined, as it would with previous
  391     versions. This is because after checking that "defined alpha" is false
  392     condition it doesn't need to know the second logical value to determine the
  393     value of conjunction.
  394 
  395 [+] Added "short" keyword for specifying jump type, the "jmp byte" form is now
  396     obsolete and no longer correct - use "jmp short" instead.
  397 
  398 [-] The size operator applied to jump no longer applies to the size of relative
  399     displacement - now it applies to the size of target address.
  400 
  401 [-] The "ret" instruction with 0 parameter is now assembled into short form,
  402     unless you force using the 16-bit immediate with "word" operator.
  403 
  404 [+] Added missing extended registers for the 32-bit addressing in long mode.
  405 
  406 [+] Added "linkremove" and "linkinfo" section flags for MS COFF output.
  407 
  408 [+] Added support for GOT offsets in ELF object formatter, which can be useful
  409     when making position-independent code for shared libraries. For any label
  410     you can get its offset relative to GOT by preceding it with "rva" operator
  411     (the same keyword as for PE format is used, to avoid adding a new one,
  412     while this one has very similar meaning).
  413 
  414 [-] Changed ELF executable to use "segment" directive in place of "section",
  415     to make the distinction between the run-time segments and linkable
  416     sections. If you had a "section" directive in your ELF executables and they
  417     no longer assemble, replace it with "segment".
  418 
  419 [-] The PE formatter now always creates the fixups directory when told to -
  420     even when there are no fixups to be put there (in such case it creates the
  421     directory with one empty block).
  422 
  423 [-] Some of the internal structures have been extended to provide the
  424     possibility of making extensive symbol dumps.
  425 
  426 [-] Corrected "fix" directive to keep the value intact before assigning it to the
  427     prioritized constant.
  428 
  429 [+] The ` operator now works with any kind of symbol; when used with quoted
  430     string it simply does nothing. Thus the sequence of ` operators applied to
  431     one symbol work the same as if there was just one. In similar manner, the
  432     sequence of # operators now works as if it was a single one - using such a
  433     sequence instead of escaping, which was kept for some backward
  434     compatibility, is now deprecated.
  435 
  436 [-] Corrected order of identifying assembler directives ("if db eq db" was
  437     incorrectly interpreted as data definition).
  438 
  439 [-] Many other small bugs fixed.
  440 
  441 
  442 version 1.64 (Aug 8, 2005)
  443 
  444 [+] Output of PE executables for Win64 architecture (with "format PE64"
  445     setting).
  446 
  447 [+] Added "while" and "break" directives.
  448 
  449 [+] Added "irp" and "irps" directives.
  450 
  451 [+] The macro arguments can be marked as required with the "*" character.
  452 
  453 [-] Fixed checking for overflow when multiplying 64-bit values - the result
  454     must always fit in the range of signed 64 integer now.
  455 
  456 [-] Segment prefixes were generated incorrectly in 16-bit mode when BP was used
  457     as a second addressing register - fixed.
  458 
  459 [-] The "local" directive was not creating unique labels in some cases - fixed.
  460 
  461 [-] The "not encodable with long immediate" error in 64-bit mode was sometimes
  462     wrongly signaled - fixed.
  463 
  464 [-] Other minor fixes and corrections.
  465 
  466 
  467 version 1.62 (Jun 14, 2005)
  468 
  469 [+] Escaping of symbols inside macroinstructions with backslash.
  470 
  471 [+] Ability of outputting the COFF object files for Win64 architecture
  472     (with "format MS64 COFF" setting).
  473 
  474 [+] New preprocessor directives: "restruc", "rept" and "match"
  475 
  476 [+] VMX instructions support (not documented).
  477 
  478 [+] Extended data directives to allow use of the "dup" operator.
  479 
  480 [+] Extended "struc" features to allow custom definitions of main structure's
  481     label.
  482 
  483 [-] When building resources from the the .RES file that contained more
  484     than one resource of the same string name, the separate resource
  485     directories were created with the same names - fixed.
  486 
  487 [-] Several bugs in the ELF64 object output has been fixed.
  488 
  489 [-] Corrected behavior of "fix" directive to more straightforward.
  490 
  491 [-] Fixed bug in "include" directive, which caused files included from within
  492     macros to be processed the wrong way.