This manual documents NASM, the Netwide Assembler: an assembler
targeting the Intel x86 series of processors, with portable source.
- 
Chapter 1: Introduction
- 
Section 1.1: What Is NASM?
- 
Section 1.1.1: License
 
 
- 
Chapter 2: Running NASM
- 
Section 2.1: NASM Command-Line Syntax
- 
Section 2.1.1: The -oOption: Specifying the Output File Name
- 
Section 2.1.2: The -fOption: Specifying the Output File Format
- 
Section 2.1.3: The -lOption: Generating a Listing File
- 
Section 2.1.4: The -LOption: Additional or Modified Listing Info
- 
Section 2.1.5: The -MOption: Generate Makefile Dependencies
- 
Section 2.1.6: The -MGOption: Generate Makefile Dependencies
- 
Section 2.1.7: The -MFOption: Set Makefile Dependency File
- 
Section 2.1.8: The -MDOption: Assemble and Generate Dependencies
- 
Section 2.1.9: The -MTOption: Dependency Target Name
- 
Section 2.1.10: The -MQOption: Dependency Target Name (Quoted)
- 
Section 2.1.11: The -MPOption: Emit phony targets
- 
Section 2.1.12: The -MWOption: Watcom Make quoting style
- 
Section 2.1.13: The -FOption: Selecting a Debug Information Format
- 
Section 2.1.14: The -gOption: Enabling Debug Information.
- 
Section 2.1.15: The -XOption: Selecting an Error Reporting Format
- 
Section 2.1.16: The -ZOption: Send Errors to a File
- 
Section 2.1.17: The -sOption: Send Errors tostdout
- 
Section 2.1.18: The -iOption: Include File Search Directories
- 
Section 2.1.19: The -pOption: Pre-Include a File
- 
Section 2.1.20: The -dOption: Pre-Define a Macro
- 
Section 2.1.21: The -uOption: Undefine a Macro
- 
Section 2.1.22: The -EOption: Preprocess Only
- 
Section 2.1.23: The -aOption: Don't Preprocess At All
- 
Section 2.1.24: The -OOption: Specifying Multipass Optimization
- 
Section 2.1.25: The -tOption: Enable TASM Compatibility Mode
- 
Section 2.1.26: The -wand-WOptions: Enable or Disable Assembly Warnings
- 
Section 2.1.27: The -vOption: Display Version Info
- 
Section 2.1.28: The --(g|l)prefix,--(g|l)postfixOptions.
- 
Section 2.1.29: The --pragmaOption
- 
Section 2.1.30: The --beforeOption
- 
Section 2.1.31: The --limit-XOption
- 
Section 2.1.32: The --keep-allOption
- 
Section 2.1.33: The --no-lineOption
- 
Section 2.1.34: The --reproducibleOption
- 
Section 2.1.35: The NASMENVEnvironment Variable
 
- 
Section 2.2: Quick Start for MASM Users
- 
Section 2.2.1: NASM Is Case-Sensitive
- 
Section 2.2.2: NASM Requires Square Brackets For Memory References
- 
Section 2.2.3: NASM Doesn't Store Variable Types
- 
Section 2.2.4: NASM Doesn't ASSUME
- 
Section 2.2.5: NASM Doesn't Support Memory Models
- 
Section 2.2.6: Floating-Point Differences
- 
Section 2.2.7: Other Differences
- 
Section 2.2.8: MASM compatibility package
 
 
- 
Chapter 3: The NASM Language
- 
Section 3.1: Layout of a NASM Source Line
- 
Section 3.2: Pseudo-Instructions
- 
Section 3.2.1: Dx: Declaring Initialized Data
- 
Section 3.2.2: RESBand Friends: Declaring Uninitialized Data
- 
Section 3.2.3: INCBIN: Including External Binary Files
- 
Section 3.2.4: EQU: Defining Constants
- 
Section 3.2.5: TIMES: Repeating Instructions or Data
 
