From accbdc38e74a617e01cbfd6b00776d41624238fa Mon Sep 17 00:00:00 2001 From: xamidev <121681048+xamidev@users.noreply.github.com> Date: Thu, 24 Oct 2024 17:27:26 +0200 Subject: [PATCH] minor fixes & error checking but still JE Q bug? --- assembler/das.c | 4 +--- cpu.c | 21 +++++++++++++++++++-- cpu.h | 2 ++ makefile | 4 ++++ program.asm | 10 +++++++--- 5 files changed, 33 insertions(+), 8 deletions(-) diff --git a/assembler/das.c b/assembler/das.c index 37c9af8..0a1e6fd 100644 --- a/assembler/das.c +++ b/assembler/das.c @@ -153,10 +153,8 @@ void assemble(char* filename) } else if (strncmp(line, "JEQ", 3) == 0) { - sscanf(line, "%s %[^,], %d", instruction, reg1, &addr); - int reg1_n = reg1[1] - '0'; + sscanf(line, "%s %d", instruction, &addr); buffer[i++] = JEQ; - buffer[i++] = reg1_n; buffer[i++] = addr; } else if (strncmp(line, "JMP", 3) == 0) diff --git a/cpu.c b/cpu.c index d4f0487..796ab28 100644 --- a/cpu.c +++ b/cpu.c @@ -26,6 +26,7 @@ void cpu_init() cpu.halted = false; cpu.equal_flag = false; cpu.flag_clear_delay = 0; + cpu.increment = 0; for (size_t i=0; i= MEM_SIZE) + { + printf("\nProgram ended - program counter reached max memsize\n"); + break; + } + + if (cpu.increment > INF_LOOP_THRESHOLD) + { + printf("\nProgram ended - reached infinite loop threshold\n"); + break; + } } printf("\n[END CPU OUTPUT]\n"); } @@ -210,12 +223,12 @@ void cpu_dump() void mem_dump() { - printf("\n*** Memory dump ***\n"); + printf("\n*** Memory dump ***"); for (size_t i=0; i