MIPS仿真器QtSpim有一个Bare Machine模式,是模仿真正的处理器流水线,不识别伪指令,启用了加载延迟(Enable Delayed Loads)和跳转延迟(Enable Delayed Branches),好在没有hazard。
如果启用了这两个模式,除了不能使用任何伪指令包括lw $t0, label这种模式,因为启用了跳转延迟,要在所有的跳转指令包括bxx j jal后面加一个nop;因为启用了加载延迟,要在所有的load指令后面加一个nop,包括lw lb等。变态的是Bare Machine竟然两nop都不认,那就用sll $0, $0, $0来实现nop,二者的二进制码都是0,是等价的,其实就是加一条没有任何意义的指令,所有加add $0,$0,$0之类的也是可以的。