- 
Section 3.3: Effective Addresses
- 
Section 3.4: Constants
- 
Section 3.4.1: Numeric Constants
- 
Section 3.4.2: Character Strings
- 
Section 3.4.3: Character Constants
- 
Section 3.4.4: String Constants
- 
Section 3.4.5: Unicode Strings
- 
Section 3.4.6: Floating-Point Constants
- 
Section 3.4.7: Packed BCD Constants
 
- 
Section 3.5: Expressions
- 
Section 3.5.1: ?...:: Conditional Operator
- 
Section 3.5.2: : ||: Boolean OR Operator
- 
Section 3.5.3: : ^^: Boolean XOR Operator
- 
Section 3.5.4: : &&: Boolean AND Operator
- 
Section 3.5.5: : Comparison Operators
- 
Section 3.5.6: |: Bitwise OR Operator
- 
Section 3.5.7: ^: Bitwise XOR Operator
- 
Section 3.5.8: &: Bitwise AND Operator
- 
Section 3.5.9: Bit Shift Operators
- 
Section 3.5.10: +and-: Addition and Subtraction Operators
- 
Section 3.5.11: Multiplication, Division and Modulo
- 
Section 3.5.12: Unary Operators
 
- 
Section 3.6: SEGandWRT
- 
Section 3.7: STRICT: Inhibiting Optimization
- 
Section 3.8: Critical Expressions
- 
Section 3.9: Local Labels
 
- 
Chapter 4: The NASM Preprocessor
- 
Section 4.1: Preprocessor Expansions
- 
Section 4.1.1: Continuation Line Collapsing
- 
Section 4.1.2: Comment Removal
- 
Section 4.1.3: %linedirectives
- 
Section 4.1.4:  Conditionals, Loops and Multi-Line Macro Definitions
- 
Section 4.1.5: Directives processing
- 
Section 4.1.6: Inline expansions and other directives
- 
Section 4.1.7: Multi-Line Macro Expansion
- 
Section 4.1.8: Detokenization
 
- 
Section 4.2: Single-Line Macros
- 
Section 4.2.1: The Normal Way: %define
- 
Section 4.2.2: Resolving %define:%xdefine
- 
Section 4.2.3: Macro Indirection: %[...]
- 
Section 4.2.4: Concatenating Single Line Macro Tokens: %+
- 
Section 4.2.5: The Macro Name Itself: %?and%??
- 
Section 4.2.6: The Single-Line Macro Name: %*?and%*??
- 
Section 4.2.7: Undefining Single-Line Macros: %undef
- 
Section 4.2.8: Preprocessor Variables: %assign
- 
Section 4.2.9: Defining Strings: %defstr
- 
Section 4.2.10: Defining Tokens: %deftok
- 
Section 4.2.11: Defining Aliases: %defalias
- 
Section 4.2.12: Conditional Comma Operator: %,
 
- 
Section 4.3: String Manipulation in Macros
- 
Section 4.3.1: Concatenating Strings: %strcat
- 
Section 4.3.2: String Length: %strlen
- 
Section 4.3.3: Extracting Substrings: %substr
 
- 
Section 4.4: Preprocessor Functions
- 
Section 4.4.1: %abs()Function
- 
Section 4.4.2: %cond()Function
- 
Section 4.4.3: %count()Function
- 
Section 4.4.4: %eval()Function
- 
Section 4.4.5: %is()Family Functions
- 
Section 4.4.6: %num()Function
- 
Section 4.4.7: %sel()Function
- 
Section 4.4.8: %str()Function
- 
Section 4.4.9: %strcat()Function
- 
Section 4.4.10: %strlen()Function
- 
Section 4.4.11: %substr()Function
- 
Section 4.4.12: %tok()function
 
- 
Section 4.5: Multi-Line Macros: %macro
- 
Section 4.5.1: Overloading Multi-Line Macros
- 
Section 4.5.2: Macro-Local Labels
- 
Section 4.5.3: Greedy Macro Parameters
- 
Section 4.5.4: Macro Parameters Range
- 
Section 4.5.5: Default Macro Parameters
- 
Section 4.5.6: %0: Macro Parameter Counter
- 
Section 4.5.7: %00: Label Preceding Macro
- 
Section 4.5.8: %rotate: Rotating Macro Parameters
- 
Section 4.5.9: Concatenating Macro Parameters
- 
Section 4.5.10: Condition Codes as Macro Parameters
- 
Section 4.5.11: Disabling Listing Expansion
- 
Section 4.5.12: Undefining Multi-Line Macros: %unmacro
 
