русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Техно IL


Дата добавления: 2014-10-02; просмотров: 2089; Нарушение авторских прав


 

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

Техно IL поддерживает одноадресный и двухадресный режимы записи инструкций, которые оперируют с двумя операндами. В первом случае первым операндом является аккумулятор, который опускается при записи, во втором случае указываются два операнда.

Под аккумулятором в Техно IL понимается хранилище текущего результата вычислений (в этом качестве выступает один из регистров процессора). Далее в описании языка Техно IL значение аккумулятора обозначается словом result.

 

Пример. В данном примере представлена запись процедуры a = a + b в одноадресном и двухадресном режиме.

Одноадресный режим:

LD a //result = a

ADD b //result = result + b

ST a //a = result

 

Двухадресный режим позволяет записать ту же операцию компактнее:

ADD a b // a = a + b

 

Операторы обмена с аккумулятором

Синтаксис Модификатор Действие
LD operand N result := operand
ST operand N operand := result

 

В качестве операнда может использоваться численная или булева переменная. В качестве операнда оператора LD может использоваться число. Отличное от нуля значение аккумулятора интерпретируется как TRUE, нулевое – как FALSE, поэтому значение аккумулятора может быть присвоено как численной, так и булевой переменной.

 

Пример:

VAR VAR_000 : INT := 10; END_VAR

VAR VAR_001 : BOOL := TRUE; END_VAR

VAR VAR_002 : BOOL; END_VAR

LD 8 //result := 8

ST VAR_000 //VAR_000 := 8

ST VAR_002 //VAR_002 := TRUE

LD 0 //result := 0

ST VAR_001 //VAR_001 := FALSE



LD VAR_001 //result := FALSE

ST VAR_002 //VAR_002 := FALSE

ST VAR_000 //VAR_000 := 0

 

Логические операторы

Синтаксис Модификатор Действие
S operand   operand := TRUE (см. примечание)
R operand   operand := FALSE (см. примечание)
AND operand1 operand2 N result := operand1 := operand1 AND operand2
OR operand1 operand2 N result := operand1 := operand1 OR operand2
XOR operand1 operand2 N result := operand1 := operand1 XOR operand2

Примечание. Оператор выполняется только тогда, когда result = TRUE.

 

В качестве операндов могут использоваться булевы переменные. Вторым операндом может быть число (но не численная переменная), которое интерпретируется следующим образом: не равно 0 – TRUE; равно 0 – FALSE. Выполнение операторов R и S не изменяет значения аккумулятора.

 

Пример:

VAR VAR_001 : BOOL := TRUE; END_VAR

VAR VAR_002 : BOOL; END_VAR

VAR VAR_004 : INT := 0; END_VAR

LD 1 //result := 1

S VAR_002 //VAR_002 := TRUE

R VAR_002 //VAR_002 := FALSE

AND VAR_001 VAR_002 //result := VAR_001 := FALSE

LD 1 //result := 1

S VAR_001 //VAR_001 := TRUE

OR VAR_002 VAR_001 //result := VAR_002 := TRUE

XOR VAR_002 VAR_001 //result := VAR_002 := FALSE

OR VAR_002 10 //result := VAR_002 := TRUE

Арифметические операторы

Синтаксис Действие
ADD operand1 operand2 result := operand1 := operand1 + operand2
SUB operand1 operand2 result := operand1 := operand1 – operand2
MUL operand1 operand2 result := operand1 := operand1 * operand2
DIV operand1 operand2 result := operand1 := operand1 : operand2

 

В качестве операндов используются численные переменные, в качестве второго операнда может использоваться число. Арифметические операторы не допускают использования модификаторов.

 

Пример:

VAR VAR_000 : REAL := 20; END_VAR

VAR VAR_001 : LREAL := 30; END_VAR

ADD VAR_000 10 //result := VAR_000 := 30

MUL VAR_001 9 //result := VAR_001 := 270

SUB VAR_001 VAR_000 //result := VAR_001 := 240

DIV VAR_001 VAR_000 //result := VAR_001 := 8

Операторы сравнения

Синтаксис Действие
GT operand1 operand2 result := TRUE, если operand1 > operand2
GE operand1 operand2 result := TRUE, если operand1 >= operand2
EQ operand1 operand2 result := TRUE, если operand1 == operand2
NE operand1 operand2 result := TRUE, если operand1 <> operand2
LE operand1 operand2 result := TRUE, если operand1 <= operand2
LT operand1 operand2 result := TRUE, если operand1 < operand2

 

В качестве операндов используются численные переменные, в качестве второго операнда может использоваться число. Операторы сравнения не допускают использования модификаторов. Операторы сравнения, как правило, предшествуют операторам JMPC, CALC и RETC. Если результат сравнения ложен, инструкции сравнения не изменяют значения аккумулятора, а последующий оператор JMPC, CALC или RETC игнорируется (даже если result = TRUE).

 

Пример

VAR VAR_000 : INT := 20; END_VAR

VAR VAR_001 : INT := 30; END_VAR

VAR VAR_002 : BOOL; END_VAR

LD 1 //result := TRUE

GT VAR_000 VAR_001 //результат сравнения ложен (20<30)

//аккумулятор сохраняет свое значение (TRUE)

RETC //RETC игнорируется

LD VAR_002 //result := FALSE

LT VAR_000 VAR_001 //результат сравнения истинен

//result := TRUE

CALC fff(VAR_000) //вызов функции произойдет

Операторы перехода и вызова функции

Синтаксис Модификатор Действие
JMP имя_метки C, X переход к строке с указанной меткой
CAL имя_функции(val1, ... valN) C, X вызов функции или функции-блока
RET C, X выход из программы, функции или функции-блока

 

Операторы перехода выполняются, если строка с указанной меткой находится в том же программном компоненте. В круглых скобках через запятую указываются значения, передаваемые в функцию. Между именем функции и круглыми скобками пробел необязателен. Число передаваемых в функцию значений должно быть равно числу аргументов, заданных для этой функции. При выполнении оператора RET и его разновидностей функция возвращает значение result. Определены следующие модификации данных операторов:

JMP, CAL, RET – соответственно оператор безусловного перехода, безусловного вызова и безусловного выхода.

JMPX, CALX, RETX – соответственно оператор условного перехода, условного вызова и условного выхода. Инструкция, содержащая любой их этих операторов, выполняется только тогда, когда result=TRUE, в противном случае игнорируется.

JMPC, CALC, RETC – соответственно оператор условного перехода, условного вызова и условного выхода. Эти операторы следуют непосредственно за оператором сравнения. Инструкция, содержащая любой их этих операторов, выполняется только тогда, когда результат предыдущей операции сравнения истинен, в противном случае игнорируется.

Модификаторы Техно IL

Модификаторы Техно IL – это литеры N, C и X, которые могут быть приписаны справа к имени ряда операторов. Модификатор N обозначает логическое отрицание операнда. Например, инструкция AND a интерпретируется как result = result AND a, а инструкция ANDN a интерпретируется как result = result AND NOT a. Для операторов JMP, CAL и RET: модификатор C обозначает, что инструкция выполняется в том случае, если результат предыдущей операции сравнения истинен; модификатор X обозначает, что инструкция выполняется в том случае, если result = TRUE.

Примеры IL-инструкций

ADD VAR_000 2.6

LT VAR_000 VAR_001

JMPC label1

GT VAR_001 20

JMPC label2

LD 278

label1: CAL FUNCTION_000(VAR_000, VAR_001)

label2: ST VAR_001


Лекция 14



<== предыдущая лекция | следующая лекция ==>
Техно ST | Техно LD


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.004 сек.