cpu模拟器中的c-bne指令不工作



我正在尝试编写一个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);
}

"branch"是当指令是分支指令时引发的标志。零是单比特alu输出

MUX2_32(a,b,c,d)的工作原理如下:如果d=0,则a=b如果d=1 ,则a=c

其中a、b和c是32比特长并且d是单个比特。

有人能指出为什么beq指令很有效,而bne却不行。感谢

C不支持二进制数常量。000101是一个值为65…的八进制数,"000101"是一个64位宽的多字符常数。您需要使用十六进制数字,即十六进制中的操作码000101是0x5…

最新更新