СРАВНИТЕЛЬНЫЙ ВИД ОПЕРАЦИЙ НА ЯЗЫКАХ СИ, LUX И ЯЗЫКЕ АССЕМБЛЕРА
В УПОМЯНУТЫХ ЯЗЫКАХ ТРАДИЦИОННО УПОТРЕБЛЯЮТСЯ ОПЕРАЦИИ ВИДА:
<------> var <-----> mov ax,var <--------------> Загрузка
+ <---> +var <-----> add ax,var <--------------> Сложение
- <---> -var <-----> sub ax,var <--------------> Вычитание, унарный -
* <---> *var <-----> imul w,var <--------------> Умножение
/ <---> /var <-----> idiv w,var <--------------> Деление
++ <--> ++var <----> inc w,var <---------------> Инкремент
-- <--> --var <----> dec w,var <---------------> Декремент
<------> C <-------> mov ax,cx <---------------> Загрузка
+ <---> +C <-------> add ax,cx <---------------> Сложение
- <---> -C <-------> sub ax,cx <---------------> Вычитание, унарный -
* <---> *C <-------> imul cx <-----------------> Умножение
/ <---> /C <-------> idiv cx <-----------------> Деление
% <---> %C <-------> xchg cx,ax <--------------> Остаток
++ <--> ++C <------> inc cx <------------------> Инкремент
-- <--> --C <------> dec cx <------------------> Декремент
"<<" <-> "<<" var <-> mov cx,var shl ax,cl <---> Сдвиг влево
>> <----> >>var <---> mov cx,var shr ax,cl <---> Сдвиг вправо
"<<" <-> "<<" C <--> shl ax,cl <---------------> Сдвиг влево
>> <--> >>C <------> shr ax,cl <---------------> Сдвиг вправо
& <---> &var <-----> and ax,var <--------------> Побитовое И, адрес от
| <---> |var <-----> or ax,var <---------------> Побитовое ИЛИ
^ <---> ^var <-----> xor ax,var <--------------> Побитовое ЛИБО
& <---> &C <-------> and ax,cx <---------------> Побитовое И, адрес от
| <---> |C <-------> or ax,cx <----------------> Побитовое ИЛИ
^ <---> ^C <-------> xor ax,cx <---------------> Побитовое ЛИБО
~ <---> ~C <-------> not cx <------------------> Побитовое дополнение
&& <--> &var <-----> and ax,var <--------------> Логическое И
|| <--> |var <-----> or ax,var <---------------> Логическое ИЛИ
&& <--> &C <-------> and ax,cx <---------------> Логическое И
|| <--> |C <-------> or ax,cx <----------------> Логическое ИЛИ
! <---> ~C <-------> not cx <------------------> Логическое НЕ
= <---> var:=012 <-> mov w,var,012 <-----------> Присваивание-запись
= <---> var:=val <-> mov w,var,012 <-----------> Присваивание-запись
= <---> C:=01234 <-> mov cx,01234 <------------> Присваивание-запись
= <---> C:=val <---> mov cx,01234 <------------> Присваивание-запись
= <---> B:=C <-----> mov bx,cx <---------------> Присваивание-запись
= <---> C:=B <-----> mov cx,bx <---------------> Присваивание-запись
= <---> val :var <-> mov ax,01234 mov var,ax <-> Присваивание-запись
= <---> vas :var <-> mov ax,vas mov var,ax <---> Присваивание-запись
= <---> val :C <---> mov ax,01234 mov cx,ax <--> Присваивание-запись
= <-----> B :C <---> mov ax,bx mov cx,ax <-----> Присваивание-запись
***
Знак операции - % (процент), употребляемый в Си для операции:
% <---> Остаток Деления, в языке LUX используется в операции:
%var <-----> xchg ax,var <-------> Обмен значений переменных,
поскольку операция деления выдаёт и остаток в другой регистр.
% <--> /C D:rest <-> idiv cx mov rest,dx <-----> Деление с Остатком
***
Следует отметить, что нижеследующие операции - вида:
+= <--> +:var <---> add var,ax <---------------> Сложение-запись
-= <--> -:var <---> sub var,ax <---------------> Вычитание-запись
*= <--> *:var <---> mov var,ax <---------------> Умножение-запись
/= <--> /:var <---> mov var,ax <---------------> Деление-запись
%= <--> %:var <---> xchg var,ax <--------------> Остаток-запись
+= <--> +:C <-----> add cx,ax <----------------> Сложение-запись
-= <--> -:C <-----> sub cx,ax <----------------> Вычитание-запись
*= <--> *:C <-----> mov cx,ax <----------------> Умножение-запись
/= <--> /:C <-----> mov cx,ax <----------------> Деление-запись
%= <--> %:C <-----> xchg cx,ax <---------------> Остаток-запись
>>= <-> >>vas <---> mov cx,vas shr ax,cl <-----> Сдвиг вправо-запись
<-----> :var <---> mov var,ax
<<= <-> "<<" vas <---> mov cx,vas shl ax,cl <--> Сдвиг влево-запись
<-----> :var <---> mov var,ax
>>= <-> >>B <-----> mov cx,bx shr ax,cl <------> Сдвиг вправо-запись
<-----> :C <-----> mov cx,ax
<<= <-> "<<" B <-----> mov cx,bx shl ax,cl <---> Сдвиг влево-запись
<-----> :C <-----> mov cx,ax
&= <--> &:var <---> and var,ax <---------------> Побитовое И-запись
|= <--> |:var <---> or var,ax <----------------> Побитовое ИЛИ-запись
^= <--> ^:var <---> xor var,ax <---------------> Побитовое ЛИБО-запись
&= <--> &:C <-----> and cx,ax <----------------> Побитовое И-запись
|= <--> |:C <-----> or cx,ax <-----------------> Побитовое ИЛИ-запись
^= <--> ^:C <-----> xor cx,ax <----------------> Побитовое ЛИБО-запись
- довольно редко употребляются в практическом программировании
на языке LUX - впрочем как и НА ЯЗЫКЕ СИ И ЯЗЫКЕ АССЕМБЛЕРА, а
обычно, употребляются более ТРАДИЦИОННЫЕ ОПЕРАЦИИ, упомянутые,
здесь, в самом начале этого раздела.
***
Следует особо отметить, что операции сравнения - вида:
< <---> <:var <----> cmp ax,var setl al cbw <--> Меньше
<= <--> <=:var <---> cmp ax,var setle al cbw <-> Меньше или равно
> <---> >:var <----> cmp ax,var setg al cbw <--> Больше
>= <--> >=:var <---> cmp ax,var setge al cbw <-> Больше или равно
= <---> =:var <----> cmp ax,var sete al cbw <--> Равно
!= <--> <>:var <---> cmp ax,var setne al cbw <-> Не равно
< <---> <:C <------> cmp ax,cx setl al cbw <---> Меньше
<= <--> <=:C <-----> cmp ax,cx setle al cbw <--> Меньше или равно
> <---> >:C <------> cmp ax,cx setg al cbw <---> Больше
>= <--> >=:C <-----> cmp ax,cx setge al cbw <--> Больше или равно
= <---> =:C <------> cmp ax,cx sete al cbw <---> Равно
!= <--> <>:C <-----> cmp ax,cx setne al cbw <--> Не равно
- с вычислением, и записью в регистр результата
- в виде логического значения булевской алгебры
- true или false - довольно редко употребляются
в практическом программировании на языке LUX, а
обычно, употребляются более компактные агрегаты
операторов условия, вида:
СТРУКТУРНЫЙ ОПЕРАТОР СРАВНЕНИЯ С ВЕТВЛЕНИЕМ
B>C @exec !
СТРУКТУРНЫЙ ОПЕРАТОР СРАВНЕНИЯ С ВЕТВЛЕНИЕМ
B>C @exec ? @exed !
СТРУКТУРНЫЙ ОПЕРАТОР СРАВНЕНИЯ И ЦИКЛА WHILE
[ B>C @body ]
СТРУКТУРНЫЙ ОПЕРАТОР ЦИКЛА WHILE И СРАВНЕНИЯ
[ @body B]>C
СТРУКТУРНЫЙ ОПЕРАТОР ЦИКЛА FOR++ И СРАВНЕНИЯ
[ B<=D @body ++B ]
СТРУКТУРНЫЙ ОПЕРАТОР ЦИКЛА FOR-- И СРАВНЕНИЯ
[B @body ]-
***
