所以,我希望能够从 c++ dll 调用函数。出于某些原因,我想从我的 C++ 代码中的 __asm 块中调用它们。我的问题是:我知道在调用函数之前,我必须按照函数调用约定指定的顺序将其参数推送到堆栈上。但是,我可以简单地做这样的事情吗:
int a=5;
double b = 5.0;
__asm{
push b
push a
call functionAddress
}
让我担心的是,我似乎记得汇编中的标准字大小是 2 字节,而 C++ 中 int 的大小通常是 4 字节,而双精度则为 8 字节。所以,在上面的例子中,我真的是推送每个变量的完整值,还是仅推送前几个字节?如果上面的代码不正确,那么正确的方法是什么?另外,如果我们调用的函数返回一个双精度值,这个值存储在哪里?我假设它不能在寄存器中,因为它只能存储 32 位(4 字节)。对于这个混乱的任何帮助将不胜感激:)