11.3.4 比较类指令等
11.3.4 比较运算指令
使用比较指令是将栈顶中的数与其它操作数进行比较,比较结果存于状态寄存器的条件编码位C3~C0处(参阅表11.2)。具体的比较运算指令及其功能描述如表11.5所列。
表11.5 比较运算指令及其功能
指令格式 | 指令的功能 |
FCOM | 将栈顶数据与另一个操作数进行比较,该操作数可以存储在堆栈寄存器中,也可存储在内存中。 |
FCOMP/FCOMPP | 此指令的比较功能与FCOM相一致,所不同的是指出从堆栈中弹出一个,还是二个数据。 |
FICOM MemInt | 栈顶数据与内存单元进行整数比较。指令FICOMP还要弹出栈顶数据。 |
FUCOM [STReg] | 反向比较,其功能与上面同类指令类似。 |
FTST | 栈顶数据与0进行比较。比较结果对条件编码位的影响如表11.2所示。 |
FXAM | 检测栈顶数据是正数、负数,还是规格化数。比较结果对条件编码位的影响如表11.2所示。 |
11.3.5 超越函数运算指令
超越函数运算指令是用来实现三角函数或一些特殊的算术表达式而设置的,具体的指令及其功能说明如表11.6所列。
表11.6 超越函数运算指令及其功能
指令格式 | 指令的功能 |
FPTAN | 求部分Y/X=tanθ,角度θ存于栈顶,其结果: |
FPATAN | 求部分反正切值θ=arctan(X/Y),X取自ST,Y取自ST(1); |
F2XM1 | 求2X-1的值,X取自栈顶,结果也存放栈顶,X的取值范围:-1~1。 |
FCOS或FSIN | 求栈顶ST中角度的正弦或余弦值,ST中存放的是弧度。 |
FSINCOS | 求栈顶ST中角度的正弦和余弦值,ST中存放的是弧度。 |
FYL2X | 计算Ylog2X的值,X=ST,Y=ST(1),其中:X>0。 |
FYL2XP1 | 计算Ylog2(X+1)的值,X=ST,Y=ST(1),其中:0<X<1-2-0.5。 |