{+}winsmall.inc {+}waphed.inc \ <--- ОПЕРАТОРЫ ВКЛЮЧЕНИЙ ТЕКСТА НА ЯЗЫКЕ ЛЮКС \

\ АНАЛОГИ АГРЕГАТОВ КОДА ОПЕРАТОРОВ И ДАННЫХ - В ЯЗЫКАХ СИ, ЛЮКС И АССЕМБЛЕРА \

$:datseg \ ----------------------------------------------------- DATA SEGMENT \
\
   int alpha,beta,gamma,delta ; - АГРЕГАТ ОПРЕДЕЛЕНИЯ СТАТЧЕСКИХ ДАННЫХ
\
   {{ alpha beta gamma delta }}

$= {~ ~} \ ------------------------------------------------- CONSTANT SECTION \
  
$@codseg \ ----------------------------------------------------- CODE SEGMENT \

   @@ExitProcess,1 \ <-- LUX-ОПЕРАТОР ВЫЗОВА ФУНКЦИИ (CALL) ИНТЕРФЕЙСА API-32 \

\
   alpha = beta + gamma * delta ; АРИФМЕТИЧЕСКОЕ ВЫРАЖЕНИЕ ПРИСВАИВАНИЯ
\
   gamma *delta +beta :alpha
\
   A108004200 mov eax,[000420008]
   F72D0C004200 imul d,[00042000C]
   030504004200 add eax,[000420004]
   A300004200 mov [000420000],eax
\

\ АГРЕГАТЫ ОПРЕДЕЛЕНИЯ ФУНКЦИЙ БЕЗ ПАРАМЕТРОВ

cond() { }
exec() { }
exed() { }
body() { }
\
cond() ;
exec() ;
exed() ;
body() ;
\
   00010020: C3 retn
   00010021: C3 retn
   00010022: C3 retn
   00010023: C3 retn
\

\ СТРУКТУРНЫЙ ОПЕРАТОР IF-THEN

   if ( cond() ) exec() ;
\
   @cond ?- @exec !
\
   00010024: E8F7FFFFFF call 000010020
   00010029: 0BC0 or eax,eax
   0001002B: 7405 je 000010032
   0001002D: E8EFFFFFFF call 000010021
   00010032:
\

\ СТРУКТУРНЫЙ ОПЕРАТОР IF-THEN-ELSE

   if ( cond() ) exec() ; else exed() ;
\
   @cond ?- @exec ? @exed !
\
   00010032: E8E9FFFFFF call 000010020
   00010037: 0BC0 or eax,eax
   00010039: 7407 je 000010042
   0001003B: E8E1FFFFFF call 000010021
   00010040: EB05 jmps 000010047
   00010042: E8DBFFFFFF call 000010022
   00010047:
\

\ СТРУКТУРНЫЙ ОПЕРАТОР ЦИКЛА WHILE

   while ( cond() ) body() ;
\
   [ @cond ?- @body ]
\
   00010047: E8D4FFFFFF call 000010020
   0001004C: 0BC0 or eax,eax
   0001004E: 740A je 00001005A
   00010050: E8CEFFFFFF call 000010023
   00010055: E9EDFFFFFF jmp 000010047
   0001005A:
\

\ СТРУКТУРНЫЙ ОПЕРАТОР ЦИКЛА DO-WHILE

   do body() ; while ( cond() ) ;
\
   [ @body @cond ]<>0
\
   0001005A: E8C4FFFFFF call
   000010023
   0001005F: E8BCFFFFFF call 000010020
   00010064: 3D00000000 cmp eax,000000000
   00010069: 75EF jne 00001005A
   0001006B:
\

\ СТРУКТУРНЫЙ ОПЕРАТОР ЦИКЛА FOR ++

   for ( i = 0; i <= delta; i++ ) body();
\
   B:=0 [ B<=delta @body ++B ]
\
   0001006B: 33DB xor ebx,ebx
   0001006D: 3B1D00004200 cmp ebx,[000420000]
   00010073: 7D0B jge 000010080
   00010075: E8A9FFFFFF call 000010023
   0001007A: 43 inc ebx
   0001007B: E9EDFFFFFF jmp 00001006D
   00010080:
\

\ СТРУКТУРНЫЙ ОПЕРАТОР ЦИКЛА FOR --

   for ( i = alpha; i > 0; i-- ) body();
\
   [alpha @body ]-
\
   00010080: 8B0D00004200 mov ecx,[000420000]
   00010086: E898FFFFFF call .000010023
   0001008B: E2F9 loop .000010086
   0001008D:
\

\ АРИФМЕТИЧЕСКОЕ ВЫРАЖЕНИЕ C УЧЁТОМ ВЕСОВ ОПЕРАЦИЙ

   alpha = beta + gamma * delta ;
\
   beta +( gamma *delta ) :alpha
\
A104004200 mov eax,[000420004]
   50 push eax
A108004200 mov eax,[000420008]
F72D0C004200 imul d,[00042000C]
   59 pop ecx
   03C1 add eax,ecx
