【发布时间】:2017-01-02 20:09:32
【问题描述】:
我必须在 asm 中编写函数,并且我在 C 中有原型
void fdct(float *in, float *out, unsigned int n);
地点:
-
in:指向传入数据缓冲区的指针 -
out:指向输出数据缓冲区的指针 -
n:数据矩阵的数量。
函数不返回任何内容,但适用于输出数据数组,并且必须根据结果进行更改。
据我了解,在 cdecl 堆栈中将如下所示:
esp: ret
esp+4: *in - address
esp+8: *out - address
esp+12: value of n
我知道了,如何在 asm 中使用传入缓冲区,但我不明白如何返回传出缓冲区的新地址 - 只是将新地址放入 esp+8 不会产生结果,它不会改变*out。我该如何解决这个问题?
【问题讨论】:
-
您使用的是什么操作系统?与 Windows 相比,*nix 上的
cdecl调用约定略有不同。 -
Windows,我忘了这个。