nasm拒绝fst tword [mem] --- bug?

时间:2018-04-25 07:04:15

标签: nasm x87

fst tword [mem]在nasm下生成编译错误(生成“错误:操作码和操作数的无效组合”)。

fst qword [mem]被nasm接受。

fstp tword [mem]fstp qword [mem]都被nasm接受。

这是nasm中的错误吗?

1 个答案:

答案 0 :(得分:1)

来自英特尔的手册:

FST/FSTP—Store Floating Point Value

Opcode   Instruction  64-Bit   Compat/Leg  Description
                      Mode     Mode
----------------------------------------------------------------------
D9 /2    FST m32fp   Valid     Valid       Copy ST(0) to m32fp.
DD /2    FST m64fp   Valid     Valid       Copy ST(0) to m64fp.
DD D0+i  FST ST(i)   Valid     Valid       Copy ST(0) to ST(i).
D9 /3    FSTP m32fp  Valid     Valid       Copy ST(0) to m32fp and pop register stack.
DD /3    FSTP m64fp  Valid     Valid       Copy ST(0) to m64fp and pop register stack.
DB /7    FSTP m80fp  Valid     Valid       Copy ST(0) to m80fp and pop register stack.
DD D8+i  FSTP ST(i)  Valid     Valid       Copy ST(0) to ST(i) and pop register stack.

正如您所看到的,m80fp没有tword(即FST)变种,但FSTP有。{/ p>