首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >stdcall浮点参数

stdcall浮点参数
EN

Stack Overflow用户
提问于 2015-05-05 13:24:43
回答 1查看 385关注 0票数 6

使用D内联程序集im试图实现动态调用stdcall函数(使用动态参数)

我有下面的程序集,args是一个32位整数数组的空指针,argc是参数数,ret是空指针,地址是函数地址。

代码语言:javascript
复制
 MOV EBX, 0;
 iterator:
 MOV EAX, DWORD PTR [args];
 PUSH EAX;
 ADD EBX, 1;
 ADD EAX, 4;
 CMP EBX, DWORD PTR argc;
 JNE iterator;
 MOV EAX, ADDress;
 CALL EAX;
 MOV [ret], EAX;
 RET 0;

浮点参数是如何传递的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-29 00:23:39

微软在这个问题上非常沉默。

这是因为stdcall只用于WinAPI调用。

而且,据我所知,没有接受浮点参数的WinAPI调用。

to --我可以找到的文档 --所有参数都被推送到堆栈上。

这包括浮点参数。

如果我在编译器中编译了以下代码片段,它就会确认如下:

代码语言:javascript
复制
void __stdcall test3(double a, double b, double c) {
};     
.....
test3(a,b,c);
.....
//This produces the following code as per the stdcall convention. 
004182B4 55               push ebp
004182B5 8BEC             mov ebp,esp
004182B7 83C4E8           add esp,-$18
004182BA FF75EC           push dword ptr [ebp-$14]
004182BD FF75E8           push dword ptr [ebp-$18]
004182C0 FF75F4           push dword ptr [ebp-$0c]
004182C3 FF75F0           push dword ptr [ebp-$10]
004182C6 FF75FC           push dword ptr [ebp-$04]
004182C9 FF75F8           push dword ptr [ebp-$08]
004182CC E8ABFFFFFF       call Test3

注意,在ST(0)中返回浮点返回值。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30054280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档