getting floating point stuff now

This commit is contained in:
2026-05-18 12:06:03 +02:00
parent b13161f9c2
commit aeb5094b05
8 changed files with 77 additions and 36 deletions
+15 -12
View File
@@ -31,7 +31,7 @@ ircolib::u32 broadway::fetch(mem &mem) {
void broadway::decode_special2(ircolib::u32 instr, mem &mem) {
auto secondary = utils::secondary(instr);
switch (secondary) {
case 0x0D2: // mtsr
case 0x0D2:
ircolib::warn("broadway TODO mtsr (pc 0x{:08X})", pc - 4);
break;
case 0x153:
@@ -66,19 +66,19 @@ void broadway::decode_special1(ircolib::u32 instr, mem &mem) {
void broadway::execute(ircolib::u32 instr, mem &mem) {
switch (utils::primary(instr)) {
case 11: // cmpi crfD, L, rA, simm
case 11:
cmpi(instr);
break;
case 14: // addi rd, ra, simm
case 14:
addi(instr);
break;
case 15: // addis rd, ra, simm
case 15:
addis(instr);
break;
case 16: // bcx BO, BI, target
case 16:
bcx(instr);
break;
case 18: // bx target
case 18:
bx(instr);
break;
case 19:
@@ -87,7 +87,7 @@ void broadway::execute(ircolib::u32 instr, mem &mem) {
case 21:
rlwinm(instr);
break;
case 24: // ori ra, rs, uimm
case 24:
ori(instr);
break;
case 25:
@@ -99,21 +99,24 @@ void broadway::execute(ircolib::u32 instr, mem &mem) {
case 31:
decode_special2(instr, mem);
break;
case 32: // lwz rd, d(ra)
case 32:
lwz(instr, mem);
break;
case 33: // lwz rd, d(ra)
case 33:
lwzu(instr, mem);
break;
case 36: // stw rs, d(ra)
case 36:
stw(instr, mem);
break;
case 37: // stwu rs, d(ra)
case 37:
stwu(instr, mem);
break;
case 44: // stwu rs, d(ra)
case 44:
sth(instr, mem);
break;
case 50:
lfd(instr, mem);
break;
default:
std::println("broadway::execute unimplemented instruction 0x{:08X} / 0b{:032b}", instr, instr);
std::println("disassembly:");