"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.