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 编译了类似的代码