【发布时间】:2021-04-01 17:35:39
【问题描述】:
Masm 允许在指令之前使用不同的 cpu 组合,但某些组合不能正确检测需要等待前缀的协处理器指令,并且在需要等待前缀时会导致没有等待前缀。以下组合将导致它们之后的任何数学协处理器指令没有等待前缀:
example 1: .386 .8087 ;now enter math coprocessor instruction example 2: .286 .8087 ;now enter math coprocessor instruction example 3: .386 .287 ;now enter math coprocessor instruction
如果使用数学协处理器指令,则不会创建等待前缀(通常由 MASM 创建)。以下是本应有等待前缀但没有等待前缀的说明:
FRSTOR,FFREE,FDECSTP,FINCSTP,FLDENV,FLDCW FLD,FST,FSTP,FXCH,FLDZ,FLD1,FLDPI,FLDL2E,FLDL2T, FLDLG2,FLDLN2,FILD,FIST,FISTP,FBLD,FBSTP,FCOM, FCOMP,FCOMPP,FICOM,FICOMP,FXAM,FADD,FADDP, FMUL,FMULP,FSUB,FSUBP,FSUBR,FSUBRP,FDIV,FDIVP, FDIVR、FDIVRP、FABS、FCHS、FSQRT、FRNDINT、FIADD、FIMUL、 FISUB,FISUBR,FIDIV,FIDIVR,FPTAN,FPATAN,F2XM1,FSCALE, FYL2X,FYL2XP1,FPREM,FPREM1,FXTRACT,FSETPM 和 FNOP
这些指令不受影响:
FCLEX,FNCLEX,FSAVE,FNSAVE,FENI,FNENI,FDISI,FNDISI, FSTENV,FNSTENV,FINIT,FNINIT,FSTSW,FNSTSW,FSTCW 和 FNSCW
这是一个错误吗?我没有找到提到这一点的文档 行为。我没有更新版本的 MASM 来查看这是否已修复。 我的版本是masm v6。
【问题讨论】:
标签: assembly x86 masm masm32 x87