我正在研究一个复古项目,试图在Borland Turbo C ++ / DosBox中编译一些测试代码。
我有这个功能:
double sin(double x){
asm ("fldl %0;"
"fsin;"
"fstpl %0" : "+m"(x));
return x;
}
我认为它返回x的sin值,但我失败了。
错误是:未定义的符号'fldl'
任何人都可以在Intel asm语法中解释这个功能吗?
我无法弄清楚,我只编写了16位DOS asm代码而没有浮点数。
亲切的问候/雅各布
问题是目标CPU必须至少为386。
所以功能应该是:
double sin(double x){
asm{
fld qword ptr [x]
fsin
fstp qword ptr [x]
}
return x;
}
在.MODEL“size”之后我得到了类似的代码,用TASM编译.386