Как известно, каждая программа состоит
Как известно, каждая программа состоит из кода и данных. Раньше мы их называли сегментами - это было связано с тем, что из-за сегментной адресации приходилось мерить мир "спичками" по 64 Кб. Теперь же мы, слава Богу, имеем единое адресное пространство, и термин сегмент, во избежание терминологической путаницы наподобие "говорим сегмент, подразумеваем 64 Кб", заменим на термин "секция", хотя, по большому счету, это одно и то же.
Определяются эти секции, а-ля сегменты, следующими упрощенными директивами:
- .data - определяет секцию инициализированных данных;
- .data? - определяет секцию неинициализированных данных, для тех случаев, когда необходимо предварительно выделить определенное количество памяти, но инициализировать ее заранее нет необходимости. Фишка заключается вот в чем - сколько бы мы ни определяляли неинициализированных элементов данных, размер файла программы на диске остается неизменным. Мы просто таким образом ставим систему в известность: "когда программа загрузится, я хочу иметь в своем распоряжении такой-то объем памяти";
- .const - определяет секцию констант, то есть элементов данных, которые наша программа не сможет (во всяком случае, не должна) изменять ни в коем разе;
- .code - собственно код, то есть последовательность инструкций, которые должен выполнить твой компьютер.
Из всех вышеперечисленных секций в нашем исходнике есть только CODE. Это единственная секция, которая обязательно должна присутствовать в любой программе. А разве может быть иначе?
Содержание раздела