64位系统中运行时函数动态参数数量怎么实现

QunKangLi 2017-04-10 10:34:44
加载一个dll,接口函数的名称,参数的数量类型是xml中读出来的。现在w32系统下的实现方式是用内联汇编将参数入栈,然后不带参数调用接口函数,最后汇编恢复堆栈指针。
现在需要升级系统到64位,64位不支持内联汇编并使用fastcall.应该怎么搞能实现功能?
...全文
154 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
QunKangLi 2017-04-10
  • 打赏
  • 举报
回复
支持不同长度参数,但浮点数和整数混合没搞定,因为浮点数参数用的是mmx#寄存器,整数参数用常规寄存器
赵4老师 2017-04-10
  • 打赏
  • 举报
回复
赵4老师 2017-04-10
  • 打赏
  • 举报
回复
使用ml64位版,仿照编译器自带的若干.asm例子,编写64位外部汇编代码。
QunKangLi 2017-04-10
  • 打赏
  • 举报
回复
目前的思路是:接口函数定义为一个64个参数的函数,使用xml的格式数据给前几个有效参数赋值。正在测试不同参数的表现……
QunKangLi 2017-04-10
  • 打赏
  • 举报
回复
前4个参数赋值到double变量,调用一个占位函数用于设置mmx寄存器,然后在调用接口函数,好像可行。
设需要使用参数n1 f2 n3 f4,那么可以:
void fum_dummy(){;}
……
np1=n1;np2=f2;np3=n3;np4=f4;
fp1=n1;fp2=f2;fp3=n3;fp4=f4;
fun_dummy(fp1,fp2,fp3,fp4);
fun(np1,np2,np3,np4);//dll函数


继续测试中

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