Seems I fixed the memory offset bugs, so far anyway...
This commit is contained in:
+9
-6
@@ -54,12 +54,13 @@ void ParseTokens(List* tokens) {
|
|||||||
HandleAssemblerDirective();
|
HandleAssemblerDirective();
|
||||||
break;
|
break;
|
||||||
case Opcode:
|
case Opcode:
|
||||||
ProgramCounter++;
|
|
||||||
HandleOperation();
|
HandleOperation();
|
||||||
break;
|
break;
|
||||||
case Immediate16:
|
case Immediate16:
|
||||||
ProgramCounter++;
|
if (t->type == LABEL) {
|
||||||
AddSymbol(t, ProgramCounter);
|
printf("%s: \n", t->lexeme);
|
||||||
|
AddSymbol(t, ProgramCounter);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
@@ -70,7 +71,7 @@ void ParseTokens(List* tokens) {
|
|||||||
|
|
||||||
PrintSymbols();
|
PrintSymbols();
|
||||||
DestroyList(SymbolsTable);
|
DestroyList(SymbolsTable);
|
||||||
printf("Program Counter: %d\n", ProgramCounter);
|
//printf("Program Counter: %d\n", ProgramCounter);
|
||||||
//printf("Heap Top: %#06X\n", HeapTop);
|
//printf("Heap Top: %#06X\n", HeapTop);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -90,9 +91,9 @@ void HandleAssemblerDirective(void) {
|
|||||||
|
|
||||||
switch(PeekToken()->type) {
|
switch(PeekToken()->type) {
|
||||||
case STRING:
|
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();
|
AdvanceParser();
|
||||||
|
|
||||||
@@ -127,6 +128,8 @@ void HandleOperation(void) {
|
|||||||
|
|
||||||
printf("[%#05X] %s ", ProgramCounter, inst->lexeme);
|
printf("[%#05X] %s ", ProgramCounter, inst->lexeme);
|
||||||
|
|
||||||
|
ProgramCounter++;
|
||||||
|
|
||||||
if (inst->parameter_one == None) {
|
if (inst->parameter_one == None) {
|
||||||
printf("\n");
|
printf("\n");
|
||||||
return;
|
return;
|
||||||
|
|||||||
Reference in New Issue
Block a user