MIPS浮点比较指令中FC字段的含义及各取值的汇编器行为问询
MIPS浮点比较指令中FC字段的含义及取值说明
FC(Function Code,功能码)是MIPS浮点比较指令机器码里的2位字段,用来指定具体的比较类型,控制浮点协处理器执行的比较逻辑,最终决定浮点状态寄存器(FPSCR)中条件标志位的设置。
以下是FC四个取值对应的汇编器表现:
- FC=00:对应等于比较指令(
c.eq.d双精度 /c.eq.s单精度),汇编器会生成检查两个浮点数是否相等的指令。执行后,若两个操作数相等,浮点状态寄存器的相等标志位会被置位。 - FC=01:对应小于比较指令(
c.lt.d/c.lt.s),汇编器生成判断第一个操作数是否小于第二个操作数的指令。满足条件时,浮点状态寄存器的小于标志位会被置位。 - FC=10:对应小于等于比较指令(
c.le.d/c.le.s),汇编器生成判断第一个操作数是否小于或等于第二个操作数的指令。满足条件时,浮点状态寄存器的小于等于标志位会被置位。 - FC=11:对应无序比较指令(
c.un.d/c.un.s),这是你遇到的场景。该指令用于检查两个操作数是否处于无序状态——即至少有一个操作数是NaN(非数值),因为NaN与任何值(包括自身)的比较结果都是无序的。执行后,若操作数中存在NaN,浮点状态寄存器的无序标志位会被置位。
内容的提问来源于stack exchange,提问作者Kay
相关产品推荐
相关产品推荐

