如何比较 masm x86 中的 esp?
How to compare esp in masm x86?
我在 MASM x86 中有一个没有序言的函数。我想比较传递给函数的堆栈上的参数。
.MODEL flat
extern x:dword
foo proc
cmp esp+4, x
...
foo endp
我也试过 DWORD PTR [esp+4],x
,但还是不行。我不想搞乱从堆栈弹出或其他任何东西,因为这只是一个转发功能。我的问题基本上是为什么我不能直接将堆栈上的 arg 与全局变量进行比较?如果不可能,请告诉我另一种解决方法。
x86 不支持直接比较两个内存位置。您需要先将其中一个移动到寄存器中(最好是eax
),然后使用寄存器进行比较:
MOV EAX, x
CMP DWORD PTR [ESP + 4], EAX
我在 MASM x86 中有一个没有序言的函数。我想比较传递给函数的堆栈上的参数。
.MODEL flat
extern x:dword
foo proc
cmp esp+4, x
...
foo endp
我也试过 DWORD PTR [esp+4],x
,但还是不行。我不想搞乱从堆栈弹出或其他任何东西,因为这只是一个转发功能。我的问题基本上是为什么我不能直接将堆栈上的 arg 与全局变量进行比较?如果不可能,请告诉我另一种解决方法。
x86 不支持直接比较两个内存位置。您需要先将其中一个移动到寄存器中(最好是eax
),然后使用寄存器进行比较:
MOV EAX, x
CMP DWORD PTR [ESP + 4], EAX