Jump to content

Буквальный пул

В информатике , и особенно в компиляторов и ассемблеров проектировании , пул литералов — это таблица поиска, используемая для хранения литералов во время сборки и выполнения .

Множественные (локальные) пулы литералов обычно используются только для компьютерных архитектур , в которых отсутствуют инструкции ветвления для длинных переходов или имеется набор инструкций, оптимизированных для более коротких переходов. Примеры таких архитектур включают IBM System/360 и ее преемники, в которых был ряд инструкций, требующих 12-битного смещения адреса. В этом случае компилятор будет создавать буквальную таблицу на каждой странице размером 4 КБ; любые ветки, чья цель находилась на расстоянии менее 4 КБ, могли быть удалены немедленно; более длинные ветки требовали поиска адреса через таблицу литералов. Записи в пуле литералов помещаются в объектов таблицу перемещения во время сборки, а затем разрешаются во время редактирования ссылки .

Архитектура ARM также использует несколько локальных пулов. [1] как и AArch64 , 64-битное расширение исходного ARM. [2]

Другая архитектура, использующая несколько локальных пулов, — это C-SKY, 32-битная архитектура, предназначенная для встроенных SoC . [3] [4]

В некотором смысле пул литералов напоминает TOC или глобальную таблицу смещений (GOT), за исключением того, что реализация значительно проще и на объект может быть несколько таблиц литералов.

Вероятно, наиболее распространенным типом пула литералов являются пулы литералов, используемые LDR Rd,=const псевдоинструкция на языке ассемблера ARM [5] [6] и аналогичные инструкции на языке ассемблера IBM System/360, [7] которые компилируются в LOAD с ПК относительно режимом адресации и константой, хранящейся в пуле литералов.

В архитектуре IBM S/390 и zSeries ассемблер GNU «as» (который вызывается в процессе сборки gcc ) будет использовать регистр общего назначения R13 для хранения указателя на пул литералов. [8] [9]

Часто какое-то конкретное постоянное значение используется в программе несколько раз. Многие компоновщики по умолчанию сохраняют каждую уникальную константу один раз в одном объединенном пуле литералов; это увеличивает размер кода. [10]

Виртуальная машина Java имеет «пул строковых литералов» и « пул констант класса ». [11]

  1. ^ «Использование as, раздел 9.4 (Функции, зависящие от ARM)» .
  2. ^ «Использование as, раздел 9.1 (Зависимые функции AArch64)» .
  3. ^ «Использование как, раздел 9.10.1 (Зависимые функции C-SKY: Параметры)» .
  4. ^ Ларабель, Майкл. «32-битные процессоры C-SKY нацелены на начальную поддержку в Linux 4.20~5.0» . Архивировано из оригинала 22 августа 2022 года . Проверено 22 августа 2022 г.
  5. ^ «Написание языка ассемблера ARM > Пулы литералов» . Архивировано из оригинала 19 августа 2022 года.
  6. ^ «Руководство пользователя ассемблера IAR для ядер ARM Limited (AARM-12)» (PDF) . Архивировано (PDF) из оригинала 19 января 2022 года . Проверено 22 августа 2022 г. Архивировано 22 августа 2022 года на archive.today.
  7. ^ «Ассемблер высокого уровня для z/OS, z/VM и z/VSE V1R6 (HLASM V1R6). Справочник по языку: пул букв» . ИБМ . Архивировано из оригинала 19 августа 2022 года.
  8. ^ Гейзельхарт, Грегори; Гран, Андреа; Хандоко, Франс; Хундертмарк, Йорг; Кшимовский, Альберт; Помар, Элиут (июль 2002 г.). Linux на IBM zSeries и S/390: Разработка приложений (PDF) . Красные книги IBM. ИБМ . Архивировано (PDF) из оригинала 22 июля 2021 года. Архивировано 19 августа 2022 года на archive.today.
  9. ^ «Использование как (раздел 9.41.3.8)» . Архивировано из оригинала 19 августа 2022 года.
  10. ^ Уильям фон Хаген. «Полное руководство по GCC» .
  11. ^ Джеки Баркер. «Начальные объекты Java: от концепций к коду»: «пул букв» .


Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: e21aebf5dfe085a363d76f05fad4ff8a__1695831720
URL1:https://arc.ask3.ru/arc/aa/e2/8a/e21aebf5dfe085a363d76f05fad4ff8a.html
Заголовок, (Title) документа по адресу, URL1:
Literal pool - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)