From 4d057a79f33d0704e55a997c29a0c6e7595d1aa9 Mon Sep 17 00:00:00 2001 From: Forest Belton <65484+forestbelton@users.noreply.github.com> Date: Sat, 26 Jun 2021 19:40:24 -0400 Subject: [PATCH] Implement SW --- src/insn.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/insn.c b/src/insn.c index f3f78f0..1a1a223 100644 --- a/src/insn.c +++ b/src/insn.c @@ -80,9 +80,19 @@ void insn_addiu(cpu_t *cpu, uint32_t insn) { cpu->regs[rt] = cpu->regs[rs] + imm; } +void insn_sw(cpu_t *cpu, uint32_t insn) { + const uint8_t rt = RT(insn); + const uint8_t rs = RS(insn); + const uint16_t imm = IMM(insn); + + debug("SW %s, [%s + %x]", REG_NAMES[rt], REG_NAMES[rt], imm); + cpu_write32(cpu, cpu->regs[rt], imm + cpu->regs[rs]); +} + static cpu_insn_handler primary_insn_handler[TABLE_SIZE] = { [LW] = insn_lw, [ADDIU] = insn_addiu, + [SW] = insn_sw, }; static cpu_insn_handler secondary_insn_handler[TABLE_SIZE] = {