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

问题描述

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

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...