Сценариями или x86-скриптами мною назван инкапсулированный машинный код, в котором синтаксис и логика некоторых инструкций достаточно отличается от оригинального поведения команд.
Так, вместо команд условного перехода имеются команды организации условной блочной иерархии.
Так, вместо команд обращения к ячейкам памяти подставляются команды арифметических действий.
Так, вместо команд вызова подпрограмм и обращения к функциям выполняются иные процессы...
Когда тестируешь разные фрагменты каких-то алгоритмов, очень хочется обойти процесс компиляции и запуска отладки. При этом работать как бы в горячем режиме. В электронике это - тыкать пинцетом в разные узлы схемы под напряжением. Опасно, но так быстрее...
Система команд:
ADD EAX,[EBX+ECX*4] || ADD EAX,(EBX+ECX*4) >> PUSH EAX >> LEA EAX,[EBX+ECX*4] >> ADD [ESP],EAX >> POP EAX ADD [EBX+ECX*4],EAX || ADD (EAX,(EBX+ECX*4)) >> PUSH EAX >> LEA EAX,[EBX+ECX*4] >> XCHG [ESP],EAX >> ADD [ESP],EAX >> POP EAX
Все операнды инструкции указываются перед ней.
Допускается два варианта:
1. Ряд приёмников; Один источник; Инструкция;
2. Ряд источников; Один приёмник; Инструкция.
Операнды инструкции группируются по общему старшему значащему биту:
-------Z:Zero Flag ------C-:Carry Flag -----P--:Parity Flag ----N---:Negative Flag ---O----:Overflow Flag --S-----:Saturate Lock ----01-1:Result is MAX (+127; +32767; ...) ----10-1:Result is NOP (-128; -32768; ...) ----11-1:Result is TRUE (-1) ----0000:--- ----0001:ZF=1 ----0010:CF=1 ----0011: ----0100:PF=1 ----0101:+127 ----0110: 00000000 |BRK 00000xxx |DF1-DF7 00001000 |REP 00001001 | 00001010 |ABBR 00001011 |BASE 00001100 |CALC 00001101 |DATA 00001110 |EMIT 00001111 |FILE 0111cond 00000000 |COVER.cond |WHILE cond DO 0111cond 0xxxxxxx |COVER.cond 1..127|IF cond CONTINUE x 0111cond 10000000 |AVOID.cond |WHILE cond 0111cond 1xxxxxxx |AVOID.cond 127..1|IF cond BREAK x 10000000 |NOP 11111111 |HLT 70 00 |COVER |DO 70 00 |COVER | DO 70 80 |AVOID | END 70 80 |AVOID ... 0xxxxxxx 1iiiiiii |operation x 0xxxxxxx 0yyyyyyy 1iiiiiii|operation x,y 0xxxxxxx 00000000 1iiiiiii|operation xx 0xxxxxxx 00000000 10000000|operation xxx 0xxxxxxx 10000000 | 0xxxxxxx 0yyyyyyy 1zzzzzzz operation 1xxxxxxx 1yyyyyyy 0zzzzzzz operation 84 83 82 01 DA S4 S3 S2 R1 DA|_DA_ R1,S2;S3;S4 04 03 02 81 DA R4 R3 R2 S1 DA|_DA_ S1,R2;R3;R4 80 DA |_DA_ ... 80 80 |NOP ... 00|END 80|NOP FF|HLT
Тема в архиве.