Статус нашего сайта: |
ICQ Information Center |
ICQ SHOP 5-значные 6-значные 7-значные 8-значные 9-значные Rippers List ОПЛАТА СТАТЬИ СЕКРЕТЫ HELP CENTER OWNED LIST РОЗЫСК!New! ICQ РЕЛИЗЫ Протоколы ICQ LOL ;-) Настройка компьютера Аватарки Смайлики СОФТ Mail Checkers Bruteforces ICQTeam Soft 8thWonder Soft Other Progs ICQ Patches Miranda ICQ ФорумАрхив! ВАШ АККАУНТ ICQ LiveJournal
РекламаНаш канал:irc.icqinfo.ru |
Таненбаум Э.- Архитектура компьютера. стр.561Введение До настоящего момента мы обозначали команды их мнемониками — краткими и легкими для запоминания символическими именами, как то ADD или СМР. Регистры также назывались символическими именами — АХ, ВР и т. д. Программа, написанная с применением символических имен команд и регистров, называется программой на языке ассемблера, или просто ассемблерной программой. Чтобы выполнить такую программу, в первую очередь необходимо преобразовать ее в двоичные числа, с которыми работает процессор. Прикладная программа, которая осуществляет такое преобразование, называется ассемблером. То, что получается в результате работы этой программы (то есть в результате ассемблирования), называется объектным файлом. Многие программы выполняют вызовы уже ассемблированных подпрограмм, хранящихся в библиотеках. Чтобы такие программы могли выполняться, ассемблированный объектный файл и библиотечные подпрограммы, к которым он обращается (а они также существуют в виде объектных файлов), необходимо объединить в исполняемый двоичный файл. Эту операцию проводит специальная программа, называемая компоновщиком. Ассемблирование считается полностью завершенным лишь после сборки компо новщиком исполняемого двоичного файла из одного или нескольких объектных файлов. Затем операционная система помещает этот файл в память и исполняет его. В первую очередь, ассемблер должен сформировать таблицу символов; с ее помощью имена символических констант и меток отображаются на двоичные числа, которым они фактически соответствуют. Константы, явно определенные в программе, можно разместить в таблице символов без предварительной обработки. Метки же представляют адреса, значения которых не столь очевидны. Для определения этих значений ассемблер проводит построчный анализ программы, называемый первым проходом. Во время этого прохода он отслеживает показания счетчика адресов, который обычно обозначается точкой. При обнаружении на первом проходе каждой команды или операции резервирования памяти счетчик адресов увеличивается на величину, которая выражает объем памяти, необходимый для размещения данного элемента. Таким образом, если первые две команды занимают 2 и 3 байта соответственно, то метка третьей команды принимает численное значение 5. К примеру, если следующий фрагмент кода находится в начале программы, значением метки L будет 5: M0V АХ,6 MOV ВХ.500 L: В начале второго прохода численные значения всех символов уже известны. Так как численные значения мнемонических кодов команд постоянны, становится возможной генерация кода. Команды вновь считываются одна за другой, и их двоичные значения записываются в объектный файл. После ассемблирования последней команды создается объектный файл. Ассемблер as88 из набора АСК В этом подразделе мы подробно обсудим ассемблер/компоновщик as88, который вместе с трассером поставляется на сопроводительном компакт-диске и имеется также на веб-сайте, посвященном книге. Этот ассемблер, входящий в набор АСК (Amsterdam Compiler Kit), больше похож на ассемблеры UNIX, чем на аналогичные продукты для MS-DOS и Windows. Символом комментария в нем является знак восклицания (!). Все символы, следующие за знаком восклицания вплоть до конца строки, считаются комментарием и не влияют на объектный файл. Пустые строки допустимы, но при формировании объектного файла не учитываются. |