DOS 中的 asm ("fldl %0"...),Intel 语法?
asm ("fldl %0"...) in DOS, Intel syntax?
我正在做一个复古项目,试图在 Borland Turbo C++/DosBox 中编译一些测试代码。
我有这个功能:
double sin(double x){
asm ("fldl %0;"
"fsin;"
"fstpl %0" : "+m"(x));
return x;
}
我算出来了 returns 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 编译了类似的代码
我正在做一个复古项目,试图在 Borland Turbo C++/DosBox 中编译一些测试代码。
我有这个功能:
double sin(double x){
asm ("fldl %0;"
"fsin;"
"fstpl %0" : "+m"(x));
return x;
}
我算出来了 returns 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 编译了类似的代码