; int a=10;
; int b=20;
; int c=4;
; a = (a << c) * (a>>c) / ((c ^ a) | (c ^b )) - (++c + --a)
; 部分示例:
mov eax , 10 ; eax = 10
mov ebx , 20 ; ebx = 20
mov ecx , 4 ; ecx = 4
; a << c ==> temp1
push eax ; 将eax的值保存到栈
shl eax , ecx ;
xchg eax , [esp] ; 交换栈顶和eax的值, 交换后栈顶保存的是 temp1
; a>>c ==> temp2
push eax
shr eax , ecx
xchg eax , [esp] ; 交换栈顶和eax的值, 交换后栈顶保存的是 temp2
; temp1 * temp2 ==> temp3
push eax ; esp + 4
mov eax , [esp+4]; temp2 : esp+4
imul [esp+8] ; temp1 : esp+8
xchg eax , [esp] ; temp3 : [esp+0]
; c ^ a ==> temp4
; c ^b ==> temp5
; temp4 | temp5 ==> temp6
; temp3 / temp6 ==> temp7
; ++c
; --a
;c + a ==> temp8
; temp7 - temp8