cpu模拟器中的指令不起作用

时间:2013-08-17 14:40:36

标签: c assembly cpu mips cpu-architecture

我正在尝试编写一个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)的工作原理如下: 如果d = 0,则a = b a = c如果d = 1

其中a,b和c为32位长,d为单位。

有人可以指出为什么beq指令工作正常但是没有。感谢

1 个答案:

答案 0 :(得分:1)

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