Компиляция файлов .asm с помощью компилятора ml.exe — Архив WASM.RU
Этот материал дополняет статью MS Developer Studio - среда разработки для ASM. Здесь приведен формат командной строки компилятора MASM 6.1+, расшифровка ее опций и комментарии по их применению при работе в среде MS Developer Studio.
Командная строка MASM имеет вид:
Код (Text):
ML [/options] filename [/options] filename [/link linkoptions]Здесь:
- /options - необязательный перечень опций (см.таблицу ниже)
- filename - имена файлов исходных текстов, подлежищих компиляции, разделенные пробелами. В среде MS Developer Studio обычно указывается только одно имя в виде шаблона $(InputPath).
- /link linkoptions - командная строка компоновщика в случае, если используется опция /Bl. В среде MS Developer Studio обычно не применяется.
опция назначение применение для win32 /AT Enable tiny model (.COM file)
Создать файл в формате .com (модель tiny)Не применяется, так как формат исполняемого файла .com не используется в Win32. /Bl<linker> Use alternate linker
Использовать альтернативный компоновщикОбычно не применяется, так как возможностей link.exe вполне достаточно. Используется опция /c /c Assemble without linking
Только компиляция, без компоновкиОбязательно для применения в среде MS Developer Studio, чтобы выполнять компоновку отдельным этапом. /Cp Preserve case of user identifiers
Сохранение регистра пользовательских идентификаторовПрименение не обязательно, но возможно для дополнительного контроля синтаксиса. Вызывает ошибку "A2006: undefined symbol" при несовпадении регистра в объявлении идентификатора и обращении к нему. Позволяет избежать ошибок на этапе компоновки в случае, если идентификатор объявлен с неверным регистром. /Cu Map all identifiers to upper case
Приведение всех пользовательских идентификаторов к верхнему региструНе применяется, так как компоновка приложений Win32 чувствительна к регистру. /Cx Preserve case in publics, externs
Сохранение регистра идентификаторов, объявленных публичными и внешнимиВ применении нет необходимости. Регистр идентификаторов имеет смысл на этапе компоновки, но не на этапе компиляции. /coff Generate COFF format object file
Создать файл в формате COFFПрименение обязательно: это стандартный для windows формат объектных и исполняемых файлов. /D<name>[=text] Define text macro
Описание текстового макросаПрименяется по усмотрению программиста. Аналог директив EQU или =. Если текст содержит пробелы, его следует взять в кавычки. Обычно используется в отладочном версии приложения для объявления имени DEBUG. /EP Output preprocessed listing to stdout
Вывод листинга препроцессора в stdoutОбычно применять нет необходимости. Листинг препроцессора представляет собой исходный текст вместе с включаемыми файлами. /F<hex> Set stack size (bytes)
Определить размер стека (байт)Практически не применяется. То же, что опция /STACK компоновщика link.exe. Обычно используется значение по умолчанию - 1 Мбайт. /Fe<file> Name executable
Имя исполняемого файлаНе применяется, так как с учетом опции /c компилятор не создает исполняемого файла /Fl[file] Generate listing
Создание файла листингаОбычно не применяется, так как средства MS Developer Studio, как правило, достаточны для работы с текстом приложения. /Fm[file] Generate map
Создание map-файлаНе применяется, так как map-файл создается компоновщиком, а с учетом опции /c компилятор не вызывает компоновщик /Fo<file> Name object file
Имя объектного файлаОбычно не применяется. Позволяет задать obj-файлу имя, отличное от имени asm-файла. /FPi Generate 80x87 emulator encoding
Включение кода эмулятора сопроцессора 80x87Начиная с выхода в свет процессора 486 не применяется, так как с тех пор арифметический сопроцессор является неотъемлемой частью современных процессоров. /Fr[file] Generate limited browser info
Включить ограниченную информацию броузераПрименение менее предпочтительно, чем /FR, так как в информацию броузера не включа.тся сведения о локальных идентификаторах. /FR[file] Generate full browser info
Включить полную информацию броузераПозволяет получать быстрый доступ к любому идентификатору во всем пространстве проекта и заголовочных файлов API win32. /G<c|d|z> Use Pascal, C, or Stdcall calls
Использовать соглашения вызова Pascal, C или StdcallВ применении нет необходимости. Обычно использование соглашений вызова stdcall регламентируется директивой .model в тексте программы. /H<number> Set max external name length
Установить максимальную длину внешних именОбычно не применяется. Значение по умолчанию - 31, и его достаточно для работы в среде win32. /I<name> Add include path
Добавить путь для inc-файловНе применяется, так как собственных возможностей MS Developer Studio обычно достаточно для определения путей к inc-файлам. Допускается использовать до 10 опций /I. /link <linker options and libraries>
Опции командной строки компоновщика и подключаемые библиотекиНе применяется, так как компоновка отключена опцией /c. /nologo Suppress copyright message
Не показывать баннерный текст компилятораКак правило, следует применяеть, так как баннерный текст смысловой нагрузки при разработке проекта не несет. /Sa Maximize source listing
Листинг максимального форматаПрименяется редко, так как собственных средств MS Developer Studio обычно достаточно для работы с исходным и компилированным текстом программы, и в выдаче листинга нет необходимости. /Sc Generate timings in listing
Включить в листинг синхронизациюТо же /Sf Generate first pass listing
Листинг первого проходаТо же /Sl<width> Set line width
Длина строки листинга, символов: 60...255 или 0.То же /Sn Suppress symbol-table listing
Не включать в листинг таблицу символовТо же /Sp<length> Set page length
Высота страницы листинга, строк: 10...255 или 0.То же /Ss<string> Set subtitle
Текст подзаголовков листингаТо же /St<string> Set title
Текст заголовка листигаТо же /Sx List false conditionals
Включить в листинг все фрагменты условной компиляцииТо же /Ta<file> Assemble non-.ASM file
Компилировать не-.asm файлыОбычно не применяется. Служит для компиляции файлов, имя котрых имеет расширение, отличное от .asm. /w Same as /W0 /WX
То же, что /W0 /WXСм. далее. /WX Treat warnings as errors
Трактовать предупреждения как ошибкиОбычно в применении нет необходимости. В случае возникновения предупреждений компиляция завершается неуспешно. /W<number> Set warning level
Установить уровень предупреждеинйОбычно в применении нет необходимости. Устанавливает перечень событий компиляции, трактуемых как предупреждения. /X Ignore INCLUDE environment path
Игнорировать путь, установленный переменной окружения INCLUDEОбычно не применяется, так как при работе в среде MS Developer Studio переменная окружения INCLUDE не используется. /Zd Add line number debug info
Включить отладочную информацию в виде номеров строкОбычно не применяется, так как на этапе отладки более целесообразно использовать опцию /Zi. /Zf Make all symbols public
Объявить все имена публичнымиОбычно не применяется. /Zi Add symbolic debug info
Включить полную отладочную информациюОбязательно применяется на этапе отладки. Формат отладочной информации MASM полностью совместим с используемым встроенным отладчиком MS Developer Studio. /Zm Enable MASM 5.10 compatibility
Включить совместимость с MASM 5.10Обычно не применяется. Отключает полезные для прикладного программирования свойства MASM, введенные в версиях 6.1+. /Zp[n] Set structure alignment
Установить выравнивание структурМожет быть использован для установки принятого в win32 выравнивания по умолчанию - на 8 байт. Однако обычно в применении нет необходимости, так как в win32 используется два варианта выравнивания структур - на 4 и на 8 байт, и определять их выравнивание целесообразно непосредственно в описании структуры директивой STRUCT. Возможные значения для этой опции - 1, 2, 4 и 8 (последнее - в версиях MASM 6.13 и выше). /Zs Perform syntax check only
Выполнять только проверку синтаксисаОбычно не применяется. Подавляет формирование объектного модуля. Типовая командная строка для этапа отладки (активен проект Win32 Debug) имеет вид:
Код (Text):
ml.exe /c /coff /FR"..\browseinfo\$(InputName).sbr" /nologo /Zi /DDEBUG $(InputPath) Отключена компоновка, формируется объектный модуль в формате COFF, формируется sbr-файл, содержищий информацию для Browse Info, подавлена выдача баннерной информации, в объектный модуль включена полная отладочная информация, определена константа DEBUG.Типовая командная строка для чистового этапа (активен проект Win32 Release) имеет вид:
Код (Text):
ml.exe /c /coff /nologo $(InputPath) Отключена компоновка, формируется объектный модуль в формате COFF, подавлена выдача баннерной информации.© Svet(R)off
Компиляция файлов .asm с помощью компилятора ml.exe
Дата публикации 14 июн 2002