再来看看编译器生成的代码做了什么
首先
mov esi,esp
保存了栈顶地址
之后把变量pTYPE的地址压入了栈,顺便还压进两个数0x40 0x10,这里明显可以优化,两个push byte完全可以用push dword替代。
之后取了另外一个变量的值并入栈
还调用了一个内存管理函数
最后又保存了esp
很奇怪的是后面部分似乎没用的上面涉及的变量。。。。
难怪不对了,寄存器都动过了还没还原
mov esi,esp
保存了栈顶地址
之后把变量pTYPE的地址压入了栈,顺便还压进两个数0x40 0x10,这里明显可以优化,两个push byte完全可以用push dword替代。
之后取了另外一个变量的值并入栈
还调用了一个内存管理函数
最后又保存了esp
很奇怪的是后面部分似乎没用的上面涉及的变量。。。。
难怪不对了,寄存器都动过了还没还原