getting conditional branch now
This commit is contained in:
+16
-1
@@ -22,7 +22,7 @@ void broadway::run(mem &mem) {
|
||||
}
|
||||
|
||||
ircolib::u32 broadway::fetch(mem &mem) {
|
||||
ircolib::u32 val = mem.read(pc);
|
||||
ircolib::u32 val = mem.read<ircolib::u32>(pc);
|
||||
pc += 4;
|
||||
|
||||
return val;
|
||||
@@ -30,12 +30,27 @@ ircolib::u32 broadway::fetch(mem &mem) {
|
||||
|
||||
void broadway::execute(ircolib::u32 instr, mem &mem) {
|
||||
switch (utils::primary(instr)) {
|
||||
case 14: // addi rd, ra, simm
|
||||
addi(instr);
|
||||
break;
|
||||
case 15: // addis rd, ra, simm
|
||||
addis(instr);
|
||||
break;
|
||||
case 18: // bx target
|
||||
bx(instr);
|
||||
break;
|
||||
case 24: // ori ra, rs, uimm
|
||||
ori(instr);
|
||||
break;
|
||||
case 31: // mfspr rd, spr
|
||||
move_spr(instr);
|
||||
break;
|
||||
case 37: // stwu rs, d(ra)
|
||||
stwu(instr, mem);
|
||||
break;
|
||||
case 44: // stwu rs, d(ra)
|
||||
sth(instr, mem);
|
||||
break;
|
||||
default:
|
||||
std::println("broadway::execute unimplemented instruction 0x{:08X} / 0b{:032b}", instr, instr);
|
||||
std::println("disassembly:");
|
||||
|
||||
Reference in New Issue
Block a user