some shit
This commit is contained in:
parent
9b4a9faa8d
commit
6319ddcad9
1
.gitignore
vendored
1
.gitignore
vendored
@ -4,3 +4,4 @@ njvm
|
|||||||
njvm.dSYM
|
njvm.dSYM
|
||||||
njvm.exe
|
njvm.exe
|
||||||
njvm2
|
njvm2
|
||||||
|
test
|
||||||
|
|||||||
2
Makefile
2
Makefile
@ -5,7 +5,7 @@ build:
|
|||||||
gcc -g -Wall -Lbigint/build/lib -o njvm njvm.o support.o -lbigint
|
gcc -g -Wall -Lbigint/build/lib -o njvm njvm.o support.o -lbigint
|
||||||
|
|
||||||
run: build
|
run: build
|
||||||
./njvm programs/prog1.bin
|
./njvm prog.bin
|
||||||
|
|
||||||
debug: build
|
debug: build
|
||||||
./njvm --debug prog.bin
|
./njvm --debug prog.bin
|
||||||
43
Makefile3
Normal file
43
Makefile3
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
# Makefile for a simple C program
|
||||||
|
|
||||||
|
# Compiler
|
||||||
|
CC = gcc
|
||||||
|
|
||||||
|
# program to Run
|
||||||
|
F = prog.bin
|
||||||
|
|
||||||
|
# Compiler flags
|
||||||
|
CFLAGS = -g -Wall -Ibigint/build/include
|
||||||
|
|
||||||
|
LDFLAGS = -g -Wall -Lbigint/build/lib
|
||||||
|
|
||||||
|
# Source file
|
||||||
|
SRC = njvm.c
|
||||||
|
|
||||||
|
# Executable name
|
||||||
|
TARGET = njvm
|
||||||
|
|
||||||
|
njvm.o:
|
||||||
|
$(CC) $(CFLAGS) -o njvm.o -c njvm.c
|
||||||
|
|
||||||
|
support.o:
|
||||||
|
$(CC) $(CFLAGS) -o support.o -c support.c
|
||||||
|
|
||||||
|
# Default target
|
||||||
|
all: njvm.o support.o
|
||||||
|
$(CC) $(LDFLAGS) -o $(TARGET) njvm.o support.o -lbigint
|
||||||
|
# Clean up
|
||||||
|
clean:
|
||||||
|
rm -f $(OBJ) $(TARGET)
|
||||||
|
|
||||||
|
debug: all
|
||||||
|
./$(TARGET) --debug $(F)
|
||||||
|
|
||||||
|
run: all
|
||||||
|
./$(TARGET) $(F)
|
||||||
|
|
||||||
|
nja: ./nja/nja$(V)
|
||||||
|
./nja/nja$(V) $(IN) $(OUT)
|
||||||
|
|
||||||
|
njc: ./njc/njc$(V)
|
||||||
|
./njc/njc$(V) $(IN) $(OUT)
|
||||||
2
consts.c
2
consts.c
@ -1,6 +1,6 @@
|
|||||||
#ifndef CONSTS
|
#ifndef CONSTS
|
||||||
#define CONSTS
|
#define CONSTS
|
||||||
#define VERSION 6;
|
#define VERSION 6
|
||||||
|
|
||||||
#endif /* ifndef CONSTS
|
#endif /* ifndef CONSTS
|
||||||
#define CONSTS
|
#define CONSTS
|
||||||
|
|||||||
@ -34,10 +34,10 @@ void breakpoint(){
|
|||||||
//todo
|
//todo
|
||||||
}
|
}
|
||||||
|
|
||||||
void debugMenu(int fp, struct stack stack, int* debug){
|
void debugMenu(int fp, struct stack stack, int* debug, int point){
|
||||||
char input[20];
|
char input[20];
|
||||||
while (true) {
|
while (true) {
|
||||||
printf("DEBUG: inspect, list, breakpoint, run, step, quit?");
|
printf("DEBUG(%i): inspect, list, breakpoint, run, step, quit?",point);
|
||||||
fgets(input, 20, stdin);
|
fgets(input, 20, stdin);
|
||||||
printf("%s",input);
|
printf("%s",input);
|
||||||
if(input[0] == 'i') {inspect(stack,fp);}
|
if(input[0] == 'i') {inspect(stack,fp);}
|
||||||
|
|||||||
14
njvm.c
14
njvm.c
@ -29,13 +29,6 @@ unsigned fp;
|
|||||||
|
|
||||||
void version(void) {
|
void version(void) {
|
||||||
printf("Ninja Virtual Machine version %i (compiled %s, %s)\n", 0, __DATE__, __TIME__);
|
printf("Ninja Virtual Machine version %i (compiled %s, %s)\n", 0, __DATE__, __TIME__);
|
||||||
bigFromInt(9);
|
|
||||||
bip.op1 = bip.res;
|
|
||||||
bigFromInt(10);
|
|
||||||
bip.op2 = bip.res;
|
|
||||||
bigAdd();
|
|
||||||
bip.op1 = bip.res;
|
|
||||||
bigPrint(stdout);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void help(void) {
|
void help(void) {
|
||||||
@ -48,7 +41,7 @@ void execute(struct program program) {
|
|||||||
StackSlot tempSlot;
|
StackSlot tempSlot;
|
||||||
ObjRef tempObj;
|
ObjRef tempObj;
|
||||||
for (i = 0; i < *program.size; ++i) {
|
for (i = 0; i < *program.size; ++i) {
|
||||||
if (debug == 1) debugMenu(fp, stack, &debug);
|
if (debug == 1) debugMenu(fp, stack, &debug, i);
|
||||||
switch (program.program[i] >> 24) {
|
switch (program.program[i] >> 24) {
|
||||||
case HALT:
|
case HALT:
|
||||||
if (debug == 1) printf("halt\n");
|
if (debug == 1) printf("halt\n");
|
||||||
@ -148,8 +141,8 @@ void execute(struct program program) {
|
|||||||
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));
|
||||||
bip.op2 = pop(stack).u.objRef;
|
bip.op2 = pop(stack).u.objRef;
|
||||||
bip.op1 = pop(stack).u.objRef;
|
bip.op1 = pop(stack).u.objRef;
|
||||||
if (bigCmp() != 0) push(stack, stackSlotWithObjRef(getIntObj(true)));
|
bigFromInt(bigCmp() != 0);
|
||||||
else push(stack, stackSlotWithObjRef(getIntObj(false)));
|
push(stack,stackSlotWithObjRef(bip.res));
|
||||||
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));
|
||||||
@ -191,6 +184,7 @@ void execute(struct program program) {
|
|||||||
if (debug == 1) printf("pop: %i\n", peek(stack, 1));
|
if (debug == 1) printf("pop: %i\n", peek(stack, 1));
|
||||||
bip.op1 = pop(stack).u.objRef;
|
bip.op1 = pop(stack).u.objRef;
|
||||||
int b = bigToInt();
|
int b = bigToInt();
|
||||||
|
printf("%i , %i",b, false);
|
||||||
if (b == false) {
|
if (b == false) {
|
||||||
i = SIGN_EXTEND(IMMEDIATE(program.program[i])) - 1;
|
i = SIGN_EXTEND(IMMEDIATE(program.program[i])) - 1;
|
||||||
if (debug == 1) printf("new i: %i\n", i);
|
if (debug == 1) printf("new i: %i\n", i);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user