A300004200 mov [000420000],eax
\

\ АРИФМЕТИЧЕСКОЕ ВЫРАЖЕНИЕ C УЧЁТОМ ВЕСОВ ОПЕРАЦИЙ

   alpha = beta + gamma * delta ;
\
   beta ( gamma *delta )+ :alpha
\
A104004200 mov eax,[000420004]
   50 push eax
A108004200 mov eax,[000420008]
F72D0C004200 imul d,[00042000C]
   59 pop ecx
   03C1 add eax,ecx
A300004200 mov [000420000],eax
\

\ СТРУКТУРНЫЙ ОПЕРАТОР СРАВНЕНИЯ С ВЕТВЛЕНИЕМ

   if ( b>c ) exec() ;
\
   B>C @exec !
\
   000100BF: 3BD9 cmp ebx,ecx
   000100C1: 7D05 jge 0000100C8
   000100C3: E859FFFFFF call 000010021
   000100C8:
\

\ СТРУКТУРНЫЙ ОПЕРАТОР СРАВНЕНИЯ С ВЕТВЛЕНИЕМ

   if ( b>c ) exec() ; else exed() ;
\
   B>C @exec ? @exed !
\
   000100C8: 3BD9 cmp ebx,ecx
   000100CA: 7D07 jge 0000100D3
   000100CC: E850FFFFFF call 000010021
   000100D1: EB05 jmps 0000100D8
   000100D3: E84AFFFFFF call 000010022
   000100D8:
\

\ СТРУКТУРНЫЙ ОПЕРАТОР СРАВНЕНИЯ И ЦИКЛА WHILE

   while ( b>c ) body() ;
\
   [ B>C @body ]
\
   000100D8: 3BD9 cmp ebx,ecx
   000100DA: 7D0A jge 0000100E6
   000100DC: E842FFFFFF call 000010023
   000100E1: E9F2FFFFFF jmp 0000100D8
   000100E6:
\

\ СТРУКТУРНЫЙ ОПЕРАТОР ЦИКЛА WHILE И СРАВНЕНИЯ

   do body() ; while ( b>c ) ;
\
   [ @body B]>C
\
   000100E6: E838FFFFFF call 000010023
   000100EB: 3BD9 cmp ebx,ecx
   000100ED: 7CF7 jl 0000100E6
\

\ СТРУКТУРНЫЙ ОПЕРАТОР ЦИКЛА FOR++ И СРАВНЕНИЯ

   for ( b = 0; b<=d ; b++ ) body();
\
   B:=0 [ B<=D @body ++B ]
\
   000100EF: 33DB xor ebx,ebx
   000100F1: 3BD9 cmp ebx,ecx
   000100F3: 7D0B jge 000010100
   000100F5: E829FFFFFF call 000010023
   000100FA: 43 inc ebx
   000100FB: E9F1FFFFFF jmp 0000100F1
   00010100:
\

\ СТРУКТУРНЫЙ ОПЕРАТОР ЦИКЛА FOR-- И СРАВНЕНИЯ

   for ( c = b; c > 0; c-- ) body();
\
   [B @body ]-
\
   00010100: 8BCB mov ecx,ebx
   00010102: E81CFFFFFF call .000010023
   00010107: E2F9 loop .000010102
\

\ СКОБОЧНЫЕ АРИФМЕТИЧЕСКИЕ ВЫРАЖЕНИЯ C УЧЁТОМ ВЕСОВ ОПЕРАЦИЙ

   alpha = beta + gamma * delta / ( beta * beta ) ;
\
   gamma *delta +beta /( beta *beta ) :alpha
\
   00010109: A108004200 mov eax,[000420008]
   0001010E: F72D0C004200 imul d,[00042000C]
   00010114: 030504004200 add eax,[000420004]
   0001011A: 50 push eax
   0001011B: A104004200 mov eax,[000420004]
   00010120: F72D04004200 imul d,[000420004]
   00010126: 59 pop ecx
   00010127: 91 xchg ecx,eax
   00010128: F7F9 idiv ecx
   0001012A: A300004200 mov [000420000],eax
\
   gamma *delta +beta ( beta *beta )/ :alpha
\
   0001012F: A108004200 mov eax,[000420008]
   00010134: F72D0C004200 imul d,[00042000C]
   0001013A: 030504004200 add eax,[000420004]
   00010140: 50 push eax
   00010141: A104004200 mov eax,[000420004]
   00010146: F72D04004200 imul d,[000420004]
   0001014C: 59 pop ecx
   0001014D: 91 xchg ecx,eax
   0001014E: F7F9 idiv ecx
   00010150: A300004200 mov [000420000],eax
\
   beta *beta ( gamma *delta +beta )C /C :alpha
