getting conditional branch now

This commit is contained in:
2026-05-12 17:55:05 +02:00
parent 2be9570aa9
commit df68e42d61
8 changed files with 176 additions and 4 deletions
+16 -1
View File
@@ -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:");