Pregunta

Mientras que hace un poco de lectura, me encontré con los términos "Intermediate Language" y "3AC".

IL, según entiendo, es el "paso" media en el proceso de compilación de código fuente. Más específicamente, estoy leyendo el código de bytes (Java) y C.

La forma en que interpreto (corríjanme si me equivoco) es;

Código Fuente 1 (ex Lisp.) -> Lenguaje intermedio (C) -> Asamblea Idioma -> Código de Máquina

Código Fuente 2 (ex Java.) -> Bytecode -> Java Virtual Machine

Así que basado en esto, estoy luchando para ver de dónde viene el Código de tres direcciones (TAC / 3AC) entra en juego, y lo que por su uso.

¿Fue útil?

Solución

Código de tres direcciones (TAC) es la representación intermedio utilizado en la mayoría compiladores. Es esencialmente un lenguaje ensamblador genérico que cae en el extremo inferior de la de nivel medio de los RI. Algunos variante de código de dirección 2, 3 o 4 está bastante usa comúnmente como un IR, porque aporta así a la mayoría de los lenguajes ensambladores.

la instrucción

Un TAC puede tener como máximo tres operandos. Los operandos pueden ser dos operandos a un operador binario aritmética y la tercera la ubicación resultado, o un operando a comparar a cero y una segunda ubicación en rama a, y así sucesivamente. Por ejemplo, a continuación en la parte superior es una expresión aritmética y en el fondo, es una traducción a TAC instrucciones:

//Expresion
        a = b * c + b * d;
//3AC
        _t1 = b * c;
        _t2 = b * d;
        _t3 = _t1 + _t2;
        a = _t3;

Fuente: http://web.archive.org/web/20151010192637/http://www.dound.com/courses/cs143/handouts/17-TAC-Examples.pdf

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top