Уроки Iczelion'а



         

Урок 1. Основы - часть 3


Win16 использует этот порядок передачи данных, потому что тогда код программы становится меньше. C-порядок полезен, когда вы не знаете, как много параметров будут переданы функции, как например, в случае wsрrintf(), когда функция не может знать заранее, сколько параметров будут положены в стек, так что она не может уравнять стек. STDCALL - это гибрид C и PASCAL. Согласно ему, данные передаются справа налево, но вызываемый ответственен за уравнивание стека. Платформа Win32 использует исключительно STDCALL, хотя есть одно исключение: wsprintf(). Вы должны следовать C-порядку вызова в случае wsрrintf().

.DATA

.DATA?

.CONST

.CODE

Все четыре директивы это то, что называется секциями. Вы помните, что в Win32 нет сегментов? Hо вы можете поделить пресловутое адресное пространство на логические секции. Hачало одной секции отмечает конец предыдущей. Есть две группы секций: данных и кода.

.DATA - Эта секция содержит инициализированные данные вашей программы. .DATA? - Эта секция содержит неинициализированные данные вашей программы. Иногда вам нужно только "предварительно" выделить некоторое количество памяти, но вы не хотите инициализировать ее. Эта секция для этого и предназначается. Преимущество неинициализированных данных следующее: они не занимают места в исполняемом файле. Hапример, если вы хотите выделить 10.000 байт в вашей .DATA? секции, ваш exe-файл не увеличится на 10kb. Его размер останется таким же. Вы, всего лишь, говорите компилятору, сколько места вам нужно, когда программа загрузится в память.

.CONST - Эта секция содержит объявления констант, используемых программой. Константы не могут быть изменены ей. Это всего лишь "константы".

Вы не обязаны задействовать все три секции. Объявляйте только те, которые хотите использовать.

Есть только одна секция для кода: .CODE, там где содержится весь код.

<метка> ..... end <метка>

где <метка> - любая произвольная метка, устанавливающая границы кода. Обе метки должны быть идентичны. Весь код должен располагаться между

<метка>

и

end <метка>

[C] Iczelion, пер. Aquila.






Содержание  Назад  Вперед