FPU命令FCOMP和FCOMI中的好奇标志

时间:2015-06-28 23:03:41

标签: assembly nasm flags fpu

在执行fcomp-Operation之后,我对fpu中标志的行为有疑问。 fpu-stack没有溢出,在两个代码片段中都是参与比较操作的相同值。

为什么此代码有效:

fldz                ;[0] 
fadd dword [esp+4]  ;[x]
fld1                ;[1][x]
fcomip st0, st1     ;compare 1, x
                    ;[x] because fcomip pops the 1
je xeins            ;falls x = 1: special routine
fld1                ;[1][x]
fxch st0, st1       ;[x][1]
fcomi st0, st1      ;compare x, 1
jc xinval           ;if x < 1 (carry = 1): special routine

这段代码不是吗?

fldz                ;[0] 
fadd dword [esp+4]  ;[x]
fld1                ;[1][x]
fcomip st0, st1     ;compare 1, x
                    ;[x] because fcomip pops the 1
je xeins            ;if x = 1: special routine
fld1                ;[1][x]
fcomip st0, st1     ;compare x, 1
jc xinval           ;if x < 1 (carry = 1): special routine

0 个答案:

没有答案