我想问为什么BLT
指令不是MIPS ISA的一部分。相反,它们实际上使它成为汇编程序员的伪指令。从硬件实现的角度来看,我无法认识到BLT
和BLTZ
(它是MIPS ISA的一部分)之间的区别。
顺便说一句,“计算机组织与设计”一书说:
听取冯·诺伊曼关于“设备”简单性的警告MIPS架构不包括分支,因为它太复杂,要么会延长时钟周期时间,要么每条指令需要额外的时钟周期,两条更快的指令是更有用。
但我仍然不知道为什么会发生这种情况。
因为小于零实际上只是一个符号位检查,而小于是一个减法然后根据结果的符号位跳转。因此BLTZ
要快得多。同样,>= 0
也只需要1个符号位检查。 <= 0
或> 0
需要另外的零检查,但它相当微不足道。
实际上,架构支持在单个指令中直接在两个值之间进行跳转和比较并不常见,尽管大多数都会基于相对于0的值进行跳转。即使像x86这样的CISC架构也需要用户进行比较,然后跳