2010-10-20 1 views
5

При чтении я натолкнулся на термины «Промежуточный язык» и «3AC».Три адресных кода (TAC/3AC)

IL, как я понимаю, является средним «шагом» в процессе компиляции исходного кода. В частности, я читаю об байткоде (Java) и C.

Способ интерпретирования (исправьте меня, если я ошибаюсь) is;

Исходный код 1 (например, Lisp.) -> Intermediate Language (C) -> Сборка Language -> Машинный код

Исходный код 2 (например, Java.) -> Bytecode -> Java Виртуальная машина

На основании этого я изо всех сил пытаюсь понять, где находится Три адресных кода (TAC/3AC), и для чего он используется.

ответ

8

Трёхкомпонентный код (TAC) - это промежуточное представление, используемое в большинстве компиляторов . Это, по сути, общий язык ассемблера, который попадает в нижний конец средних уровней IR. Некоторый вариант кода адреса 2, 3 или 4 довольно часто используется как IR, , поскольку он хорошо отображает большинство языков ассемблера.

Инструкция TAC может иметь не более трех операндов. Операнды могут представлять собой два операнда двоичному арифметическому оператору, а третье - местоположение результата или операнд до , сравниваемый с нулем, и второе местоположение для ветвления и т. Д. Например, ниже на верх арифметическое выражение и на дне, является переводом на TAC инструкции:

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

Источник: http://web.archive.org/web/20151010192637/http://www.dound.com/courses/cs143/handouts/17-TAC-Examples.pdf

 Смежные вопросы

  • Нет связанных вопросов^_^