如何解决汇编:在使用堆栈时将参数传递给函数是否有任何优势?
| 我想知道以汇编语言使用堆栈将参数传递给函数是否有任何优势。 这是我的意思:readString PROTO :DWORD ;Prototype for function
;Now we call the function by moving a DWORD value into eax and pushing eax
mov eax,FAD37EABh
push eax
CALL readString
与下面的方法相比,使用此方法有什么优势吗?
INVOKE readString,FAD37EABh
问候,
德吉耶
解决方法
不,最终代码没有区别,但是非常方便。这是一个宏,可自动检查参数类型是否匹配,从而帮助您发现错误。当然,
invoke readString,eax
或push eax; call readString
几乎相同,但是假设您需要使用它们的数千个参数调用Win32 \ a API:
推送NULL
推送提示
推送NULL
推送NULL
推200
推300
推CW_USEDEFAULT
推CW_USEDEFAULT
推送WS_OVERLAPPEDWINDOW
推送地址Appame
推送地址Classame
推送WS_EX_CLIENTEDGE
呼叫CreateWindowEx
调用CreateWindowEx,WS_EX_CLIENTEDGE,ADDR ClassName,ADDR AppName,\\
WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,\\
CW_USEDEFAULT,300,200,NULL,NULL,\\
hInst,NULL
在这种情况下,解开“ 4”会更有帮助和可读性。
,并不是的; invoke
基本上只是一个内置宏,无论如何它将扩展为几乎相同的代码。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。