Cтраница 1
Адреса меток определяются по размещению программы в действительных адресах. Начало программы назначается САП при трансляции с верхнего уровня или по входной информации при трансляции с блок-схемы программы или с автокода. [1]
В байтах 92 - 96 содержится адрес следующей метки формата 5, если она есть. [2]
Функциональная схема блока управления знаковыми сигналами. [3] |
При записи знаков на УОИ с помощью счетчика адресов меток происходит запоминание сигнала знакового кода после задания записанного адреса. [4]
Однако все имена можно выявить только после просмотра всей программы, а адреса меток можно определить лишь после генерирования машинных команд. Поэтому обычно компилятор просматривает программу не менее двух-трех раз. [5]
Заметим сразу, что для адресов идентификаторов, как правило, создается несколько самостоятельных таблиц: таблицы адресов меток, адресов переменных и таблица адресов массивов. [6]
Если адрес метки модифицирован, например FIELDA 5, то это следует понимать таким образом, что вырабатываемый адрес указывает на ту точку, которая в памяти сдвинута в сторону больших адресов по отношению к метке на столько байтов, сколько их указано в моди - фикаторе. [7]
Счетчик адреса является средством, с помощью которого транслятор определяет адреса памяти для операторов исходной программы по мере их трансляции. Значение адреса метки будет абсолютным или относительным в зависимости от того, является ли программная секция, в которой определяется эта метка, абсолютной или перемещаемой. В случае абсолютной программной секции значение счетчика адреса является абсолютным. Аналогично, значение счетчика адреса в перемещаемой программной секции является относительным. Чтобы установить фактический абсолютный адрес метки, компоновщик вычисляет абсолютное смещение программной секции и прибавляет его к значению счетчика адреса. [8]
Абсолютный ( неперемещаемый) код программы генерируется непосредственно при ассемблировании и располагается в программной памяти в порядке следования операторов программы. Операторы перехода на метку сразу же заменяются соответствующим кодом перехода на адрес метки. [9]
В ЭВМ 68000 и 6809 предусмотрена команда LEA ( Load Effective Address - Загрузка исполнительного адреса), которая вычисляет исполнительный адрес согласно указанному способу адресации и помещает его в адресный регистр. Например, команда LEAX START ( PCR) в ЭВМ 6809 вычисляет адрес метки START как функцию текущего значения счетчика команд и помещает его в базовый регистр X. В ЭВМ PDP-11 требуемый эффект может быть достигнут перезаписью содержимого счетчика команд в регистр с использованием команды MOV, а затем суммированием с небольшим смещением. В других ЭВМ для перезаписи содержимого счетчика команд в адресный регистр-придется прибегнуть к изощренным приемам программирования. [10]
В тех языках программирования, в которых описание переменных и процедур ( подпрограмм) производится до обращения к ним, для трансляции достаточно одного прохода. Трудности в этом случае могут возникнуть только при обработке операторов перехода, если адреса меток передачи управления еще не определены. Для ЦВМ, имеющих косвенную адресацию или аналогичный ей аппарат, эта трудность легко может быть обойдена путем организации передачи управления по адресу, записанному в соответствующей ячейке таблицы меток. [11]
В противном случае транслятор должен порождать собственные метки. Для обеспечения формирования в программе адресов должен быть введен оператор присваивания именующих выражений, благодаря чему адрес метки можно зафиксировать в какой-либо памяти. [12]
В отличие от локальных переменных все адреса глобальных переменных назначаются на верхних уровнях САП или программистом. Поэтому задача САП нижнего уровня состоит лишь в отыскании этой информации по имени переменной. Адреса глобальных меток определяются при трансляции подпрограммы как адреса входов в нее и должны быть также зафиксированы для использования их как операндов ( глобальных меток) выходов для других подпрограмм. [13]
Блок идентификатора файла ( метка формата 1) именует файл и среди прочего описывает организацию файла, дату создания и срок хранения. Метка содержит также адрес файла или максимум три адреса, если файл занимает более чем одну непрерывную область памяти ( экстент) на устройстве прямого доступа. Поле адреса метки файла указывает первый и последний цилиндры и дорожки, выде-ленные для экстента. Она может содержать описания и адреса до тринадцати других экстентов. В этом случае метка формата 1 ссылается на метку формата 3, сформированную для данного файла. [14]
Команды управления. [15] |