Таблица - литерал - Большая Энциклопедия Нефти и Газа, статья, страница 2
Торопить женщину - то же самое, что пытаться ускорить загрузку компьютера. Программа все равно должна выполнить все очевидно необходимые действия и еще многое такое, что всегда остается сокрытым от вашего понимания. Законы Мерфи (еще...)

Таблица - литерал

Cтраница 2


Получив управление от блока выделения имен, блок распределения памяти создает область литералов, в которую включаются все те литералы, которые встретились в исходной программе после последней команды LTORG. В таблице литералов эти литералы к моменту завершения первого просмотра не имеют адресов и записаны после условной записи, являющейся признаком конца последней области литералов, созданной командой LTORG. Если в исходной программе не было команд LTORG, то ни один литерал не имеет адреса.  [16]

Обработка машинной команды завершается просмотром поля операндов, включая строку продолжения, если она есть. Литералы, встретившиеся в поле операндов, заносятся в таблицу литералов вместе с характеристикой длины.  [17]

После прочтения директивы END первый проход завершается. В этот момент можно сохранить таблицу символьных имен и таблицу литералов, если это необходимо.  [18]

19 Представление лексических правил в БНФ. [19]

Числа, строки символов, заключенные в кавычки, и другие самоопределенные данные классифицируются как литералы. После того как лексическая единица классифицирована как литерал, опрашивается таблица литералов.  [20]

Смещение принимается равным разности значения символа в таблице символов и содержимого выбранного базового регистра. Приведенная ниже программа на языке ассемблера иллюстрирует использование таблиц переменных ( таблицы символов, таблицы литералов и таблицы базовых регистров) и может служить для лучшего понимания алгоритмов, представленных в следующем разделе. Основное внимание будет обращено на, йроблему ассемблирования этой программы, ее конкретные функции для нас интереса не представляют.  [21]

Основные элементы исходной программы помещаются затем в таблицу однородных символов. Для каждого обозначения указывается его синтаксический класс ( целое, идентификатор, ограничитель, зарезервированное слово), и с помощью указателя задается место, в котором хранится его исходная форма. Таким образом выполняется первый шаг построения таблиц литералов и идентификаторов.  [22]

Таблица литералов хранит все литералы, встречающиеся в программе. Идентичные по написанию литералы включаются в таблицу только один раз. Адреса назначаются литералам после завершения первого просмотра исходной программы или по команде LTORG. Записи таблицы литералов имеют переменную длину, зависящую от количества знаков в литерале.  [23]

Мы опять выбираем общий путь представления этой фазы, чтобы показать и результат генерации, и некоторые методы машинно-зависимой оптимизации. Большинство современных компиляторов следуют описанной здесь методике. Возвращаясь к рис. 8.13, отметим, что фаза генерации использует матрицу в качестве входной информации, а также кодовые продукции ( макроопределения), которые определяют операции, появляющиеся в матрице. Она, кроме того, обращается к таблице идентификаторов и таблице литералов для генерирования соответствующих адресов и преобразований типов данных.  [24]

Заметим, что значением всех переменных в таблице идентификаторов являются двоичные числа с фиксированной точкой. Так что каждой из них отводится отдельное слово. Литералами являются десятичные числа, а в Системе 360 они хранятся в упакованном виде, по две цифры в байте. Элемент матрицы явно указывает, что литеральная область памяти состоит из трех байтов и что при генерации кода эта область должна быть заполнена значениями литералов, взятыми в таблице литералов.  [25]

26 Представление лексических правил в БНФ. [26]

Числа, строки символов, заключенные в кавычки, и другие самоопределенные данные классифицируются как литералы. После того как лексическая единица классифицирована как литерал, опрашивается таблица литералов. В отличие от идентификаторов, литералы позволяют определить их атрибуты и внутреннее представление при просмотре составляющих их символов. Таким образом, каждый новый элемент, создаваемый в таблице, состоит из литерала и всех его атрибутов. Не зависимо от того, создан новый элемент таблицы литералов или нет, создается стандартный символ типа LIT и помещается в таблицу стандартных символов.  [27]

Таким образом, программисту не нужно писать директиву, чтобы разместить слово в памяти, придать ему значение 5, дать ему метку, а затем использовать эту метку в команде L. Константы, для которых ассемблер автоматически резервирует память, называются литералами. Литералы упрощают читаемость и понимание программы, делая значение константы очевидным в исходном операторе. При первом проходе ассемблер должен создать таблицу из всех литералов, которые используются в программе. Все три компьютера, которые мы взяли в качестве примеров, содержат команды с непосредственными адресами, поэтому их ассемблеры не обеспечивают литералы. Команды с непосредственными адресами в настоящее время считаются обычными, но раньше они рассматривались как нечто совершенно необычное. Вероятно, широкое распространение литералов внушило разработчикам, что непосредственная адресация - это очень хорошая идея. Если нужны литералы, то во время ассемблирования сохраняется таблица литералов, в которой появляется новый элемент всякий раз, когда встречается литерал. После первого прохода таблица сортируется и продублированные элементы удаляются.  [28]



Страницы:      1    2