Описание языка Tehno IL
Синтаксис Техно IL
Программа на языке Техно IL представляет собой последовательность инструкций. Каждая инструкция должна начинаться с новой строки и должна содержать оператор с опциональным модификатором и, для некоторых операций, один или более операндов, разделенных пробелами. Между инструкциями могут располагаться пустые строки. Компилятор не чувствителен к регистру, т.е. инструкции add var_002 и ADD VAR_002 равнозначны.
Примеры IL-инструкций
ADD VAR_000 2.6
LT VAR_000 VAR-001
JMPC label 1
GT VAR-001 20
JMPC label2
LD 278
labell: CAL FUNCTION_000(VAR_000, VAR_001)
label2: ST VAR_001
Под аккумулятором в Техно IL понимается хранилище текущего результата вычислений (в этом качестве выступает один из регистров процессора). Далее в описании языка Техно IL значение аккумулятора обозначается словом result. Функция на языке Техно IL возвращает result.
Техно IL поддерживает одноадресный и двухадресный режимы записи инструкций, которые оперируют с двумя операндами. В первом случае первым операндом является аккумулятор, который опускается при записи, во втором случае указываются два операнда.
Пример
В данном примере представлена запись процедуры а = а + b в одноадресном и двухадресном режиме. Одноадресный режим:
LD a //result = а
ADD b //result = result + b
ST a //a = result
Двухадресный режим позволяет записать ту же операцию компактнее:
ADD ab //а = а + Ь
В IL-программе могут использоваться метки и комментарии. Правила их задания аналогичны правилам Техно ST.
Операторы и модификаторы Техно IL
К ним относятся:
- - модификаторы Техно IL;
- - операторы обмена с аккумулятором;
- - логические операторы Техно IL;
- - арифметические операторы Техно IL;
- - операторы сравнения Техно IL;
- - операторы перехода и вызова функции Техно IL.
Модификаторы Техно IL
Модификаторы Техно IL - это литеры N, С и X, которые могут быть приписаны справа к имени ряда операторов.
Модификатор N обозначает логическое отрицание операнда. Например, инструкция
AND а
интерпретируется как result = result AND а, а инструкция
ANDN а
интерпретируется как result = result AND NOT a.
Для операторов JMP, CAL и RET:
- - модификатор С обозначает, что инструкция выполняется в том случае, если результат предыдущей операции сравнения истинен;
- - модификатор X обозначает, что инструкция выполняется в том случае, если result = TRUE.