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