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