可以通过以下方式完成:
mov esi, esp
push arg3
push arg2
push arg1
call [SomeExternalProc]
mov esp, esi ; now the stack is always properly cleaned
Run Code Online (Sandbox Code Playgroud)
外部过程将保留 esi。或者您可以使用外部过程甚至内存变量保留的任何其他寄存器 - 本地或全局。
很好,CDECL 和 STDCALL 的参数顺序是相同的 - 顺序相反。(最左边的 arg 位于最低地址。)因此,除了 ESP 返回时指向的位置之外,它们是兼容的。两个约定都同意哪些寄存器是调用保留的,哪些是调用破坏的。
| 归档时间: |
|
| 查看次数: |
398 次 |
| 最近记录: |