Список поддерживаемых операций

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

Операции, реализованные в настоящей работе, можно разделить на несколько групп:

  • Фундаментальные операции. Операции в этой группе служат для задания основных “блоков” программы: объявления и вызова функций, введения констант. В группу входят следующие операции: ModuleOp, FunctionOp, FunctionCallOp, ReturnOp, ConstantOp.

  • Вычислительные операции. Эти операции являются репрезентацией вычисления всевозможных арифметико-логических выражений. В группу входят следующие операции: ArithBinaryOp, LogicBinaryOp, ArithCastOp, ArithUnaryOp, LogicUnaryOp.

  • Операции по работе с памятью. Указанной группе принадлежат операции, работающие с низкоуровневым представлением памяти для явной аллокации, загрузки и сохранения значений. В группу входят следующие операции: AllocateOp, LoadOp, StoreOp.

  • Операции над потоком управления. Операции в этой группе используются для декларирования условных и цикловых конструкций, а также их компонентов. В группу входят следующие операции: IfOp, ThenOp, ElseOp, WhileOp, ConditionOp, ForOp.

  • Специальные операции. Эти операции представляют собой высокоуровневые языковые конструкции, которые должны сохраниться и в низкоуровневом представлении. В группу входят следующие операции: InputOp, PrintOp.

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

Назад