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