diff options
-rwxr-xr-x | a.out | bin | 34808 -> 30760 bytes | |||
-rw-r--r-- | instruction-init.h | 8 | ||||
-rw-r--r-- | interpreter.c | 11 |
3 files changed, 10 insertions, 9 deletions
Binary files differ diff --git a/instruction-init.h b/instruction-init.h index 2e0e29c..c2f85ed 100644 --- a/instruction-init.h +++ b/instruction-init.h @@ -16,13 +16,13 @@ void setIT(int i, uintptr_t p, Addressing r){ } uintptr_t getITFunction(int i){ //Segmentation fault is occurring here, likely in next one too - uintptr_t* r = (IT + (sizeof(uintptr_t)*i)); - return *r; + uintptr_t r = (IT + (sizeof(uintptr_t)*i)); + return r; } Addressing getITAddressing(int i){ - Addressing* r = (IT + (sizeof(uintptr_t)*256) + (sizeof(Addressing)*i)); - return *r; + Addressing r = (IT + (sizeof(uintptr_t)*256) + (sizeof(Addressing)*i)); + return r; } diff --git a/interpreter.c b/interpreter.c index 652c181..4598d2f 100644 --- a/interpreter.c +++ b/interpreter.c @@ -33,7 +33,7 @@ int main(){ m += dCharToNum(fgetc(stdin)); dPageDump(m); break; - case ' ': + case ' ': case '\n': break; } }else{ // RUN INSTRUCTION @@ -43,16 +43,17 @@ int main(){ // Pass in Value address pass = 0x0000; int range = fAddressGetLength(getITAddressing(inst)); + printf("range = %d\n", range); //DEBUG range = ((2*range)-2); c = fgetc(stdin); for(int i = 0; i < range; i++){ - if (c != ' ' && c != EOF){ + if ((c == ' ') || (c == '\n')){ + i--; + }else{ pass <<= 4; pass += c; - c = fgetc(stdin); - }else{ - break; } + c = fgetc(stdin); } current_instruction = getITFunction(inst); callIT(current_instruction, pass); |