Як можна компілювати виконувані файли для Win32?
Зрозуміло, що кожен раз з командного рядка вводити імена початкових кодів, obj-файлів і ключі - не дуже зручно.
Але цей процес легко спростити.
Перший крок до спрощення - змінна оточення ML
Припустимо, ми пишемо исходник praxZ.asm.
Нам хочеться компілювати його до тих пір, поки він нарешті-таки не запрацює, а для цього може знадобитися дуже багато спроб. Можна в командному рядку FAR'a виконати наступне:
SET ML = / coff praxZ.asm / link / SUBSYSTEM: WINDOWS
Тепер кожен раз, коли ми будемо виконувати ml без ключів з папки з ісходником, буде виконуватися компіляція нашого прикладу. При цьому така дія поширюється тільки на поточну консоль. Тобто в іншому екземплярі FAR'a настройка діяти не буде.
Наступний крок назустріч користувачеві - командний bat-файл
Тепер досить його запустити в надії, що цього разу в исходнике помилок немає.
У нульовому витку я використовував BUILD.BAT з папки MASM32 \ bin.
Щодо універсальний спосіб. З його допомогою можна компілювати asm-файли з різними іменами (як з ресурсами так і без). На виході ми отримуємо готовий PE-exe.
Заглянемо в BUILD.BAT:
@echo off
if exist "% 1.obj" del "% 1.obj"
if exist "% 1.exe" del "% 1.exe"
\ Masm32 \ bin \ ml / c / coff "% 1.asm"
if errorlevel 1 goto errasm
if not exist rsrc.obj goto nores
\ Masm32 \ bin \ Link / SUBSYSTEM: WINDOWS / OPT: NOREF "% 1.obj" rsrc.obj
if errorlevel 1 goto errlink
dir "% 1. *"
goto TheEnd
nores
\ Masm32 \ bin \ Link / SUBSYSTEM: WINDOWS / OPT: NOREF "% 1.obj"
if errorlevel 1 goto errlink
dir "% 1. *"
goto TheEnd
errlink
echo _
echo Link error
goto TheEnd
errasm
echo _
echo Assembly Error
goto TheEnd
Ви не зрозуміли суть цих закорючек?
Тоді дуже уважно прочитайте ще раз Лікнеп молодого юзера.
А ті, хто зрозумів, напевно, вже помітили кілька обмежень використання цього файлу:
"MASM32" повинен бути встановлений в корінь і саме в папку MASM32.
Перед компіляцією видаляються попередні exe і obj з заданим ім'ям.
Якщо є файл ресурсів, то він вже повинен бути трансльований і обов'язково з ім'ям rsrc.obj.
Ну і як я вже писав:
Поточної папкою повинна бути папка з ісходником.
Файл в командному рядку вказується без розширення.
Розширення у исходника має бути asm.
Рекомендую вам створити хоча б ще один подібний файл для компіляції налагоджувальної версії exe.
Скопіюємо BUILD.BAT і назвемо копію, наприклад, BDBG.BAT.
Замінимо в ньому три відповідні рядки на:
.
\ Masm32 \ bin \ ml / c / coff / Zi "% 1.asm"
.
\ Masm32 \ bin \ Link / SUBSYSTEM: WINDOWS / OPT: NOREF / DEBUG "% 1.obj" rsrc.obj
.
\ Masm32 \ bin \ Link / SUBSYSTEM: WINDOWS / OPT: NOREF / DEBUG "% 1.obj"
Використовуючи наш BDBG, можна збирати PE-exe налагоджування.
Добре б зробити ще кілька файлів для компіляції dll і для повного складання з налагоджування. Але це ви вже самі.
Як компілювати виконувані com-файли для DOS?
Щоб компілювати такі вихідні, знадобляться:
Segmented Executable Linker (припустимо v5.31) і
ml.exe (обов'язково молодше 7-й версії).
Зі складу "MASM32 v9" підходить тільки ml.exe. А ось лінковщік доведеться брати додатковий.
Використовувати його можна приблизно з такою командним рядком:
LINK / TINY імя.obj, імя.com;
ключ / TINY - визначає міні-моделі, тобто звичайний формат com-файлу для DOS.
Як відомо - досконалість не має меж. Продовжимо задовольняти лінь програміста.
Навіть bat-файл не дасть такого комфорту, як.
Інтегроване середовище розробки (IDE, Integrated Development Environment)
Сьогодні найпоширеніші IDE для MASM'a - це:
MS Visual Studio,
Одного разу налаштувавши IDE, в подальшому ви будете економити купу часу і сил.
Достатньо всього декількох простих дій, і каркасний проект готовий до компіляції одним кліком мишки.
Але зізнаюся чесно, хороша настройка під себе - справа не така вже й проста. Вам як мінімум доведеться зрозуміти, для чого потрібна та чи інша опція, і підключити всі корисні додатки. Хоча тепер, коли ви так багато знаєте про компіляторі MASM'a, це буде набагато простіше.: Turned:
__________________
[B] CD і RW [/ B]