- 
Section 4.6: Conditional Assembly
- 
Section 4.6.1: %ifdef: Testing Single-Line Macro Existence
- 
Section 4.6.2: %ifmacro: Testing Multi-Line Macro Existence
- 
Section 4.6.3: %ifctx: Testing the Context Stack
- 
Section 4.6.4: %if: Testing Arbitrary Numeric Expressions
- 
Section 4.6.5: %ifidnand%ifidni: Testing Exact Text Identity
- 
Section 4.6.6: %ifid,%ifnum,%ifstr: Testing Token Types
- 
Section 4.6.7: %iftoken: Test for a Single Token
- 
Section 4.6.8: %ifempty: Test for Empty Expansion
- 
Section 4.6.9: %ifenv: Test If Environment Variable Exists
 
- 
Section 4.7: Preprocessor Loops: %rep
- 
Section 4.8: Source Files and Dependencies
- 
Section 4.8.1: %include: Including Other Files
- 
Section 4.8.2: %pathsearch: Search the Include Path
- 
Section 4.8.3: %depend: Add Dependent Files
- 
Section 4.8.4: %use: Include Standard Macro Package
 
- 
Section 4.9: The Context Stack
- 
Section 4.9.1: %pushand%pop: Creating and Removing Contexts
- 
Section 4.9.2: Context-Local Labels
- 
Section 4.9.3: Context-Local Single-Line Macros
- 
Section 4.9.4: Context Fall-Through Lookup (deprecated)
- 
Section 4.9.5: %repl: Renaming a Context
- 
Section 4.9.6: Example Use of the Context Stack: Block IFs
 
- 
Section 4.10: Stack Relative Preprocessor Directives
- 
Section 4.10.1: %argDirective
- 
Section 4.10.2: %stacksizeDirective
- 
Section 4.10.3: %localDirective
 
- 
Section 4.11: Reporting User-Defined Errors: %error,%warning,%fatal
- 
Section 4.12: %pragma: Setting Options
- 
Section 4.12.1: Preprocessor Pragmas
 
- 
Section 4.13: Other Preprocessor Directives
- 
Section 4.13.1: %lineDirective
- 
Section 4.13.2: %!variable: Read an Environment Variable.
- 
Section 4.13.3: %clear: Clear All Macro Definitions
 
 
- 
Chapter 5: Standard Macros
- 
Section 5.1: NASM Version Macros
- 
Section 5.1.1: __?NASM_VERSION_ID?__: NASM Version ID
- 
Section 5.1.2: __?NASM_VER?__: NASM Version String
 
- 
Section 5.2: __?FILE?__and__?LINE?__: File Name and Line Number
- 
Section 5.3: __?BITS?__: Current Code Generation Mode
- 
Section 5.4: __?OUTPUT_FORMAT?__: Current Output Format
- 
Section 5.5: __?DEBUG_FORMAT?__: Current Debug Format
- 
Section 5.6: Assembly Date and Time Macros
- 
Section 5.7: __?USE_package?__: Package Include Test
- 
Section 5.8: __?PASS?__: Assembly Pass
- 
Section 5.9: Structure Data Types
- 
Section 5.9.1: STRUCandENDSTRUC: Declaring Structure Data Types
- 
Section 5.9.2: ISTRUC,ATandIEND: Declaring Instances of Structures
 
- 
Section 5.10: Alignment Control
- 
Section 5.10.1: ALIGNandALIGNB: Code and Data Alignment
- 
Section 5.10.2: SECTALIGN: Section Alignment
 
 
- 
Chapter 6: Standard Macro Packages
- 
Section 6.1: altreg: Alternate Register Names
- 
Section 6.2: smartalign: SmartALIGNMacro
- 
Section 6.3: fp: Floating-point macros
- 
Section 6.4: ifunc: Integer functions
- 
Section 6.4.1: Integer logarithms
 
