我正在尝试编写一个 cpu 模拟器。但是,当遇到 bne 指令时,它似乎没有按预期运行。bne 的性能与 bqe 相同。bqe 似乎工作正常:
Mux2_32(mbranchAddress, pcPlus4, branchAddress, AND2_1(zero, branch));
Mux2_32(pc, mbranchAddress, jumpAddress, jump);
if(!strcmp(opcode, "000101")&& !strcmp(branch, "1")){ /*bne instruction, ("000101" is the opcode for bne)*/
Mux2_32(mbranchAddress, pcPlus4, branchAddress, AND2_1(NOT_1(zero), branch));
Mux2_32(pc, mbranchAddress, jumpAddress, jump);
}
“分支”是当指令是分支指令时引发的标志。零是单个位 alu 输出
MUX2_32(a, b, c, d) 的工作原理如下: a=b if d=0 a=c if d=1
其中 a、b 和 c 为 32 位长,d 为一位。
有人可以指出为什么 beq 指令可以正常工作,但 bne 不能。谢谢