Buchstäblicher Pool - Literal pool

In der Informatik und speziell in Compiler und Assembler - Design, eine wörtliche Pool ist eine Lookup - Tabelle zu halten , verwendet Literale bei der Montage und Ausführung .

Mehrere (lokale) Literalpools werden normalerweise nur für Computerarchitekturen verwendet , denen Verzweigungsbefehle für lange Sprünge fehlen oder deren Befehlssatz für kürzere Sprünge optimiert ist. Beispiele für solche Architekturen sind die ARM-Architektur und die Architekturen von IBM System / 360 und höher, die eine Reihe von Anweisungen enthielten, die 12-Bit-Adressversätze erforderten. In diesem Fall würde der Compiler auf jeder 4K-Seite eine Literaltabelle erstellen. Alle Zweige, deren Ziel weniger als 4 KB entfernt war, konnten sofort übernommen werden. Längere Zweige erforderten eine Adressensuche über die Literaltabelle. Die Einträge im wörtlichen Pool in das platziert Objekt Relokationstabelle bei der Montage, und werden dann bei aufgelöst Link bearbeitet Zeit .

In gewisser Weise ähnelt ein Literalpool einem Inhaltsverzeichnis oder einer globalen Offset-Tabelle (GOT), mit der Ausnahme, dass die Implementierung erheblich einfacher ist und möglicherweise mehrere Literal-Tabellen pro Objekt vorhanden sind.

Der wahrscheinlich häufigste Typ eines Literalpools sind die Literalpools, die von der LDR Rd,=constPseudoanweisung in der ARM-Assemblersprache und ähnlichen Anweisungen in der IBM System / 360-Assemblersprache verwendet werden. die zu einem LOAD mit einem PC-relativen Adressierungsmodus und der im Literalpool gespeicherten Konstante kompiliert werden.

Oft wird ein bestimmter konstanter Wert in einem Programm mehrmals verwendet. Viele Linker speichern standardmäßig jede eindeutige Konstante einmal in einem einzigen kombinierten Literalpool. das verbessert die Codegröße.

Die Java Virtual Machine verfügt über einen "String Literal Pool" und einen "Class Constant Pool ".

Verweise