Cтраница 4
При статическом распределении памяти для простых переменных массивы, как уже отмечалось, размещаются в отдельной области памяти, а при динамическом распределении памяти - в той же области памяти, где простые переменные. На рис. 4.44 показан фрагмент таблицы идентификаторов и возможный вариант распределения секции стека для массивов. [46]
Содержит все константы программы. Ее конструкция и использование аналогичны таблице идентификаторов. [47]
Таблица временной памяти ( часть таблицы идентификаторов) создается фазой интерпретации, чтобы описать промежуточные результаты вычислений в матрице. Эта таблица может быть реализована как часть таблицы идентификаторов, поскольку большая часть информации имеет тот же формат. Это связано с тем, что никакие другие процедуры не ссылаются на нее, и память эта нужна только тогда, когда будет активирована процедура, которой она необходима. [48]
![]() |
Программа поиска элемента в списке. [49] |
На рис. 5.16 в сильно упрощенной форме показаны основные операции двухпроходного ассемблера. Из рисунка видно, что ядром процесса ассемблирования является таблица идентификаторов. Она представляет собой структуру данных, обеспечивающую преобразование идентификаторов в соответствующие значения. Первоначально в ней содержатся только идентификаторы мнемонических обозначений кодов операций, и в процессе ассемблирования такая таблица расширяется за счет внесения в нее идентификаторов, определенных пользователем. [50]
Заметим, что вся информация, содержащаяся в описанной выше таблице блоков, содержится в таблице идентификаторов, поэтому в ходе трансляции можно составлять только таблицу идентификаторов. Тогда таблица блоков формируется при распределении памяти на основании таблицы идентификаторов. [51]
При наличии в программе хотя бы одной ошибки с кодом Серьезности S или Т сведения об объеме памяти не печатаются. Если обнаружена ошибка с кодом серьезности Т, текст исходной программы и таблица идентификаторов могут быть неполными, выданными до того места, в котором трансляция была прекращена. [52]
![]() |
Структура программы с описаниями типа.| Дерево программы с описаниями типа на промежуточном языке. [53] |
Операция НАЧАЛО БЛОКА ( НБ) не порождает команд в объектной программе. Значения этих переменных используются затем операциями ТИП и: при формировании записей таблицы идентификаторов и таблицы меток соответственно. [54]
Во-первых, оно важно для полного понимания разницы между статическим и динамическим связыванием. Когда процедура непосредственно недоступна в исходном файле, компилятор добавляет ее в таблицу внешних идентификаторов. Конечно же, компилятор должен был видеть процедуры и знать их параметры и типы, в противном случае - выдать сообщение об ошибке. [55]
Часто необходима лишь одна структура данных ( один объект), например одна таблица идентификаторов в программе транслятора, один граф в программе сетевого планирования и управления. В таком случае вместо Т - процедуры, моделирующей тип данных, может быть составлена более простая процедура, моделирующая только один объект определенного типа. При этом не требуется идентификация конкретного объекта. [56]
На рис. 8.19 показаны те шаги, которые фазы должны пройти при компиляции примера. На рис. 8.20 суммируется взаимосвязь между первыми тремя фазами компилятора, создающими матрицу, таблицы идентификаторов и литералов для последующих четырех фаз. [57]