【发布时间】:2013-02-17 08:42:07
【问题描述】:
我最近一直在使用 Visual C++ 中的内联汇编,我想知道是否可以直接将值添加到堆栈上的局部变量,例如:
push 5
add [esp], 7
这样做可以吗?我在问,因为我随机遇到了一些奇怪的问题(尽管大多数时候它工作正常),但是如果我通过一个寄存器我从来没有任何问题,就像这样:
push 5
mov eax, [esp]
add eax, 7
mov [esp], eax
【问题讨论】:
-
您的“奇怪问题”的性质是什么?头发长在奇怪的地方?不合时宜的花开?
-
基本上在某些时候我没有得到我期望得到的值,就好像堆栈被损坏了一样。
-
可能编译器无法正确评估指针的大小。尝试使用:添加 DWORD PTR [esp], 7
-
您是否尝试过在 OllyDbg 之类的程序集调试器下运行它以检查它是否按照您的想法执行?
-
内置调试器可以显示反汇编和单步执行指令,无需OllyDbg。