nasm 拒绝第一个词 [mem] --- 错误?
nasm rejects fst tword [mem] --- bug?
fst tword [mem]
在nasm下生成编译错误(生成"error: invalid combination of opcode and operands")。
fst qword [mem]
被 nasm 接受。
fstp tword [mem]
和 fstp qword [mem]
都被 nasm 接受。
这是 nasm 中的错误吗?
来自英特尔的手册:
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.
如您所见,FST
没有 m80fp
(即 tword
)变体,但有 FSTP
.
fst tword [mem]
在nasm下生成编译错误(生成"error: invalid combination of opcode and operands")。
fst qword [mem]
被 nasm 接受。
fstp tword [mem]
和 fstp qword [mem]
都被 nasm 接受。
这是 nasm 中的错误吗?
来自英特尔的手册:
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.
如您所见,FST
没有 m80fp
(即 tword
)变体,但有 FSTP
.