From c462a70d3fba08a2bd0c1f55a77b8394578f621b Mon Sep 17 00:00:00 2001 From: Erick Date: Fri, 4 Feb 2022 01:50:15 +0100 Subject: [PATCH] add ld (load) register, fix minor bug --- tyvm.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/tyvm.c b/tyvm.c index 0158f0e..784969e 100644 --- a/tyvm.c +++ b/tyvm.c @@ -141,9 +141,12 @@ int main(int argc, const char* argv[]) { break; case OP_LD: + uint16_t dr = (instr >> 9) & 0x7; + uint16_t PCoffset9 = sign_extend(instr & 0x1FF, 9); // 9-bit value that indicates where to load the address when added to RG_PC + reg[dr] = mem_read(PCoffset9 + reg[RG_PC]); - + update_flags(dr); break; case OP_ST: @@ -183,7 +186,7 @@ int main(int argc, const char* argv[]) { uint16_t dr = (instr >> 9) & 0x7; uint16_t PCoffset9 = sign_extend(instr & 0x1FF, 9); // 9-bit value that indicates where to load the address when added to RG_PC - reg[dr] = mem_read(mem_read(PCoffset9 + reg[RG_PC]++)); + reg[dr] = mem_read(mem_read(PCoffset9 + reg[RG_PC])); update_flags(dr);