\
   00010155: A104004200 mov eax,[000420004]
   0001015A: F72D04004200 imul d,[000420004]
   00010160: 50 push eax
   00010161: A108004200 mov eax,[000420008]
   00010166: F72D0C004200 imul d,[00042000C]
   0001016C: 030504004200 add eax,[000420004]
   00010172: 59 pop ecx
   00010173: F7F9 idiv ecx
   00010175: A300004200 mov [000420000],eax
\

{+}wapend.inc

~~


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

Но абсолютно тот же логический постулат можно достоверно дать и для языка Люкс, то есть:

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

Любому программисту должно быть понятно, что трудоёмкость разработки программы на языке Си меньше, чем на языке ассемблера, исключительно за счёт более эффективных свойств структурного программирования в языке Си, нежели чем в языке ассемблера.

Но абсолютно тот же логический постулат можно достоверно дать и для языка Люкс, то есть:

Любому программисту должно быть понятно, что трудоёмкость разработки программы на языке Люкс меньше, чем на языке ассемблера, исключительно за счёт более эффективных свойств структурного программирования в языке Люкс, нежели чем в языке ассемблера.

Любому программисту должно быть понятно, что для любого структурного агрегата-оператора языка Си, по существу можно видеть наличие точно такого же по назначению структурного агрегата операторов языка Люкс, а именно:

СТРУКТУРНЫЙ ОПЕРАТОР IF-THEN

if ( cond() ) exec() ; <-------> @cond ?- @exec !

СТРУКТУРНЫЙ ОПЕРАТОР IF-THEN-ELSE

if ( cond() ) exec() ; else exed() ; <-------> @cond ?- @exec ? @exed !

СТРУКТУРНЫЙ ОПЕРАТОР ЦИКЛА WHILE

while ( cond() ) body() ; <-------> [ @cond ?- @body ]

СТРУКТУРНЫЙ ОПЕРАТОР ЦИКЛА DO-WHILE

do body() ; while ( cond() ) ; <-------> [ @body @cond ]<>0

СТРУКТУРНЫЙ ОПЕРАТОР ЦИКЛА FOR ++

for ( i = 0; i <= delta; i++ ) body(); <---> B:=0 [ B<=delta @body ++B ]

СТРУКТУРНЫЙ ОПЕРАТОР ЦИКЛА FOR --

for ( i = alpha; i > 0; i-- ) body(); <-------> [alpha @body ]-

СТРУКТУРНЫЙ ОПЕРАТОР СРАВНЕНИЯ С ВЕТВЛЕНИЕМ

if ( b>c ) exec() ; <-------> B>C @exec !

СТРУКТУРНЫЙ ОПЕРАТОР СРАВНЕНИЯ С ВЕТВЛЕНИЕМ

if ( b>c ) exec() ; else exed() ; <-------> B>C @exec ? @exed !

СТРУКТУРНЫЙ ОПЕРАТОР СРАВНЕНИЯ И ЦИКЛА WHILE

while ( b>c ) body() ; <-------> [ B>C @body ]

СТРУКТУРНЫЙ ОПЕРАТОР ЦИКЛА WHILE И СРАВНЕНИЯ

do body() ; while ( b>c ) ; <-------> [ @body B]>C

СТРУКТУРНЫЙ ОПЕРАТОР ЦИКЛА FOR++ И СРАВНЕНИЯ

for ( b = 0; b<=d ; b++ ) body(); <-------> B:=0 [ B<=D @body ++B ]

СТРУКТУРНЫЙ ОПЕРАТОР ЦИКЛА FOR-- И СРАВНЕНИЯ

for ( c = b; c > 0; c-- ) body(); <-------> [B @body ]-

***

Как видно, язык Люкс имеет тот же набор более компактных структурных операторов типа IF-ELSE и DO-WHILE-FOR, что и язык Си, к тому же язык Люкс также как и Си имеет операторы SWITCH.

Это означает, что язык Люкс имеет не меньшие структурные возможности структурного программирования, чем язык Си, что разительно отличает язык Люкс от языка макроассемблера, но по быстродействию и компактности исполняемого кода язык Люкс имеет не меньшие возможности, чем язык макроассемблера.

Таким образом, язык Люкс объединяет лучшие достоинства языков Си и Макроассемблера, избавляясь от их недостатков.

Я вовсе не призываю себя или кого-либо сразу бросать программировать на любых существующих языках, но программирование на языке Люкс может существенно расширить каждому свой диапазон возможностей и инструментов программирования, поскольку язык Люкс очень эффективен в разработке часто используемых стандартизованных объектных функций и инструментальных программ.

При конструктивном подходе и взаимном интересе я буду рад помочь любому, действительно - желающему того, в практическом освоении системы программирования на языке Люкс.

Это помогло бы Вам в более глубоком освоении самого искусства программирования, и у Вас был бы больший диапазон выбора языков и инструментов программирования.

Удачи Вам!

E-mail: pancov@mail.ru

***

Agregate.luc Краткий пример LUX-программирования агрегатов операторов и данных.

Agregate.luc Copyright(c) 2006 Victor M.Pancov Russia Obninsk

Free Web Hosting