Счетчик - размещение - Большая Энциклопедия Нефти и Газа, статья, страница 4
От жизни лучше получать не "радости скупые телеграммы", а щедрости большие переводы. Законы Мерфи (еще...)

Счетчик - размещение

Cтраница 4


46 Исходная программа для трансляции ассемблером. 4. [46]

Она фактически ничего не делает, и поэтому легко проследить за ее трансляцией. Читается первый исходный оператор исследуется его поле операции. START распознается как псевдооперация, и соответствующая директива в таблице псевдоопераций указывает, что дополнительной обработки на проходе 1 не требуется. Затем исследуется поле метки, и в таблицу символов заносится метка NOTHING с текущим значением счетчика размещения, равным нулю. Эта информация записывается в таблицу символов вместе с отметкой о том, что символ является перемещаемым. Так как START - псевдооперация, не требующая памяти, счетчик размещения остается равным нулю.  [47]

Если какой-либо из операндов расположен в регистре, заданном либо прямо посредством его номера, либо косвенно посредством символического имени, номер регистра помещается в соответствующую часть машинной команды. Затем исследуется таблица доступных базовых регистров для того, чтобы найти в ней подходящий базовый регистр, такой, что, 0 DA-с ( Х) - с ( В) 4096, где с ( В) - содержимое некоторого доступного базового регистра. Если таких регистров несколько, выбирается тот из них, которому соответствует минимальное значение смещения D. Определенные таким образом номер базового. Если длина операнда может меняться, ее значение, вычисленное на проходе 1, также используется при сборке машинной команды. Затем собранная команда выдается для дальнейшей обработки редактором связей и. Обычно она записывается на диск, а в некоторых старых системах перфорируется на перфокартах. Значение счетчика размещения увеличивается, и можно начинать обработку следующего оператора. На практике несколько операторов исходного языка объединяются в одну запись на диске или на одной карте, но это не влияет на описанный здесь метод.  [48]

Так как все перемещаемые адреса отсчитываются от начала программы, в счетчик размещения ( или программный счетчик) ( LC) первоначально устанавливается нуль. Затем операторы исходного текста читаются последовательно с устройства ввода. Каждый оператор исследуется в отдельности для того, чтобы приписать некоторую ячейку каждой машинной команде или данным, определяемым псевдооперацией, и таким образом определить значения символов, появляющихся в полях меток исходной программы. Это выполняется следующим образом. Сначала поле операции текущего оператора сопоставляется с таблицей псевдоопераций. В этой таблице перечислены мнемонические коды псевдоопераций, с каждой из которых связывается указатель подпрограммы ассемблера, обрабатывающей эту операцию. Если совпадение обнаружено, выполняется вызов соответствующей подпрограммы. Так как проход 1 связан только с псевдооперациями, которые определяют символы или влияют на счетчик размещения, такие псевдооперации, как USING, DROP или START, сразу приводят к передаче управления в точку, в которой анализируются поля метки ( 1 на рис. 5.2) и обработка продолжается.  [49]



Страницы:      1    2    3    4