汇编:在使用堆栈时将参数传递给函数是否有任何优势?

问题描述

| 我想知道以汇编语言使用堆栈将参数传递给函数是否有任何优势。   这是我的意思:
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
基本上只是一个内置宏,无论如何它将扩展为几乎相同的代码。