- 
Section 6.5: masm: MASM compatibility
 
- 
Chapter 7: Assembler Directives
- 
Section 7.1: BITS: Specifying Target Processor Mode
- 
Section 7.1.1: USE16&USE32: Aliases for BITS
 
- 
Section 7.2: DEFAULT: Change the assembler defaults
- 
Section 7.2.1: REL&ABS: RIP-relative addressing
- 
Section 7.2.2: BND&NOBND:BNDprefix
 
- 
Section 7.3: SECTIONorSEGMENT: Changing and Defining Sections
- 
Section 7.3.1: The __?SECT?__Macro
 
- 
Section 7.4: ABSOLUTE: Defining Absolute Labels
- 
Section 7.5: EXTERN: Importing Symbols from Other Modules
- 
Section 7.6: REQUIRED: Unconditionally Importing Symbols from Other Modules
- 
Section 7.7: GLOBAL: Exporting Symbols to Other Modules
- 
Section 7.8: COMMON: Defining Common Data Areas
- 
Section 7.9: STATIC: Local Symbols within Modules
- 
Section 7.10: (G|L)PREFIX,(G|L)POSTFIX: Mangling Symbols
- 
Section 7.11: CPU: Defining CPU Dependencies
- 
Section 7.12: FLOAT: Handling of floating-point constants
- 
Section 7.13: [WARNING]: Enable or disable warnings
 
- 
Chapter 8: Output Formats
- 
Section 8.1: bin: Flat-Form Binary Output
- 
Section 8.1.1: ORG: Binary File Program Origin
- 
Section 8.1.2: binExtensions to theSECTIONDirective,binextensions to}
- 
Section 8.1.3: Multisection Support for the binFormat
- 
Section 8.1.4: Map Files
 
- 
Section 8.2: ith: Intel Hex Output
- 
Section 8.3: srec: Motorola S-Records Output
- 
Section 8.4: obj: Microsoft OMF Object Files
- 
Section 8.4.1: objExtensions to theSEGMENTDirective
- 
Section 8.4.2: GROUP: Defining Groups of Segments
- 
Section 8.4.3: UPPERCASE: Disabling Case Sensitivity in Output
- 
Section 8.4.4: IMPORT: Importing DLL Symbols
- 
Section 8.4.5: EXPORT: Exporting DLL Symbols
- 
Section 8.4.6: ..start: Defining the Program Entry Point
- 
Section 8.4.7: objExtensions to theEXTERNDirective
- 
Section 8.4.8: objExtensions to theCOMMONDirective
- 
Section 8.4.9: Embedded File Dependency Information
 
- 
Section 8.5: win32: Microsoft Win32 Object Files
- 
Section 8.5.1: win32Extensions to theSECTIONDirective
- 
Section 8.5.2: win32: Safe Structured Exception Handling
- 
Section 8.5.3: Debugging formats for Windows 
 
- 
Section 8.6: win64: Microsoft Win64 Object Files
- 
Section 8.6.1: win64: Writing Position-Independent Code
- 
Section 8.6.2: win64: Structured Exception Handling
 
- 
Section 8.7: coff: Common Object File Format
- 
Section 8.8: macho32andmacho64: Mach Object File Format
- 
Section 8.8.1: machoextensions to theSECTIONDirective
- 
Section 8.8.2: Thread Local Storage in Mach-O: machospecial symbols andWRT
- 
Section 8.8.3: machospecific directivesubsections_via_symbols
- 
Section 8.8.4: machospecific directiveno_dead_strip
- 
Section 8.8.5: machospecific extensions to theGLOBALDirective:private_extern
 
- 
Section 8.9: elf32,elf64,elfx32: Executable and Linkable Format Object Files
- 
Section 8.9.1: ELF specific directive osabi
- 
Section 8.9.2: ELF extensions to the SECTIONDirective
- 
Section 8.9.3: Position-Independent Code: ELF Special Symbols and WRT
- 
Section 8.9.4: Thread Local Storage in ELF: elfSpecial Symbols andWRT
- 
Section 8.9.5: elfExtensions to theGLOBALDirective
- 
Section 8.9.6: elfExtensions to theEXTERNDirective
- 
Section 8.9.7: elfExtensions to theCOMMONDirective
- 
Section 8.9.8: 16-bit code and ELF 
- 
Section 8.9.9: Debug formats and ELF 
 
