`Kopa писал(а):
: action 1 . ;
: a BEGIN action 1+ DUP WHILE REPEAT DROP ;
Почему не упрощается связка команд
Код:
57A7DA 0F8402000000 JE 57A7E2 ( a+F )
57A7E0 EBF2 JMP 57A7D4
Если между WHILE REPEAT нет операции они заменяются на 0= UNTIL
Код:
: a BEGIN action 1+ DUP 0= UNTIL DROP ;
SEE a
579AC3 90 XCHG EAX, EAX
579AC4 E8B6FFFFFF CALL 579A7F ( action )
579AC9 40 INC EAX
579ACA 75F8 JNE 579AC4
579ACC 8B4500 MOV EAX , 0 [EBP]
579ACF 8D6D04 LEA EBP , 4 [EBP]
579AD2 C3 RET NEAR
По моему, еще рано переходить к оптимизации нелинейного кода.
`Kopa писал(а):
не совсем логично образование второй цепочки если следовать
логике первого посыла.
По моему, уже не улучшить
Код:
REQUIRE DoDTST ~mak\OptTr.f
: a OVER +
[ ' DoDTST TO DTST ]
SWAP ;
-1 552414 7C817077 579A5F
579A5F 034500 ADD EAX , 0 [EBP]
END-CODE
-1 552417 7C817077 579A5F
579A5F 034500 ADD EAX , 0 [EBP]
579A62 8B5500 MOV EDX , 0 [EBP]
END-CODE
SWAP ;
288 552417 7C817077 579A5F
579A5F 034500 ADD EAX , 0 [EBP]
579A62 8B5500 MOV EDX , 0 [EBP]
END-CODE
289 0 552417 579A5F
579A5F 8B5500 MOV EDX , 0 [EBP]
579A62 03C2 ADD EAX , EDX
END-CODE
-1 552417 7C817077 579A5F
579A5F 8B5500 MOV EDX , 0 [EBP]
579A62 03C2 ADD EAX , EDX
END-CODE
-1 55241A 7C817077 579A5F
579A5F 8B5500 MOV EDX , 0 [EBP]
579A62 03C2 ADD EAX , EDX
579A64 894500 MOV 0 [EBP] , EAX
END-CODE
-1 55241C 7C817077 579A5F
579A5F 8B5500 MOV EDX , 0 [EBP]
579A62 03C2 ADD EAX , EDX
579A64 894500 MOV 0 [EBP] , EAX
579A67 8BC2 MOV EAX , EDX
END-CODE
-1 5528A4 7C817077 579A5F
579A5F 8B5500 MOV EDX , 0 [EBP]
579A62 03C2 ADD EAX , EDX
579A64 894500 MOV 0 [EBP] , EAX
579A67 8BC2 MOV EAX , EDX
579A69 C3 RET NEAR