diff --git a/njvm.c b/njvm.c index 652144e..70902b1 100644 --- a/njvm.c +++ b/njvm.c @@ -14,6 +14,9 @@ int debug = 0; struct stack stack; #define SIZE 1000 +//Register +struct stack reg; + // Program struct program program; @@ -194,6 +197,13 @@ void execute(struct program program) { push(stack, temp); push(stack, temp); break; + case PUSHR: + //TODO + push(reg, SIGN_EXTEND(IMMEDIATE(program.program[i]))); + break; + case POPR: + push(stack, pop(reg)); + break; } if (debug == 1) printf("=== DEBUG: Stack after instruction %i ===\n", i); @@ -216,6 +226,14 @@ int main(int argc, char *argv[]) { stack.size = &size; stack.current = ¤t; stack.stack = s; + + // Initialize the registery + int rSize = SIZE; + int rCurrent = 0; + unsigned int r[SIZE]; + reg.size = &rSize; + reg.current = &rCurrent; + reg.stack = r; // Initialize ProgrammSpeicher int psize = 1000;