- 
Section 8.10: aout: Linuxa.outObject Files
- 
Section 8.11: aoutb: NetBSD/FreeBSD/OpenBSDa.outObject Files
- 
Section 8.12: as86: Minix/Linuxas86Object Files
- 
Section 8.13: dbg: Debugging Format
 
- 
Chapter 9: Writing 16-bit Code (DOS, Windows 3/3.1)
- 
Section 9.1: Producing .EXEFiles
- 
Section 9.1.1: Using the objFormat To Generate.EXEFiles
- 
Section 9.1.2: Using the binFormat To Generate.EXEFiles
 
- 
Section 9.2: Producing .COMFiles
- 
Section 9.2.1: Using the binFormat To Generate.COMFiles
- 
Section 9.2.2: Using the objFormat To Generate.COMFiles
 
- 
Section 9.3: Producing .SYSFiles
- 
Section 9.4: Interfacing to 16-bit C Programs
- 
Section 9.4.1: External Symbol Names
- 
Section 9.4.2: Memory Models
- 
Section 9.4.3: Function Definitions and Function Calls
- 
Section 9.4.4: Accessing Data Items
- 
Section 9.4.5: c16.mac: Helper Macros for the 16-bit C Interface
 
- 
Section 9.5: Interfacing to Borland Pascal Programs
- 
Section 9.5.1: The Pascal Calling Convention
- 
Section 9.5.2: Borland Pascal Segment Name Restrictions
- 
Section 9.5.3: Using c16.macWith Pascal Programs
 
 
- 
Chapter 10: Writing 32-bit Code (Unix, Win32, DJGPP)
- 
Section 10.1: Interfacing to 32-bit C Programs
- 
Section 10.1.1: External Symbol Names
- 
Section 10.1.2: Function Definitions and Function Calls
- 
Section 10.1.3: Accessing Data Items
- 
Section 10.1.4: c32.mac: Helper Macros for the 32-bit C Interface
 
- 
Section 10.2: Writing NetBSD/FreeBSD/OpenBSD and Linux/ELF Shared Libraries
- 
Section 10.2.1: Obtaining the Address of the GOT
- 
Section 10.2.2: Finding Your Local Data Items
- 
Section 10.2.3: Finding External and Common Data Items
- 
Section 10.2.4: Exporting Symbols to the Library User
- 
Section 10.2.5: Calling Procedures Outside the Library
- 
Section 10.2.6: Generating the Library File
 
 
- 
Chapter 11: Mixing 16- and 32-bit Code
- 
Section 11.1: Mixed-Size Jumps
- 
Section 11.2: Addressing Between Different-Size Segments
- 
Section 11.3: Other Mixed-Size Instructions
 
- 
Chapter 12: Writing 64-bit Code (Unix, Win64)
- 
Section 12.1: Register Names in 64-bit Mode
- 
Section 12.2: Immediates and Displacements in 64-bit Mode
- 
Section 12.3: Interfacing to 64-bit C Programs (Unix)
- 
Section 12.4: Interfacing to 64-bit C Programs (Win64)
 
