diff --git a/src/parser.c b/src/parser.c index da8c2c1..562968f 100644 --- a/src/parser.c +++ b/src/parser.c @@ -54,12 +54,13 @@ void ParseTokens(List* tokens) { HandleAssemblerDirective(); break; case Opcode: - ProgramCounter++; HandleOperation(); break; case Immediate16: - ProgramCounter++; - AddSymbol(t, ProgramCounter); + if (t->type == LABEL) { + printf("%s: \n", t->lexeme); + AddSymbol(t, ProgramCounter); + } break; default: break; @@ -70,7 +71,7 @@ void ParseTokens(List* tokens) { PrintSymbols(); DestroyList(SymbolsTable); - printf("Program Counter: %d\n", ProgramCounter); + //printf("Program Counter: %d\n", ProgramCounter); //printf("Heap Top: %#06X\n", HeapTop); } @@ -90,9 +91,9 @@ void HandleAssemblerDirective(void) { switch(PeekToken()->type) { case STRING: - ProgramCounter += strlen(PeekToken()->lexeme); + printf("[INFO] %s = '%s' (%#04X)\n", identifier->lexeme, PeekToken()->lexeme, ProgramCounter); - printf("[INFO] %s = '%s'\n", identifier->lexeme, PeekToken()->lexeme); + ProgramCounter += strlen(PeekToken()->lexeme); AdvanceParser(); @@ -127,6 +128,8 @@ void HandleOperation(void) { printf("[%#05X] %s ", ProgramCounter, inst->lexeme); + ProgramCounter++; + if (inst->parameter_one == None) { printf("\n"); return;