Ассемблер под Windows №2

Компиляция программы в среде Windows


Доброго время суток, уважаемые подписчики. В связи с тем, что я получил достаточно много писем с вопросами о компиляции программы под Windows, я решил подробно описать этот процесс.


Итак, компиляция приложения Windows производится в досе, причём темже ассемблером, просто потом подругому соединяются отдельные её части. Именно в связи с этим нам и понадобится link32.exe, тоесть файлы с машинным ком будут объеденены при помощи этой программы. В связи с тем, что машинный код неизменяем в зависимости от окружения (ОС, менеджер), так как процессор всегда говорит на одном и том же языке, то ассемблер ml.exe, который Вы использовали под дос, вполне подойдёт нам и сейчас! Также нам нужны ссылки на процедуры Windows, то есть файлы .lib!
Вот, ещё раз, список всех компонентов, которые нам понадобятся:
- Mspdb50.dll = нужно чтоб работал ассемблер ml.exe
- Ml.exe = сам ассемблер
- link32.exe
- kernel32.lib
- User32.lib
Чтобы было легче понять зачем нам нужно столько файлов, кратко объясню как происходит компиляция! В начале у нас есть файл с кодом языка ассемблер, в котором есть некие процедуры. Файлы добавления, расширения .inc, ассемблируются как кусок кода, они нужны только нам, чтоб легче находить нужную часть кода. Ассемблер (от англ. Assembly - собирать) преобразавывает код ассемблера в язык, понятный процессору, машинный код! Машинный код для всех операционных систем одинаков. А потом программа соединитель, в случае доса link16.exe, в Windows link32.exe, создаёт файл опредилённого расширения и дополнительных данных для ОС. А в конце мы получаем файл, который, на основе дополнительной информации, будет запускаться только в определённой ОС. Сам процесс! Итак, чтобы прокомпилировать программу, нам понадобятся все файлы, которые надо было создать в первом уроке, тоесть window.asm, kernel32.inc, user32.inc, def32.inc. Все эти файлы доступны для скачки:

0002asm - код программы
0002exe - компиляторы и сама программа
0002inc - файлы дополнения
0002lib - библиотеки импорта
Также понадобиться создать файл doit.bat, следующего содержания:

ml /c /coff window.asm
link window.obj /subsystem:windows

где window имя файла с кодом!

Ещё я прошу прощения, но я не дописал в рассылке файлы дополнения, вот что надо в них дописать:
в файл kernel32.inc:
includelib kernel32.lib
и в user32.inc:
includelib user32.lib

После этого нужно зайти в оболочку дос, такую как нортон командер, и запустить файл doit.bat, предварительно поместив все файлы в эту директорию! После окончания программы, можно нажав Ctrl-O, посмотреть, что он выдал! Если написанно error(ошибка), ряд и в чём ошибка, то стоит поискать там ошибку! Если ошибки не возникло, то должен появиться файл window.exe, который можно запустить из Windows! Это и есть наша программа. Удачи!

Я постараюсь отвечать на все письма, однако не могу обещать срочного ответа! Если я не отвечаю в течении недели, пошлите мне письмо ещё раз, скорее всего первое затерялось!


Опять таки к сожалению, не знаю когда выдет наконец подробное описание кода программы, но обещаю сделать его в течении недели. Если что пишите, Dark_Lord@land.ru, Dark_Lord@RusFAQ.ru.

Сайт управляется системой uCoz