- 
Chapter 13: Troubleshooting
- 
Section 13.1: Common Problems
- 
Section 13.1.1: NASM Generates Inefficient Code
- 
Section 13.1.2: My Jumps are Out of Range
- 
Section 13.1.3: ORGDoesn't Work
- 
Section 13.1.4: TIMESDoesn't Work
 
 
- 
Appendix A: List of Warning Classes
- 
Appendix B: Ndisasm
- 
Section B.1: Introduction
- 
Section B.2: Running NDISASM
- 
Section B.2.1: COM Files: Specifying an Origin
- 
Section B.2.2: Code Following Data: Synchronization
- 
Section B.2.3: Mixed Code and Data: Automatic (Intelligent) Synchronization 
- 
Section B.2.4: Other Options
 
 
- 
Appendix C: NASM Version History
- 
Section C.1: NASM 2 Series
- 
Section C.1.1: Version 2.16.01
- 
Section C.1.2: Version 2.16
- 
Section C.1.3: Version 2.15.05
- 
Section C.1.4: Version 2.15.04
- 
Section C.1.5: Version 2.15.03
- 
Section C.1.6: Version 2.15.02
- 
Section C.1.7: Version 2.15.01
- 
Section C.1.8: Version 2.15
- 
Section C.1.9: Version 2.14.03
- 
Section C.1.10: Version 2.14.02
- 
Section C.1.11: Version 2.14.01
- 
Section C.1.12: Version 2.14
- 
Section C.1.13: Version 2.13.03
- 
Section C.1.14: Version 2.13.02
- 
Section C.1.15: Version 2.13.01
- 
Section C.1.16: Version 2.13
- 
Section C.1.17: Version 2.12.02
- 
Section C.1.18: Version 2.12.01
- 
Section C.1.19: Version 2.12
- 
Section C.1.20: Version 2.11.09
- 
Section C.1.21: Version 2.11.08
- 
Section C.1.22: Version 2.11.07
- 
Section C.1.23: Version 2.11.06
- 
Section C.1.24: Version 2.11.05
- 
Section C.1.25: Version 2.11.04
- 
Section C.1.26: Version 2.11.03
- 
Section C.1.27: Version 2.11.02
- 
Section C.1.28: Version 2.11.01
- 
Section C.1.29: Version 2.11
- 
Section C.1.30: Version 2.10.09
- 
Section C.1.31: Version 2.10.08
- 
Section C.1.32: Version 2.10.07
- 
Section C.1.33: Version 2.10.06
- 
Section C.1.34: Version 2.10.05
- 
Section C.1.35: Version 2.10.04
- 
Section C.1.36: Version 2.10.03
- 
Section C.1.37: Version 2.10.02
- 
Section C.1.38: Version 2.10.01
- 
Section C.1.39: Version 2.10
- 
Section C.1.40: Version 2.09.10
- 
Section C.1.41: Version 2.09.09
- 
Section C.1.42: Version 2.09.08
- 
Section C.1.43: Version 2.09.07
- 
Section C.1.44: Version 2.09.06
- 
Section C.1.45: Version 2.09.05
- 
Section C.1.46: Version 2.09.04
- 
Section C.1.47: Version 2.09.03
- 
Section C.1.48: Version 2.09.02
- 
Section C.1.49: Version 2.09.01
- 
Section C.1.50: Version 2.09
- 
Section C.1.51: Version 2.08.02
- 
Section C.1.52: Version 2.08.01
- 
Section C.1.53: Version 2.08
- 
Section C.1.54: Version 2.07
- 
Section C.1.55: Version 2.06
- 
Section C.1.56: Version 2.05.01
- 
Section C.1.57: Version 2.05
- 
Section C.1.58: Version 2.04
- 
Section C.1.59: Version 2.03.01
- 
Section C.1.60: Version 2.03
- 
Section C.1.61: Version 2.02
- 
Section C.1.62: Version 2.01
- 
Section C.1.63: Version 2.00
 
