Compare commits
No commits in common. "e5f2858a5c80de897e620948c505fe037708ed57" and "70dbd0253bd5aedec6946cee28f5457594fa1610" have entirely different histories.
e5f2858a5c
...
70dbd0253b
@ -5,7 +5,5 @@ set(CMAKE_C_STANDARD 99)
|
|||||||
|
|
||||||
add_compile_options(-g -Wall -pedantic)
|
add_compile_options(-g -Wall -pedantic)
|
||||||
|
|
||||||
include_directories("./bigint/build/include")
|
|
||||||
|
|
||||||
add_executable(ninja njvm.c
|
add_executable(ninja njvm.c
|
||||||
SDA.c)
|
SDA.c)
|
||||||
|
|||||||
2
Makefile
2
Makefile
@ -4,7 +4,7 @@
|
|||||||
CC = gcc
|
CC = gcc
|
||||||
|
|
||||||
# program to Run
|
# program to Run
|
||||||
F = programs/prog1.bin
|
F = prog.bin
|
||||||
|
|
||||||
# Compiler flags
|
# Compiler flags
|
||||||
CFLAGS = -g -Wall -Ibigint/build/include
|
CFLAGS = -g -Wall -Ibigint/build/include
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
19
njvm.c
19
njvm.c
@ -9,7 +9,6 @@
|
|||||||
#include "SDA.c"
|
#include "SDA.c"
|
||||||
#include "debugMenu.c"
|
#include "debugMenu.c"
|
||||||
#include "bigint.h"
|
#include "bigint.h"
|
||||||
|
|
||||||
// Debug
|
// Debug
|
||||||
int debug = 0;
|
int debug = 0;
|
||||||
|
|
||||||
@ -61,10 +60,7 @@ void execute(struct program program) {
|
|||||||
break;
|
break;
|
||||||
case ADD:
|
case ADD:
|
||||||
if (debug == 1) printf("add: %i + %i\n",peek(stack, 2),peek(stack, 1));
|
if (debug == 1) printf("add: %i + %i\n",peek(stack, 2),peek(stack, 1));
|
||||||
bip.op1 = pop(stack).u.objRef;
|
push(stack, stackSlotWithObjRef(getIntObj(getIntValfromStackSlot(pop(stack)) + getIntValfromStackSlot(pop(stack)))));
|
||||||
bip.op2 = pop(stack).u.objRef;
|
|
||||||
bigAdd();
|
|
||||||
push(stack, stackSlotWithObjRef(bip.res));
|
|
||||||
break;
|
break;
|
||||||
case SUB:
|
case SUB:
|
||||||
if (debug == 1) printf("sub: %i - %i\n", peek(stack, 2), peek(stack, 1));
|
if (debug == 1) printf("sub: %i - %i\n", peek(stack, 2), peek(stack, 1));
|
||||||
@ -73,8 +69,7 @@ void execute(struct program program) {
|
|||||||
break;
|
break;
|
||||||
case MUL:
|
case MUL:
|
||||||
if (debug == 1) printf("mul: %i * %i\n", peek(stack, 2), peek(stack, 1));
|
if (debug == 1) printf("mul: %i * %i\n", peek(stack, 2), peek(stack, 1));
|
||||||
push(stack, stackSlotWithObjRef(
|
push(stack, stackSlotWithObjRef(getIntObj(getIntValfromStackSlot(pop(stack)) * getIntValfromStackSlot(pop(stack)))));
|
||||||
getIntObj(getIntValfromStackSlot(pop(stack)) * getIntValfromStackSlot(pop(stack)))));
|
|
||||||
break;
|
break;
|
||||||
case DIV:
|
case DIV:
|
||||||
if (debug == 1) printf("div: %i / %i\n", peek(stack, 2), peek(stack, 1));
|
if (debug == 1) printf("div: %i / %i\n", peek(stack, 2), peek(stack, 1));
|
||||||
@ -137,18 +132,12 @@ void execute(struct program program) {
|
|||||||
break;
|
break;
|
||||||
case NE:
|
case NE:
|
||||||
if (debug == 1) printf("ne: %i != %i\n", peek(stack, 2), peek(stack, 1));
|
if (debug == 1) printf("ne: %i != %i\n", peek(stack, 2), peek(stack, 1));
|
||||||
if (getIntValfromStackSlot(pop(stack)) != getIntValfromStackSlot(pop(stack))) push(stack,
|
if (getIntValfromStackSlot(pop(stack)) != getIntValfromStackSlot(pop(stack))) push(stack, stackSlotWithObjRef(getIntObj(1)));
|
||||||
stackSlotWithObjRef(
|
|
||||||
getIntObj(
|
|
||||||
1)));
|
|
||||||
else push(stack, stackSlotWithObjRef(getIntObj(0)));
|
else push(stack, stackSlotWithObjRef(getIntObj(0)));
|
||||||
break;
|
break;
|
||||||
case EQ:
|
case EQ:
|
||||||
if (debug == 1) printf("eq: %i == %i\n", peek(stack, 2), peek(stack, 1));
|
if (debug == 1) printf("eq: %i == %i\n", peek(stack, 2), peek(stack, 1));
|
||||||
if (getIntValfromStackSlot(pop(stack)) == getIntValfromStackSlot(pop(stack))) push(stack,
|
if (getIntValfromStackSlot(pop(stack)) == getIntValfromStackSlot(pop(stack))) push(stack, stackSlotWithObjRef(getIntObj(1)));
|
||||||
stackSlotWithObjRef(
|
|
||||||
getIntObj(
|
|
||||||
1)));
|
|
||||||
else push(stack, stackSlotWithObjRef(getIntObj(0)));
|
else push(stack, stackSlotWithObjRef(getIntObj(0)));
|
||||||
break;
|
break;
|
||||||
case LT:
|
case LT:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user