stringtranslate.com

Piscina literal

En informática , y específicamente en el diseño de compiladores y ensambladores , un grupo de literales es una tabla de búsqueda utilizada para almacenar literales durante el ensamblaje y la ejecución .

Los grupos de literales múltiples (locales) se utilizan normalmente solo para arquitecturas informáticas que carecen de instrucciones de bifurcación para saltos largos o que tienen un conjunto de instrucciones optimizadas para saltos más cortos. Entre los ejemplos de dichas arquitecturas se incluyen IBM System/360 y sus sucesores, que tenían una serie de instrucciones que tomaban desplazamientos de dirección de 12 bits. En este caso, el compilador crearía una tabla de literales en cada página de 4K; cualquier bifurcación cuyo destino estuviera a menos de 4K bytes de distancia podría tomarse inmediatamente; las bifurcaciones más largas requerían una búsqueda de dirección a través de la tabla de literales. Las entradas en el grupo de literales se colocan en la tabla de reubicación de objetos durante el ensamblaje y luego se resuelven en el momento de la edición del enlace .

La arquitectura ARM también hace uso de múltiples grupos locales, [1] al igual que AArch64 , la extensión de 64 bits del ARM original. [2]

Otra arquitectura que utiliza múltiples grupos locales es C-SKY, una arquitectura de 32 bits diseñada para SoC integrados . [3] [4]

En ciertos aspectos, un grupo literal se parece a una tabla de contenido (TOC) o a una tabla de desplazamiento global (GOT), excepto que la implementación es considerablemente más simple y puede haber varias tablas literales por objeto.

Quizás el tipo más común de grupo literal son los grupos literales utilizados por la LDR Rd,=constpseudoinstrucción en lenguaje ensamblador ARM [5] [6] e instrucciones similares en lenguaje ensamblador IBM System/360 [7] , que se compilan en un LOAD con un modo de direccionamiento relativo a PC y la constante se almacena en el grupo literal.

En la arquitectura IBM S/390 y zSeries , el ensamblador GNU, "as" (que se invoca durante el proceso de construcción gcc ) utilizará el registro de propósito general R13 para almacenar un puntero al grupo literal. [8] [9]

A menudo, un valor constante particular se utiliza varias veces en un programa. Muchos enlazadores, de forma predeterminada, almacenan cada constante única una vez, en un único conjunto de literales combinados; eso mejora el tamaño del código. [10]

La máquina virtual Java tiene un "grupo de literales de cadena" y un " grupo de constantes de clase ". [11]

Referencias

  1. ^ "Usando como, sección 9.4 (Funciones dependientes de ARM)".
  2. ^ "Usando como, sección 9.1 (Características dependientes de AArch64)".
  3. ^ "Usando como, sección 9.10.1 (Funciones dependientes de C-SKY: Opciones)".
  4. ^ Larabel, Michael. «Las CPU de 32 bits de C-SKY aspiran a recibir soporte inicial en Linux 4.20~5.0». Archivado desde el original el 22 de agosto de 2022. Consultado el 22 de agosto de 2022 .
  5. ^ "Escritura en lenguaje ensamblador ARM > Grupos literales". Archivado desde el original el 19 de agosto de 2022.
  6. ^ "Guía del usuario del ensamblador IAR para núcleos ARM de Arm Limited (AARM-12)" (PDF) . Archivado (PDF) del original el 19 de enero de 2022 . Consultado el 22 de agosto de 2022 .Archivado el 22 de agosto de 2022 en archive.today
  7. ^ "Referencia del lenguaje de ensamblador de alto nivel para z/OS, z/VM y z/VSE V1R6 (HLASM V1R6): grupo literal". IBM . Archivado desde el original el 19 de agosto de 2022.
  8. ^ Geiselhart, Gregory; Grahn, Andrea; Handoko, Frans; Hundertmark, Jörg; Krzymowski, Albert; Pomar, Eliuth (julio de 2002). Linux en IBM zSeries y S/390: desarrollo de aplicaciones (PDF) . IBM Redbooks. IBM . Archivado (PDF) del original el 22 de julio de 2021.Archivado el 19 de agosto de 2022 en archive.today
  9. ^ "Uso de as (sección 9.41.3.8)". Archivado desde el original el 19 de agosto de 2022.
  10. ^ William von Hagen. "La guía definitiva del CCG".
  11. ^ Jacquie Barker. "Objetos Java iniciales: de los conceptos al código": "pool literal".