- 
Section C.2: NASM 0.98 Series
- 
Section C.2.1: Version 0.98.39
- 
Section C.2.2: Version 0.98.38
- 
Section C.2.3: Version 0.98.37
- 
Section C.2.4: Version 0.98.36
- 
Section C.2.5: Version 0.98.35
- 
Section C.2.6: Version 0.98.34
- 
Section C.2.7: Version 0.98.33
- 
Section C.2.8: Version 0.98.32
- 
Section C.2.9: Version 0.98.31
- 
Section C.2.10: Version 0.98.30
- 
Section C.2.11: Version 0.98.28
- 
Section C.2.12: Version 0.98.26
- 
Section C.2.13: Version 0.98.25alt
- 
Section C.2.14: Version 0.98.25
- 
Section C.2.15: Version 0.98.24p1
- 
Section C.2.16: Version 0.98.24
- 
Section C.2.17: Version 0.98.23
- 
Section C.2.18: Version 0.98.22
- 
Section C.2.19: Version 0.98.21
- 
Section C.2.20: Version 0.98.20
- 
Section C.2.21: Version 0.98.19
- 
Section C.2.22: Version 0.98.18
- 
Section C.2.23: Version 0.98.17
- 
Section C.2.24: Version 0.98.16
- 
Section C.2.25: Version 0.98.15
- 
Section C.2.26: Version 0.98.14
- 
Section C.2.27: Version 0.98.13
- 
Section C.2.28: Version 0.98.12
- 
Section C.2.29: Version 0.98.11
- 
Section C.2.30: Version 0.98.10
- 
Section C.2.31: Version 0.98.09
- 
Section C.2.32: Version 0.98.08
- 
Section C.2.33: Version 0.98.09b with John Coffman patches released 28-Oct-2001
- 
Section C.2.34: Version 0.98.07 released 01/28/01
- 
Section C.2.35: Version 0.98.06f released 01/18/01
- 
Section C.2.36: Version 0.98.06e released 01/09/01
- 
Section C.2.37: Version 0.98p1
- 
Section C.2.38: Version 0.98bf (bug-fixed)
- 
Section C.2.39: Version 0.98.03 with John Coffman's changes released 27-Jul-2000
- 
Section C.2.40: Version 0.98.03
- 
Section C.2.41: Version 0.98
- 
Section C.2.42: Version 0.98p9
- 
Section C.2.43: Version 0.98p8
- 
Section C.2.44: Version 0.98p7
- 
Section C.2.45: Version 0.98p6
- 
Section C.2.46: Version 0.98p3.7
- 
Section C.2.47: Version 0.98p3.6
- 
Section C.2.48: Version 0.98p3.5
- 
Section C.2.49: Version 0.98p3.4
- 
Section C.2.50: Version 0.98p3.3
- 
Section C.2.51: Version 0.98p3.2
- 
Section C.2.52: Version 0.98p3-hpa
- 
Section C.2.53: Version 0.98 pre-release 3
- 
Section C.2.54: Version 0.98 pre-release 2
- 
Section C.2.55: Version 0.98 pre-release 1
 
- 
Section C.3: NASM 0.9 Series
- 
Section C.3.1: Version 0.97 released December 1997
- 
Section C.3.2: Version 0.96 released November 1997
- 
Section C.3.3: Version 0.95 released July 1997
- 
Section C.3.4: Version 0.94 released April 1997
- 
Section C.3.5: Version 0.93 released January 1997
- 
Section C.3.6: Version 0.92 released January 1997
- 
Section C.3.7: Version 0.91 released November 1996
- 
Section C.3.8: Version 0.90 released October 1996
 
 
- 
Appendix D: Building NASM from Source
- 
Section D.1: Building from a Source Archive
- 
Section D.2: Building from the gitRepository
- 
Section D.3: Building the documentation
 
- 
Appendix E: Contact Information
- 
Section E.1: Website
- 
Section E.1.1: User Forums
- 
Section E.1.2: Development Community
 
- 
Section E.2: Reporting Bugs
 
