Appendix D. Differences between Masm 6 and Masm 8
This is not strictly JWasm-related, but since a lot of documentation that can be found about
Masm still refers to Masm v6 or Masm v6.1 only, it's useful to list the differences.
- default output format has been changed from OMF to COFF in Masm 8.
- expression evaluator calculations are done in 64-bit instead of 32-bit.
This is not always reflected in the listing file, where the values may be truncated to 32-bit.
- some segment attributes have been added in Masm 8 to cover the COFF section attribute bits. These are:
- INFO
- DISCARD
- NOCACHE
- NOPAGE
- SHARED
- EXECUTE
- READ
- WRITE
- ALIAS
- ALIGN
- the -safeseh commandline option and the .SAFESEH directive have been added in Masm 8.
- Masm 8 understands a few new data types:
- OWORD - 128-bit integer
- MMWORD - 64-bit data type for MMX
- XMMWORD - 128-bit data type for SSE
- several unary operators are new for Masm 8:
- LOW32 - returns the lower 32-bit of an expression
- HIGH32 - returns the upper 32-bit of an expression
- IMAGEREL - returns the image relative offset of an expression (aka RVA). COFF format only.
- SECTIONREL - returns the section relative offset of an expression. COFF format only.
Please note: LOW32 and HIGH32 operators won't accept plain numbers with values that exceed 32-bits.
- Masm 8 understands instruction sets up to SSE3. The last version of Masm 6, version 6.15, supports SSE2 only.
Masm 8 also understands Intel's VMX and AMD's SVM extensions ( x86 virtualization ).
- Masm 8 needs at least Windows 2000, it won't run on Windows 9x (without hacks).
- Masm 8 needs a MS VC runtime dll - MSVCR80.DLL - to run, while Masm 6 was a stand-alone binary.
- Finally, Masm 8 fixes some bugs and introduces a few new ones. One of the new bugs is that Masm 8
has problems with wildcards in filenames; entering
ml.exe -c *.asm
to assemble all assembly
files in a directory won't work as expected.