ML and ML64 Command-Line Reference
Visual Studio 2008
Assembles and links one or more assembly-language source files. The command-line options are case sensitive.

ML [[options]] filename [[ [[options]]  filename]]
ML64 [[options]] filename [[ [[options]]  filename]]
[[/link linkoptions]]

    The name of the file.
    The link options. See Linker Options for more information.

    /AT                 Enables tiny-memory-model support. Enables error messages for code constructs that violate the requirements for .com format files. Note that this is not equivalent to the .MODEL TINY directive. Not available in ml64.exe.
    /Bl <filename>      Selects an alternate linker.
    /c                  Assembles only. Does not link.
    /coff               Generates common object file format (COFF) type of object module. Generally required for Win32 assembly language development. Not available in ml64.exe.
    /Cp                 Preserves case of all user identifiers.
    /Cu                 Maps all identifiers to upper case (default). Not available in ml64.exe.
    /Cx                 Preserves case in public and extern symbols.
    /D<symbol[[=value]]> Defines a text macro with the given name. If value is missing, it is blank. Multiple tokens separated by spaces must be enclosed in quotation marks.
    /EP                 Generates a preprocessed source listing (sent to STDOUT). See /Sf.
    /ERRORREPORT [ NONE | PROMPT | QUEUE | SEND ] If ml.exe or ml64.exe fails at runtime, you can use /ERRORREPORT to send information to Microsoft about these internal errors. For more information about /ERRORREPORT, see /errorReport (Report Internal Compiler Errors).
    /F <hexnum>         Sets stack size to hexnum bytes (this is the same as /link /STACK:number). The value must be expressed in hexadecimal notation. There must be a space between /F and hexnum.
    /Fe <filename>      Names the executable file.
    /Fl[[filename]]     Generates an assembled code listing. See /Sf.
    /Fm[[filename]]     Creates a linker map file.
    /Fo <filename>      Names an object file. See Remarks section for more information.
    /FPi                Generates emulator fix-ups for floating-point arithmetic (mixed language only). Not available in ml64.exe.
    /Fr[[filename]]     Generates a source browser .sbr file.
    /FR[[filename]]     Generates an extended form of a source browser .sbr file.
    /Gc                 Specifies use of FORTRAN- or Pascal-style function calling and naming conventions. Same as OPTION LANGUAGE:PASCAL. Not available in ml64.exe.
    /Gd                 Specifies use of C-style function calling and naming conventions. Same as OPTION LANGUAGE:C. Not available in ml64.exe.
    /GZ                 Specifies use of __stdcall function calling and naming conventions. Same as OPTION LANGUAGE:STCALL. Not available in ml64.exe.
    /H <number>         Restricts external names to number significant characters. The default is 31 characters. Not available in ml64.exe.
    /help               Calls QuickHelp for help on ML.
    /I <pathname>       Sets path for include file. A maximum of 10 /I options is allowed.
    /nologo             Suppresses messages for successful assembly.
    /omf                Generates object module file format (OMF) type of object module. /omf implies /c; ML.exe does not support linking OMF objects. Not available in ml64.exe.
    /Sa                 Turns on listing of all available information.
    /safeseh            Marks the object as either containing no exception handlers or containing exception handlers that are all declared with .SAFESEH. Not available in ml64.exe.
    /Sf                 Adds first-pass listing to listing file.
    /Sl <width>         Sets the line width of source listing in characters per line. Range is 60 to 255 or 0. Default is 0. Same as PAGE width.
    /Sn                 Turns off symbol table when producing a listing.
    /Sp <length>        Sets the page length of source listing in lines per page. Range is 10 to 255 or 0. Default is 0. Same as PAGE length.
    /Ss <text>          Specifies text for source listing. Same as SUBTITLE text.
    /St <text>          Specifies title for source listing. Same as TITLE text.
    /Sx                 Turns on false conditionals in listing.
    /Ta <filename>      Assembles source file whose name does not end with the .asm extension.
    /w                  Same as /W0 /WX.
    /W<level>           Sets the warning level, where level = 0, 1, 2, or 3.
    /WX                 Returns an error code if warnings are generated.
    /X                  Ignore INCLUDE environment path.
    /Zd                 Generates line-number information in object file.
    /Zf                 Makes all symbols public.
    /Zi                 Generates CodeView information in object file.
    /Zm                 Enables M510 option for maximum compatibility with MASM 5.1. Not available in ml64.exe.
    /Zp[[alignment]]    Packs structures on the specified byte boundary. The alignment can be 1, 2, or 4.
    /Zs                 Performs a syntax check only.
    /?                  Displays a summary of ML command-line syntax.

    Some command-line options to ML and ML64 are placement-sensitive. For example, because ML and
    ML64 can accept several /c options, any corresponding /Fo options must be specified before
    /c. The following command-line example illustrates an object file specification for each
    assembly file specification:

        ml.exe /Fo a1.obj /c a.asm /Fo b1.obj /c b.asm

Environment Variables:
    INCLUDE     Specifies search path for include files.
    ML          Specifies default command-line options.
    TMP         Specifies path for temporary files.