我目前正在C/C++中使用一些ASM
我有以下
__declspec(naked) unsigned long
someFunction( unsigned long inputDWord )
{
__asm
{
}
}
在 ASM 中,我将如何返回未签名的长篇?
我是否需要将某些内容推送到堆栈上,然后调用 ret?我已经很久没有使用过Asm了,以前也从来没有在C++里面使用过。
谢谢!
编辑:感谢@Matteo Italia,我已经纠正了ret
的用法。
将 retval 放入eax
登记册中,这是根据__cdecl
和__stdcall
惯例。
然后,根据调用约定,应使用ret
指令的相应变体:
- 在约定(或类似)的情况下
__cdecl
- 使用ret
.在计算机级别,这意味着从堆栈中pop
返回地址并jmp
到堆栈。调用方负责从堆栈中删除所有函数参数。 - 在约定(或类似)的情况下
__stdcall
- 使用ret X
,而X
是所有函数参数的大小。