Assembly is een van de oudste programmeertalen, die tegenwoordig vaak wordt gebruikt voor het optimaliseren van toepassingen. Nasm kan assemblycode omzetten naar verschillende binaire objectformaten zoals elf, coff, Mach-O, win32 en win64. De programmeurs hebben enige tijd geleden de ontwikkeling van Nasm weer opgepakt waardoor er inmiddels ondersteuning voor x86-64 en sse3, 4.1, 4.2 en 5 is toegevoegd. Enkele dagen geleden is versie 2.04 van Nasm uitgebracht en voorzien van de volgende lijst met aanpassingen:
Version 2.04:
- Sanitize macro handing in the `%error' directive.
- New `%warning' directive to issue user-controlled warnings
- `%error' directives are now deferred to the final assembly phase.
- New `%fatal' directive to immediately terminate assembly.
- New `%strcat' directive to join quoted strings together.
- New `%use' macro directive to support standard macro directives.
- Excess default parameters to `%macro' now issues a warning by default.
- Fix `%ifn' and `%elifn'.
- Fix nested `%else' clauses.
- Correct the handling of nested `%rep's.
- New `%unmacro' directive to undeclare a multi-line macro.
- Builtin macro `__PASS__' which expands to the current assembly pass.
- `__utf16__' and `__utf32__' operators to generate UTF-16 and UTF-32 strings.
- Fix bug in case-insensitive matching when compiled on platforms that don't use the `configure' script. Of the official release binaries, that only affected the OS/2 binary.
- Support for x87 packed BCD constants.
- Correct the `LTR' and `SLDT' instructions in 64-bit mode.
- Fix unnecessary REX.W prefix on indirect jumps in 64-bit mode.
- Add AVX versions of the AES instructions (`VAES'...).
- Fix the 256-bit FMA instructions.
- Add 256-bit AVX stores per the latest AVX spec.
- VIA XCRYPT instructions can now be written either with or without `REP', apparently different versions of the VIA spec wrote them differently.
- Add missing 64-bit `MOVNTI' instruction.
- Fix the operand size of `VMREAD' and `VMWRITE'.
- Numerous bug fixes, especially to the AES, AVX and VTX instructions.
- The optimizer now always runs until it converges. It also runs even when disabled, but doesn't optimize. This allows most forward references to be resolved properly.