- 
Appendix F: Instruction List
- 
Section F.1: Introduction
- 
Section F.1.1: Special instructions (pseudo-ops)
- 
Section F.1.2: Conventional instructions
- 
Section F.1.3: Katmai Streaming SIMD instructions (SSE –– a.k.a. KNI, XMM, MMX2)
- 
Section F.1.4: Introduced in Deschutes but necessary for SSE support
- 
Section F.1.5: XSAVE group (AVX and extended state)
- 
Section F.1.6: Generic memory operations
- 
Section F.1.7: New MMX instructions introduced in Katmai
- 
Section F.1.8: AMD Enhanced 3DNow! (Athlon) instructions
- 
Section F.1.9: Willamette SSE2 Cacheability Instructions
- 
Section F.1.10: Willamette MMX instructions (SSE2 SIMD Integer Instructions)
- 
Section F.1.11: Willamette Streaming SIMD instructions (SSE2)
- 
Section F.1.12: Prescott New Instructions (SSE3)
- 
Section F.1.13: VMX/SVM Instructions
- 
Section F.1.14: Extended Page Tables VMX instructions
- 
Section F.1.15: SEV-SNP AMD instructions
- 
Section F.1.16: Tejas New Instructions (SSSE3)
- 
Section F.1.17: AMD SSE4A
- 
Section F.1.18: New instructions in Barcelona
- 
Section F.1.19: Penryn New Instructions (SSE4.1)
- 
Section F.1.20: Nehalem New Instructions (SSE4.2)
- 
Section F.1.21: Intel SMX
- 
Section F.1.22: Geode (Cyrix) 3DNow! additions
- 
Section F.1.23: Intel new instructions in ???
- 
Section F.1.24: Intel AES instructions
- 
Section F.1.25: Intel AVX AES instructions
- 
Section F.1.26: Intel instruction extension based on pub number 319433-030 dated October 2017
- 
Section F.1.27: Intel AVX instructions
- 
Section F.1.28: Intel Carry-Less Multiplication instructions (CLMUL)
- 
Section F.1.29: Intel AVX Carry-Less Multiplication instructions (CLMUL)
- 
Section F.1.30: Intel Fused Multiply-Add instructions (FMA)
- 
Section F.1.31: Intel post-32 nm processor instructions
- 
Section F.1.32: VIA (Centaur) security instructions
- 
Section F.1.33: AMD Lightweight Profiling (LWP) instructions
- 
Section F.1.34: AMD XOP and FMA4 instructions (SSE5)
- 
Section F.1.35: Intel AVX2 instructions
- 
Section F.1.36: Intel Transactional Synchronization Extensions (TSX)
- 
Section F.1.37: Intel BMI1 and BMI2 instructions, AMD TBM instructions
- 
Section F.1.38: Intel Memory Protection Extensions (MPX)
- 
Section F.1.39: Intel SHA acceleration instructions
- 
Section F.1.40: AVX no exception conversions
- 
Section F.1.41: AVX Vector Neural Network Instructions
- 
Section F.1.42: AVX Integer Fused Multiply-Add
- 
Section F.1.43: AVX-512 mask register instructions
- 
Section F.1.44: AVX-512 mask register instructions (aliases requiring explicit size support)
- 
Section F.1.45: AVX-512 instructions
- 
Section F.1.46: Intel memory protection keys for userspace (PKU aka PKEYs)
- 
Section F.1.47: Read Processor ID
- 
Section F.1.48: New memory instructions
- 
Section F.1.49: Processor trace write
- 
Section F.1.50: Instructions from the Intel Instruction Set Extensions,
- 
Section F.1.51: doc 319433-034 May 2018
- 
Section F.1.52: Galois field operations (GFNI)
- 
Section F.1.53: AVX512 Vector Bit Manipulation Instructions 2
- 
Section F.1.54: AVX512 VNNI
- 
Section F.1.55: AVX512 Bit Algorithms
- 
Section F.1.56: AVX512 4-iteration Multiply-Add
- 
Section F.1.57: AVX512 4-iteration Dot Product
- 
Section F.1.58: Intel Software Guard Extensions (SGX)
- 
Section F.1.59: Intel Control-Flow Enforcement Technology (CET)
- 
Section F.1.60: Instructions from ISE doc 319433-040, June 2020
- 
Section F.1.61: AVX512 Bfloat16 instructions
- 
Section F.1.62: AVX512 mask intersect instructions
- 
Section F.1.63: Intel Advanced Matrix Extensions (AMX)
- 
Section F.1.64: Intel AVX512-FP16 instructions
- 
Section F.1.65: RAO-INT weakly ordered atomic operations
- 
Section F.1.66: User interrupts
- 
Section F.1.67: Compare, exchange and add conditional
- 
Section F.1.68: WRMSRNS and MSRLIST instructions
- 
Section F.1.69: History reset
- 
Section F.1.70: Systematic names for the hinting nop instructions