1. ; int a=10;
    2. ; int b=20;
    3. ; int c=4;
    4. ; a = (a << c) * (a>>c) / ((c ^ a) | (c ^b )) - (++c + --a)
    5. ; 部分示例:
    6. mov eax , 10 ; eax = 10
    7. mov ebx , 20 ; ebx = 20
    8. mov ecx , 4 ; ecx = 4
    9. ; a << c ==> temp1
    10. push eax ; eax的值保存到栈
    11. shl eax , ecx ;
    12. xchg eax , [esp] ; 交换栈顶和eax的值, 交换后栈顶保存的是 temp1
    13. ; a>>c ==> temp2
    14. push eax
    15. shr eax , ecx
    16. xchg eax , [esp] ; 交换栈顶和eax的值, 交换后栈顶保存的是 temp2
    17. ; temp1 * temp2 ==> temp3
    18. push eax ; esp + 4
    19. mov eax , [esp+4]; temp2 : esp+4
    20. imul [esp+8] ; temp1 : esp+8
    21. xchg eax , [esp] ; temp3 : [esp+0]
    22. ; c ^ a ==> temp4
    23. ; c ^b ==> temp5
    24. ; temp4 | temp5 ==> temp6
    25. ; temp3 / temp6 ==> temp7
    26. ; ++c
    27. ; --a
    28. ;c + a ==> temp8
    29. ; temp7 - temp8