forked from netwide-assembler/nasm
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathchanges.src
More file actions
2867 lines (1756 loc) · 90.1 KB
/
Copy pathchanges.src
File metadata and controls
2867 lines (1756 loc) · 90.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
\#
\# NASM revision history in nasmdoc format
\#
\H{cl-2.xx} NASM 2 Series
The NASM 2 series supports x86-64, and is the production version of NASM
since 2007.
\S{cl-2.15.03} Version 2.15.03
\b Add instructions from the Intel Instruction Set Extensions and
Future Features Programming Reference, June 2020. This includes
AVX5512 \c{bfloat16}, AVX512 mask intersect, and Intel Advanced Matrix
Extensions (AMX).
\b Support for \c{bfloat16} floating-point constants. See \k{fltconst}
and \k{pkg_fp}.
\b Properly display warnings in preprocess-only mode.
\b Fix copy-and-paste of examples from the PDF documentation.
\b Debug information now properly reflect the line numbers of macro
invocations (unless declared \c{.nolist}).
\b Fix excessive alignment of sections in the
\c{coff}/\c{win32}/\c{win64} output formats when the user-specified
alignment is less than the default alignment for the section or
section type.
\b Fix explicit token pasting (\c{%+}, \k{concat%+}) for the cases
where one or more parts result from empty token expansion, resulting
in \c{%+} tokens at the beginning or end, or multiple ones in a row.
\b Fix macro label capture (\c{%00}, \k{percent00}).
\b Much better documentation for the MASM compatiblity package,
\c{%use masm} (see \k{pkg_masm}).
\b Fix \c{LEA} without square brackets, for MASM compatibility.
\b Portability fixes.
\S{cl-2.15.02} Version 2.15.02
\b Fix miscompilation when building with \c{clang}.
\b Add \c{db-empty} warning class, see \k{opt-w}.
\b Fix the dependencies in the MSVC NMAKE makefile (\c{Mkfiles/msvc.mak}).
\b Some documentation improvements and cleanups.
\b Fix the handling of macro parameter ranges (\c{%\{:\}}), including
with brace-enclosed original arguments.
\S{cl-2.15.01} Version 2.15.01
\b Fix building the documentation from the release archive. For 2.15,
the user has to do \c{make warnings} manually in the main directory in
order to be able to build the documentation, which means Perl needs to
be installed on the system.
\b Add instructions for Intel Control Flow Enforcement Technology (CET).
\S{cl-2.15} Version 2.15
\b The comparison and booleanizing operators can now be used in any
expression context, not just \c{%if}. See \k{expr}.
\b New operator \c{?} ... \c{:}. See \k{exptri}.
\b Signed shift operators \c{<<<} and \c{>>>}. See \k{expshift}.
\b The MASM \c{DUP} syntax for data definitions is now supported, in a
somewhat enhanced form. See \k{db}.
\b Warn for strange legacy behavior regarding empty arguments in
multi-line macro expansion, but try to match legacy behavior in most
cases. Legacy behavior can be disabled with the directive \c{%pragma
preproc sane_empty_expansion}, see \k{mlmacro} and
\k{pragma-preproc}.
\b A much more sensible limit to expression evaluation depth. The
previously defined limit would rarely trigger before NASM died with a
stack overrun error on most systems. See \k{opt-limit}.
\b The state of warnings can now be saved and restored via the
\c{[WARNING PUSH]} and \c{[WARNING POP]} directives. See
\k{asmdir-warning}.
\b The \c{sectalign on|off} switch does not affect an explicit directive. See
\k{sectalign}.
\b Added \c{configure} option to enable building with profiling
(\c{--enable-profiling}).
\b Attempt to support of long path names, up to 32767 of UTF-16
characters, on Windows.
\b Fixed 'mismatch in operand sizes' error in the \c{MOVDDUP},
\c{CMPXCHG8B} and \c{CMPXCHG16B} instructions.
\b Improved error messages in the string transformation routine.
\b Removed obsolete \c{gnu-elf-extensions} warning about 8- and 16-bit
relocation generation. See \k{elf16}
\b Added group aliases for all prefixed warnings. See \k{opt-w}.
\b Allowed building with MSVC versions older than 1700.
\b Added implicitly sized versions of the \c{K...} instructions, which
allows the \c{K...} instructions to be specified without a size suffix as
long as the operands are sized.
\b Added \c{-L} option for additional listing information. See \k{opt-L}.
\b Added some warnings for obsolete instructions for a specified CPU.
\b Deprecated \c{-hf} and \c{-y} options. Use \c{-h} instead.
\b Made DWARF as the default debug format for ELF.
\b Added \c{%pragma list} \e{options...} to set or clear listing options
(see \c{opt-L}).
\b Allowed immediate syntax for \c{LEA} instruction (ignore operand
size completely).
\b Added limited functionality MASM compatibility package. See
\k{pkg_masm}.
\b Add single-line macros aliases using \c{%defalias} or
\c{%idefalias}. These behave like a kind of "symbolic links" for
single-line macros. See \k{defalias} and \c{clear}.
\b Added support for stringify, nostrip, evaluating, and greedy
single-line macro arguments. See \k{define}.
\b Unused single-line macro arguments no longer need to have a
specified name. See \k{define}.
\b Added conditional comma operator \c{%,}. See \k{cond-comma}.
\b Changed private namespace from \c{__foo__} to \c{__?foo?__}, so a user
namespace starting from underscore is now clean from symbols. For
backwards compatibility, the previous names are defined as aliases; see
\k{defalias}, \k{clear} and \k{stdmac}.
\b Added support of ELF weak symbols and external references. See \k{elfglob}.
\b Changed the behavior of the EXTERN keyword and introduced REQUIRED keyword.
See \k{required}.
\b Added \c{%ifusable} and \c{%ifusing} directives. See \k{macropkg}.
\b Made various performance improvements and stability fixes in macro
preprocessor engine.
\b Improved NASM error handling and cleaned up error messages.
\b Many, many bug fixes.
\S{cl-2.14.03} Version 2.14.03
\b Suppress nuisance "\c{label changed during code generation}" messages
after a real error.
\b Add support for the \c{merge} and \c{strings} attributes on ELF
sections. See \k{elfsect}.
\b Add support for the \c{note}, \c{preinit_array}, \c{init_array},
and \c{fini_array} sections type in ELF. See \k{elfsect}.
\b Handle more than 32,633 sections in ELF.
\S{cl-2.14.02} Version 2.14.02
\b Fix crash due to multiple errors or warnings during the code
generation pass if a list file is specified.
\S{cl-2.14.01} Version 2.14.01
\b Create all system-defined macros defore processing command-line
given preprocessing directives (\c{-p}, \c{-d}, \c{-u}, \c{--pragma},
\c{--before}).
\b If debugging is enabled, define a \c{__DEBUG_FORMAT__} predefined
macro. See \k{dfmtm}.
\b Fix an assert for the case in the \c{obj} format when a \c{SEG}
operator refers to an \c{EXTERN} symbol declared further down in the
code.
\b Fix a corner case in the floating-point code where a binary, octal
or hexadecimal floating-point having at least 32, 11, or 8 mantissa
digits could produce slightly incorrect results under very specific
conditions.
\b Support \c{-MD} without a filename, for \c{gcc}
compatibility. \c{-MF} can be used to set the dependencies output
filename. See \k{opt-MD}.
\b Fix \c{-E} in combination with \c{-MD}. See \k{opt-E}.
\b Fix missing errors on redefined labels; would cause convergence
failure instead which is very slow and not easy to debug.
\b Duplicate definitions of the same label \e{with the same value} is now
explicitly permitted (2.14 would allow it in some circumstances.)
\b Add the option \c{--no-line} to ignore \c{%line} directives in the
source. See \k{opt-no-line} and \k{line}.
\S{cl-2.14} Version 2.14
\b Changed \c{-I} option semantics by adding a trailing path separator
unconditionally.
\b Fixed null dereference in corrupted invalid single line macros.
\b Fixed division by zero which may happen if source code is malformed.
\b Fixed out of bound access in processing of malformed segment override.
\b Fixed out of bound access in certain \c{EQU} parsing.
\b Fixed buffer underflow in float parsing.
\b Added \c{SGX} (Intel Software Guard Extensions) instructions.
\b Added \c{+n} syntax for multiple contiguous registers.
\b Fixed \c{subsections_via_symbols} for \c{macho} object format.
\b Added the \c{--gprefix}, \c{--gpostfix}, \c{--lprefix}, and
\c{--lpostfix} command line options, to allow command line base symbol
renaming. See \k{opt-pfix}.
\b Allow label renaming to be specified by \c{%pragma} in addition to
from the command line. See \k{mangling}.
\b Supported generic \c{%pragma} namespaces, \c{output} and \c{debug}. See
\k{pragma}.
\b Added the \c{--pragma} command line option to inject a \c{%pragma}
directive. See \k{opt-pragma}.
\b Added the \c{--before} command line option to accept preprocess
statement before input. See \k{opt-before}.
\b Added \c{AVX512} \c{VBMI2} (Additional Bit Manipulation), \c{VNNI} (Vector
Neural Network), \c{BITALG} (Bit Algorithm), and \c{GFNI} (Galois Field New
Instruction) instructions.
\b Added the \c{STATIC} directive for local symbols that should be
renamed using global-symbol rules. See \k{static}.
\b Allow a symbol to be defined as \c{EXTERN} and then later
overridden as \c{GLOBAL} or \c{COMMON}. Furthermore, a symbol declared
\c{EXTERN} and then defined will be treated as \c{GLOBAL}. See \k{extern}.
\b The \c{GLOBAL} directive no longer is required to precede the
definition of the symbol.
\b Support \c{private_extern} as \c{macho} specific extension to the
\c{GLOBAL} directive. See \k{macho-pext}.
\b Updated \c{UD0} encoding to match with the specification
\b Added the \c{--limit-X} command line option to set execution
limits. See \k{opt-limit}.
\b Updated the \c{Codeview} version number to be aligned with \c{MASM}.
\b Added the \c{--keep-all} command line option to preserve output
files. See \k{opt-keep-all}.
\b Added the \c{--include} command line option, an alias to \c{-P} (\k{opt-p}).
\b Added the \c{--help} command line option as an alias to \c{-h} (\k{syntax}).
\b Added \c{-W}, \c{-D}, and \c{-Q} suffix aliases for \c{RET}
instructions so the operand sizes of these instructions can be
encoded without using \c{o16}, \c{o32} or \c{o64}.
\S{cl-2.13.03} Version 2.13.03
\b Added AVX and AVX512 \c{VAES*} and \c{VPCLMULQDQ} instructions.
\b Fixed missing dwarf record in x32 ELF output format.
\S{cl-2.13.02} Version 2.13.02
\b Fix false positive in testing of numeric overflows.
\b Fix generation of \c{PEXTRW} instruction.
\b Fix \c{smartalign} package which could trigger an error during
optimization if the alignment code expanded too much due to
optimization of the previous code.
\b Fix a case where negative value in \c{TIMES} directive causes
panic instead of an error.
\b Always finalize \c{.debug_abbrev} section with a null in
\c{dwarf} output format.
\b Support \c{debug} flag in section attributes for \c{macho}
output format. See \k{machosect}.
\b Support up to 16 characters in section names for \c{macho}
output format.
\b Fix missing update of global \c{BITS} setting if \c{SECTION}
directive specified a bit size using output format-specific
extensions (e.g. \c{USE32} for the \c{obj} output format.)
\b Fix the incorrect generation of VEX-encoded instruction when static
mode decorators are specified on scalar instructions, losing the
decorators as they require EVEX encoding.
\b Option \c{-MW} to quote dependency outputs according to Watcom
Make conventions instead of POSIX Make conventions. See \k{opt-MW}.
\b The \c{obj} output format now contains embedded dependency file
information, unless disabled with \c{%pragma obj nodepend}. See
\k{objdepend}.
\b Fix generation of dependency lists.
\b Fix a number of null pointer reference and memory allocation errors.
\b Always generate symbol-relative relocations for the \c{macho64}
output format; at least some versions of the XCode/LLVM linker fails
for section-relative relocations.
\S{cl-2.13.01} Version 2.13.01
\b Fix incorrect output for some types of \c{FAR} or \c{SEG}
references in the \c{obj} output format, and possibly other 16-bit
output formats.
\b Fix the address in the list file for an instruction containing a
\c{TIMES} directive.
\b Fix error with \c{TIMES} used together with an instruction which
can vary in size, e.g. \c{JMP}.
\b Fix breakage on some uses of the \c{DZ} pseudo-op.
\S{cl-2.13} Version 2.13
\b Support the official forms of the \c{UD0} and \c{UD1} instructions.
\b Allow self-segment-relative expressions in immediates and
displacements, even when combined with an external or otherwise
out-of-segment special symbol, e.g.:
\c extern foo
\c mov eax,[foo - $ + ebx] ; Now legal
\b Handle a 64-bit origin in NDISASM.
\b NASM can now generate sparse output files for relevant output
formats, if the underlying operating system supports them.
\b The \c{macho} object format now supports the \c{subsections_via_symbols}
and \c{no_dead_strip} directives, see \k{macho-ssvs}.
\b The \c{macho} object format now supports the \c{no_dead_strip},
\c{live_support} and \c{strip_static_syms} section flags, see
\k{machosect}.
\b The \c{macho} object format now supports the \c{dwarf} debugging
format, as required by newer toolchains.
\b All warnings can now be suppressed if desired; warnings not
otherwise part of any warning class are now considered its own
warning class called \c{other} (e.g. \c{-w-other}). Furthermore,
warning-as-error can now be controlled on a per warning class
basis, using the syntax \c{-w+error=}\e{warning-class} and its
equivalent for all other warning control options. See \k{opt-w}
for the command-line options and warning classes and
\k{asmdir-warning} for the \c{[WARNING]} directive.
\b Fix a number of bugs related to AVX-512 decorators.
\b Significant improvements to building NASM with Microsoft Visual
Studio via \c{Mkfiles/msvc.mak}. It is now possible to build the
full Windows installer binary as long as the necessary
prerequisites are installed; see \c{Mkfiles/README}
\b To build NASM with custom modifications (table changes) or from the
git tree now requires Perl 5.8 at the very minimum, quite possibly
a higher version (Perl 5.24.1 tested.) There is no requirement to
have Perl on your system at all if all you want to do is build
unmodified NASM from source archives.
\b Fix the \c{\{z\}} decorator on AVX-512 \c{VMOVDQ*} instructions.
\b Add new warnings for certain dangerous constructs which never ought
to have been allowed. In particular, the \c{RESB} family of
instructions should have been taking a critical expression all
along.
\b Fix the EVEX (AVX-512) versions of the \c{VPBROADCAST}, \c{VPEXTR},
and \c{VPINSR} instructions.
\b Support contracted forms of additional instructions. As a general
rule, if an instruction has a non-destructive source immediately
after a destination register that isn't used as an input, NASM
supports omitting that source register, using the destination
register as that value. This among other things makes it easier to
convert SSE code to the equivalent AVX code:
\c addps xmm1,xmm0 ; SSE instruction
\c vaddps ymm1,ymm1,ymm0 ; AVX official long form
\c vaddps ymm1,ymm0 ; AVX contracted form
\b Fix Codeview malformed compiler version record.
\b Add the \c{CLWB} and \c{PCOMMIT} instructions. Note that the
\c{PCOMMIT} instruction has been deprecated and will never be
included in a shipping product; it is included for completeness
only.
\b Add the \c{%pragma} preprocessor directive for soft-error directives.
\b Add the \c{RDPID} instruction.
\S{cl-2.12.02} Version 2.12.02
\b Fix preprocessor errors, especially \c{%error} and \c{%warning},
inside \c{%if} statements.
\b Fix relative relocations in 32-bit Mach-O.
\b More Codeview debug format fixes.
\b If the MASM \c{PTR} keyword is encountered, issue a warning. This is
much more likely to indicate a MASM-ism encountered in NASM than it
is a valid label. This warning can be suppressed with \c{-w-ptr},
the \c{[warning]} directive (see \k{opt-w}) or by the macro
definition \c{%idefine ptr $%?} (see \k{selfref%?}).
\b When an error or a warning comes from the expansion of a multi-line
macro, display the file and line numbers for the expanded macros.
Macros defined with \c{.nolist} do not get displayed.
\b Add macros \c{ilog2fw()} and \c{ilog2cw()} to the \c{ifunc} macro
package. See \k{ilog2}.
\S{cl-2.12.01} Version 2.12.01
\b Portability fixes for some platforms.
\b Fix error when not specifying a list file.
\b Correct the handling of macro-local labels in the Codeview
debugging format.
\b Add \c{CLZERO}, \c{MONITORX} and \c{MWAITX} instructions.
\S{cl-2.12} Version 2.12
\b Major fixes to the \c{macho} backend (\k{machofmt}); earlier versions
would produce invalid symbols and relocations on a regular basis.
\b Support for thread-local storage in Mach-O.
\b Support for arbitrary sections in Mach-O.
\b Fix wrong negative size treated as a big positive value passed into
backend causing NASM to crash.
\b Fix handling of zero-extending unsigned relocations, we have been printing
wrong message and forgot to assign segment with predefined value before
passing it into output format.
\b Fix potential write of oversized (with size greater than allowed in
output format) relative relocations.
\b Portability fixes for building NASM with the LLVM compiler.
\b Add support of Codeview version 8 (\c{cv8}) debug format for
\c{win32} and \c{win64} formats in the \c{COFF} backend,
see \k{codeview}.
\b Allow 64-bit outputs in 16/32-bit only backends. Unsigned 64-bit
relocations are zero-extended from 32-bits with a warning
(suppressible via \c{-w-zext-reloc}); signed 64-bit relocations are
an error.
\b Line numbers in list files now correspond to the lines in the source
files, instead of simply being sequential.
\b There is now an official 64-bit (x64 a.k.a. x86-64) build for Windows.
\S{cl-2.11.09} Version 2.11.09
\b Fix potential stack overwrite in \c{macho32} backend.
\b Fix relocation records in \c{macho64} backend.
\b Fix symbol lookup computation in \c{macho64} backend.
\b Adjust \c{.symtab} and \c{.rela.text} sections alignments to 8 bytes
in \c{elf64} backed.
\b Fix section length computation in \c{bin} backend which leaded in incorrect
relocation records.
\S{cl-2.11.08} Version 2.11.08
\b Fix section length computation in \c{bin} backend which leaded in incorrect
relocation records.
\b Add a warning for numeric preprocessor definitions passed via command
line which might have unexpected results otherwise.
\b Add ability to specify a module name record in \c{rdoff} linker with
\c{-mn} option.
\b Increase label length capacity up to 256 bytes in \c{rdoff} backend for
FreePascal sake, which tends to generate very long labels for procedures.
\b Fix segmentation failure when rip addressing is used in \c{macho64} backend.
\b Fix access on out of memory when handling strings with a single
grave. We have sixed similar problem in previous release but not
all cases were covered.
\b Fix NULL dereference in disassembled on \c{BND} instruction.
\S{cl-2.11.07} Version 2.11.07
\b Fix 256 bit \c{VMOVNTPS} instruction.
\b Fix \c{-MD} option handling, which was rather broken in previous
release changing command line api.
\b Fix access to unitialized space when handling strings with
a single grave.
\b Fix nil dereference in handling memory reference parsing.
\S{cl-2.11.06} Version 2.11.06
\b Update AVX512 instructions based on the Extension Reference (319433-021 Sept
2014).
\b Fix the behavior of \c{-MF} and \c{-MD} options (Bugzilla 3392280)
\b Updated Win32 Makefile to fix issue with build
\S{cl-2.11.05} Version 2.11.05
\b Add \c{--v} as an alias for \c{-v} (see \k{opt-v}), for
command-line compatibility with Yasm.
\b Fix a bug introduced in 2.11.03 whereby certain instructions would
contain multiple REX prefixes, and thus be corrupt.
\S{cl-2.11.04} Version 2.11.04
\b Removed an invalid error checking code. Sometimes a memref only with
a displacement can also set an evex flag. For example:
\c vmovdqu32 [0xabcd]{k1}, zmm0
\b Fixed a bug in disassembler that EVEX.L'L vector length was not matched
when EVEX.b was set because it was simply considered as EVEC.RC.
Separated EVEX.L'L case from EVEX.RC which is ignored in matching.
\S{cl-2.11.03} Version 2.11.03
\b Fix a bug there REX prefixes were missing on instructions inside a
\c{TIMES} statement.
\S{cl-2.11.02} Version 2.11.02
\b Add the \c{XSAVEC}, \c{XSAVES} and \c{XRSTORS} family instructions.
\b Add the \c{CLFLUSHOPT} instruction.
\S{cl-2.11.01} Version 2.11.01
\b Allow instructions which implicitly uses \c{XMM0} (\c{VBLENDVPD},
\c{VBLENDVPS}, \c{PBLENDVB} and \c{SHA256RNDS2}) to be specified
without an explicit \c{xmm0} on the assembly line. In other words,
the following two lines produce the same output:
\c vblendvpd xmm2,xmm1,xmm0 ; Last operand is fixed xmm0
\c vblendvpd xmm2,xmm1 ; Implicit xmm0 omitted
\b In the ELF backends, don't crash the assembler if \c{section align}
is specified without a value.
\S{cl-2.11} Version 2.11
\b Add support for the Intel AVX-512 instruction set:
\b 16 new, 512-bit SIMD registers. Total 32 \c{(ZMM0 ~ ZMM31)}
\b 8 new opmask registers \c{(K0 ~ K7)}. One of 7 registers \c{(K1 ~ K7)} can
be used as an opmask for conditional execution.
\b A new EVEX encoding prefix. EVEX is based on VEX and provides more
capabilities: opmasks, broadcasting, embedded rounding and compressed
displacements.
\c - opmask
\c VDIVPD zmm0{k1}{z}, zmm1, zmm3 ; conditional vector operation
\c ; using opmask k1.
\c ; {z} is for zero-masking
\c - broadcasting
\c VDIVPS zmm4, zmm5, [rbx]{1to16} ; load single-precision float and
\c ; replicate it 16 times. 32 * 16 = 512
\c - embedded rounding
\c VCVTSI2SD xmm6, xmm7, {rz-sae}, rax ; round toward zero. note that it
\c ; is used as if a separate operand.
\c ; it comes after the last SIMD operand
\b Add support for \c{ZWORD} (512 bits), \c{DZ} and \c{RESZ}.
\b Add support for the MPX and SHA instruction sets.
\b Better handling of section redefinition.
\b Generate manpages when running \c{'make dist'}.
\b Handle all token chains in mmacro params range.
\b Support split [base,index] effective address:
\c mov eax,[eax+8,ecx*4] ; eax=base, ecx=index, 4=scale, 8=disp
This is expected to be most useful for the MPX instructions.
\b Support \c{BND} prefix for branch instructions (for MPX).
\b The \c{DEFAULT} directive can now take \c{BND} and \c{NOBND}
options to indicate whether all relevant branches should be getting
\c{BND} prefixes. This is expected to be the normal for use in MPX
code.
\b Add \c{{evex}}, \c{{vex3}} and \c{{vex2}} instruction prefixes to
have NASM encode the corresponding instruction, if possible, with an EVEX,
3-byte VEX, or 2-byte VEX prefix, respectively.
\b Support for section names longer than 8 bytes in Win32/Win64 COFF.
\b The \c{NOSPLIT} directive by itself no longer forces a single
register to become an index register, unless it has an explicit
multiplier.
\c mov eax,[nosplit eax] ; eax as base register
\c mov eax,[nosplit eax*1] ; eax as index register
\S{cl-2.10.09} Version 2.10.09
\b Pregenerate man pages.
\S{cl-2.10.08} Version 2.10.08
\b Fix \c{VMOVNTDQA}, \c{MOVNTDQA} and \c{MOVLPD} instructions.
\b Fix collision for \c{VGATHERQPS}, \c{VPGATHERQD} instructions.
\b Fix \c{VPMOVSXBQ}, \c{VGATHERQPD}, \c{VSPLLW} instructions.
\b Add a bunch of AMD TBM instructions.
\b Fix potential stack overwrite in numbers conversion.
\b Allow byte size in \c{PREFETCHTx} instructions.
\b Make manual pages up to date.
\b Make \c{F3} and \c{F2} SSE prefixes to override \c{66}.
\b Support of AMD SVM instructions in 32 bit mode.
\b Fix near offsets code generation for \c{JMP}, \c{CALL} instrictions
in long mode.
\b Fix preprocessor parse regression when id is expanding to a whitespace.
\S{cl-2.10.07} Version 2.10.07
\b Fix line continuation parsing being broken in previous version.
\S{cl-2.10.06} Version 2.10.06
\b Always quote the dependency source names when using the automatic
dependency generation options.
\b If no dependency target name is specified via the \c{-MT} or
\c{-MQ} options, quote the default output name.
\b Fix assembly of shift operations in \c{CPU 8086} mode.
\b Fix incorrect generation of explicit immediate byte for shift by 1
under certain circumstances.
\b Fix assembly of the \c{VPCMPGTQ} instruction.
\b Fix RIP-relative relocations in the \c{macho64} backend.
\S{cl-2.10.05} Version 2.10.05
\b Add the \c{CLAC} and \c{STAC} instructions.
\S{cl-2.10.04} Version 2.10.04
\b Add back the inadvertently deleted 256-bit version of the \c{VORPD}
instruction.
\b Correct disassembly of instructions starting with byte \c{82} hex.
\b Fix corner cases in token pasting, for example:
\c %define N 1e%++%+ 5
\c dd N, 1e+5
\S{cl-2.10.03} Version 2.10.03
\b Correct the assembly of the instruction:
\c XRELEASE MOV [absolute],AL
\> Previous versions would incorrectly generate \c{F3 A2} for this
instruction and issue a warning; correct behavior is to emit \c{F3 88
05}.
\S{cl-2.10.02} Version 2.10.02
\b Add the \c{ifunc} macro package with integer functions, currently
only integer logarithms. See \k{pkg_ifunc}.
\b Add the \c{RDSEED}, \c{ADCX} and \c{ADOX} instructions.
\S{cl-2.10.01} Version 2.10.01
\b Add missing VPMOVMSKB instruction with reg32, ymmreg operands.
\S{cl-2.10} Version 2.10
\b When optimization is enabled, \c{mov r64,imm} now optimizes to the
shortest form possible between:
\c mov r32,imm32 ; 5 bytes
\c mov r64,imm32 ; 7 bytes
\c mov r64,imm64 ; 10 bytes
\> To force a specific form, use the \c{STRICT} keyword, see \k{strict}.
\b Add support for the Intel AVX2 instruction set.
\b Add support for Bit Manipulation Instructions 1 and 2.
\b Add support for Intel Transactional Synchronization Extensions (TSX).
\b Add support for x32 ELF (32-bit ELF with the CPU in 64-bit mode.)
See \k{elffmt}.
\b Add support for bigendian UTF-16 and UTF-32. See \k{unicode}.
\S{cl-2.09.10} Version 2.09.10
\b Fix up NSIS script to protect uninstaller against registry keys
absence or corruption. It brings in a few additional questions
to a user during deinstallation procedure but still it is better
than unpredictable file removal.
\S{cl-2.09.09} Version 2.09.09
\b Fix initialization of section attributes of \c{bin} output format.
\b Fix \c{mach64} output format bug that crashes NASM due to NULL symbols.
\S{cl-2.09.08} Version 2.09.08
\b Fix \c{__OUTPUT_FORMAT__} assignment when output driver alias
is used. For example when \c{-f elf} is used \c{__OUTPUT_FORMAT__}
must be set to \c{elf}, if \c{-f elf32} is used \c{__OUTPUT_FORMAT__}
must be assigned accordingly, i.e. to \c{elf32}. The rule applies to
all output driver aliases. See \k{ofmtm}.
\S{cl-2.09.07} Version 2.09.07
\b Fix attempts to close same file several times
when \c{-a} option is used.
\b Fixes for VEXTRACTF128, VMASKMOVPS encoding.
\S{cl-2.09.06} Version 2.09.06
\b Fix missed section attribute initialization in \c{bin} output target.
\S{cl-2.09.05} Version 2.09.05
\b Fix arguments encoding for VPEXTRW instruction.
\b Remove invalid form of VPEXTRW instruction.
\b Add \c{VLDDQU} as alias for \c{VLDQQU} to
match specification.
\S{cl-2.09.04} Version 2.09.04
\b Fix incorrect labels offset for VEX intructions.
\b Eliminate bogus warning on implicit operand size override.
\b \c{%if} term could not handle 64 bit numbers.
\b The COFF backend was limiting relocations number to 16 bits even if
in real there were a way more relocations.
\S{cl-2.09.03} Version 2.09.03
\b Print \c{%macro} name inside \c{%rep} blocks on error.
\b Fix preprocessor expansion behaviour. It happened sometime
too early and sometime simply wrong. Move behaviour back to
the origins (down to NASM 2.05.01).
\b Fix unitialized data dereference on OMF output format.
\b Issue warning on unterminated \c{%{} construct.
\b Fix for documentation typo.
\S{cl-2.09.02} Version 2.09.02
\b Fix reversed tokens when \c{%deftok} produces more than one output token.
\b Fix segmentation fault on disassembling some VEX instructions.
\b Missing \c{%endif} did not always cause error.
\b Fix typo in documentation.
\b Compound context local preprocessor single line macro identifiers
were not expanded early enough and as result lead to unresolved
symbols.
\S{cl-2.09.01} Version 2.09.01
\b Fix NULL dereference on missed %deftok second parameter.
\b Fix NULL dereference on invalid %substr parameters.
\S{cl-2.09} Version 2.09
\b Fixed assignment the magnitude of \c{%rep} counter. It is limited
to 62 bits now.
\b Fixed NULL dereference if argument of \c{%strlen} resolves
to whitespace. For example if nonexistent macro parameter is used.
\b \c{%ifenv}, \c{%elifenv}, \c{%ifnenv}, and \c{%elifnenv} directives
introduced. See \k{ifenv}.
\b Fixed NULL dereference if environment variable is missed.
\b Updates of new AVX v7 Intel instructions.
\b \c{PUSH imm32} is now officially documented.
\b Fix for encoding the LFS, LGS and LSS in 64-bit mode.
\b Fixes for compatibility with OpenWatcom compiler and DOS 8.3 file
format limitation.
\b Macros parameters range expansion introduced. See \k{mlmacrange}.
\b Backward compatibility on expanging of local sigle macros restored.
\b 8 bit relocations for \c{elf} and \c{bin} output formats are introduced.
\b Short intersegment jumps are permitted now.
\b An alignment more than 64 bytes are allowed for \c{win32},
\c{win64} output formats.
\b \c{SECTALIGN} directive introduced. See \k{sectalign}.
\b \c{nojmp} option introduced in \c{smartalign} package. See
\k{pkg_smartalign}.
\b Short aliases \c{win}, \c{elf} and \c{macho} for output formats are
introduced. Each stands for \c{win32}, \c{elf32} and \c{macho32}
accordingly.
\b Faster handling of missing directives implemented.
\b Various small improvements in documentation.
\b No hang anymore if unable to open malloc.log file.
\b The environments without vsnprintf function are able to build nasm again.
\b AMD LWP instructions updated.
\b Tighten EA checks. We warn a user if there overflow in EA addressing.
\b Make \c{-Ox} the default optimization level. For the legacy
behavior, specify \c{-O0} explicitly. See \k{opt-O}.
\b Environment variables read with \c{%!} or tested with \c{%ifenv}
can now contain non-identifier characters if surrounded by quotes.
See \k{getenv}.
\b Add a new standard macro package \c{%use fp} for floating-point
convenience macros. See \k{pkg_fp}.
\S{cl-2.08.02} Version 2.08.02
\b Fix crash under certain circumstances when using the \c{%+} operator.
\S{cl-2.08.01} Version 2.08.01
\b Fix the \c{%use} statement, which was broken in 2.08.
\S{cl-2.08} Version 2.08
\b A number of enhancements/fixes in macros area.
\b Support for converting strings to tokens. See \k{deftok}.
\b Fuzzy operand size logic introduced.
\b Fix COFF stack overrun on too long export identifiers.
\b Fix Macho-O alignment bug.
\b Fix crashes with -fwin32 on file with many exports.
\b Fix stack overrun for too long [DEBUG id].
\b Fix incorrect sbyte usage in IMUL (hit only if optimization
flag passed).
\b Append ending token for \c{.stabs} records in the ELF output format.
\b New NSIS script which uses ModernUI and MultiUser approach.
\b Visual Studio 2008 NASM integration (rules file).
\b Warn a user if a constant is too long (and as result will be stripped).
\b The obsoleted pre-XOP AMD SSE5 instruction set which was never actualized
was removed.
\b Fix stack overrun on too long error file name passed from the command line.
\b Bind symbols to the .text section by default (ie in case if SECTION
directive was omitted) in the ELF output format.
\b Fix sync points array index wrapping.
\b A few fixes for FMA4 and XOP instruction templates.
\b Add AMD Lightweight Profiling (LWP) instructions.
\b Fix the offset for \c{%arg} in 64-bit mode.
\b An undefined local macro (\c{%$}) no longer matches a global macro
with the same name.
\b Fix NULL dereference on too long local labels.
\S{cl-2.07} Version 2.07
\b NASM is now under the 2-clause BSD license. See \k{legal}.
\b Fix the section type for the \c{.strtab} section in the \c{elf64}
output format.