WikiDer > Трехадресный код

Three-address code

В Информатика, трехадресный код[1] (часто сокращенно TAC или 3AC) - это промежуточный код использован оптимизация компиляторов для помощи в реализации преобразования, улучшающие код. Каждая инструкция TAC имеет не более трех операндов и обычно представляет собой комбинацию присваивания и бинарного оператора. Например, t1: = t2 + t3. Название происходит от использования трех операндов в этих операторах, хотя могут встречаться инструкции с меньшим количеством операндов.

Поскольку трехадресный код используется в качестве промежуточного языка в компиляторах, операнды, скорее всего, не будут конкретными адресами памяти или регистры процессора, а скорее символические адреса, которые будут преобразованы в фактические адреса во время распределение регистров. Также нередко имена операндов нумеруются последовательно, поскольку трехадресный код обычно генерируется компилятором.

Уточнение трехадресного кода А-нормальная форма (ANF).

Примеры

В трехадресном коде это было бы разбито на несколько отдельных инструкций. Эти инструкции легче перевести на язык ассемблера. Также легче обнаружить общие подвыражения для сокращения кода. В следующем примере одно вычисление состоит из нескольких более мелких:

Трехадресный код может иметь условные и безусловные переходы и способы доступа к памяти. Он также может иметь методы вызова функций или может сводить их к прыжкам. Таким образом, трехадресный код может быть полезен в анализ потока управления. В следующем примере, подобном C, цикл хранит квадраты чисел от 0 до 9:

Смотрите также

Рекомендации

  1. ^ В., Ахо, Альфред (1986). Компиляторы, принципы, методы и инструменты. Сетхи, Рави., Ульман, Джеффри Д., 1942–. Ридинг, Массачусетс: Addison-Wesley Pub. Co., стр.466. ISBN 0201100886. OCLC 12285707.