Representació intermèdia

De la Viquipèdia, l'enciclopèdia lliure
Representació intermèdia

Característiques tècniques
PlataformaMultiplataforma
Més informació
Stack ExchangeEtiqueta Modifica el valor a Wikidata

Una representació intermèdia (amb acrònim anglès IR) és l'estructura de dades o el codi utilitzat internament per un compilador o màquina virtual per representar el codi font. Un IR està dissenyat per afavorir el processament posterior, com ara l'optimització i la traducció.[1] Un "bon" IR ha de ser precís, capaç de representar el codi font sense pèrdua d'informació,[2] i independent de qualsevol llengua font o de destinació en particular.[1] Un IR pot adoptar una d'aquestes diverses formes: una estructura de dades a la memòria o un codi especial basat en tuples o pila llegible pel programa.[3] En aquest darrer cas també s'anomena llengua intermèdia.[4]

Un exemple canònic es troba a la majoria de compiladors moderns. Per exemple, l'intèrpret CPython transforma el text lineal llegible per l'home que representa un programa en una estructura de gràfic intermedi que permet l'anàlisi del flux i la reordenació abans de l'execució. L'ús d'una representació intermèdia com aquesta permet que sistemes compiladors com la Col·lecció de compiladors GNU i LLVM siguin utilitzats per molts llenguatges font diferents per generar codi per a moltes arquitectures de destinació diferents.

Un llenguatge intermedi és el llenguatge d'una màquina abstracta dissenyada per ajudar en l'anàlisi de programes informàtics. El terme prové del seu ús en compiladors, on el codi font d'un programa es tradueix a una forma més adequada per a transformacions de millora de codi abans de ser utilitzat per generar codi d'objecte o màquina per a una màquina objectiu. El disseny d'un llenguatge intermedi normalment difereix del d'un llenguatge de màquina pràctic en tres aspectes fonamentals:

Referències[modifica]

  1. 1,0 1,1 Walker, David. «CS320: Compilers: Intermediate Representation» (Lecture slides) (en anglès). [Consulta: 12 febrer 2016].
  2. Chow, Fred ACM Queue, 11, 10, 22-11-2013 [Consulta: 12 febrer 2016].
  3. Toal, Ray. «Intermediate Representations» (en anglès). [Consulta: 12 febrer 2016].
  4. «Intermediate representations (IR) in Compiler Design» (en anglès), 11-01-2022. [Consulta: 18 febrer 2023].