Тетрады
Представляет собой запись операций в форме из 4 составляющих:
<операция> (<операнд_1>,<операнд_2>,<результат>)
Тетрады представляют собой линейную последовательность команд, поэтому для них несложно написать алгоритм, который будет преобразовывать последовательность тетрад в последовательность команд результирующей программы, либо в последовательность команд ассемблера. Тетрады не зависят от архитектуры вычислительной системы, на которую ориентирована разрабатываемая программа, поэтому они представляют собой машинно-независимую форму внутреннего представления программы.
(-a+b)*(c+d)
можно представить тетрады следующим образом:
-a = 1
1+b=2
c+d=3
2*3=4
Триады
Представляют собой запись операций в форме 3 составляющих
<операция> (<операнд_1>,<операнд_2>
Особенностью триад является то, что один или оба операнда могут быть ссылками на другую триаду, в том случае, если в качестве операнда данной триады выступает результат выполнения другой триады Поэтому триады при записи последовательно нумеруются для удобства указания ссылок одних триад на другие.
Как и в случае с тетрадами, алгоритм преобразования последовательности триад в команды достаточно прост, но здесь требуется также и алгоритм, отвечающий за расширение памяти, необходимой для промежуточных результатов вычислений, так как временные переменные для этой цели не используются. Триады требуют меньше памяти для своего представления, чем тетрады, кроме того, они явно отражают взаимосвязь операций между собой. Триады ближе к двухадресным машинам, чем тетрады.
a+b+c*d
можно представить, как в виде тетрад:
a+b=1 c*d=2 1+2=3 | a+b c*d 1+2 |
Дата добавления: 2015-07-30; просмотров: 839;