Updated interpreter

This commit is contained in:
Veit Heller
2014-07-25 02:55:30 +02:00
parent 8d8a171892
commit 1dc6358e4b
6 changed files with 40 additions and 52 deletions

37
nbfi/Makefile Normal file
View File

@@ -0,0 +1,37 @@
override CFLAGS+=-Werror -Wall -g -fPIC -O2 -DNDEBUG -std=c99 -ftrapv -Wfloat-equal -Wundef -Wwrite-strings -Wconversion -Wuninitialized
PREFIX=/usr/bin
BUILDDIR=bin/
CC=gcc-mp-4.9
TARGET=nbfi
SOURCES=$(wildcard src/*.c)
#Makes everything
all:
mkdir $(BUILDDIR) 2> /dev/null || true
$(CC) $(CFLAGS) $(SOURCES) -o $(BUILDDIR)$(TARGET)
@echo Running tests
./test.sh
#Uses picky extensions and makes everything(Extensions may break compiling)
dev:
make all CFLAGS+=-Wshadow -Wunreachable-code -Wswitch-enum -Wswitch-default -Wcast-align -Winit-self -Wpointer-arith -Weffc++
#Cleans directory(no uninstall!)
clean:
rm -rf bin
#Installs into specified(or default) directory
install:
install -d $(PREFIX)/NBFI
install $(BUILDDIR)$(TARGET) $(PREFIX)/NBFI
#Uninstalls from specified(or default)directory
uninstall:
rm -rf $(PREFIX)/NBFI
#Checks for bad functions
BADFUNCS='[^_.>a-zA-Z0-9](str(n?cpy|n?cat|xfrm|n?dup|str|pbrk|tok|_)|stpn?cpy|a?sn?printf|byte_)'
check:
@echo Files with potentially dangerous functions:
@grep $(BADFUNCS) $(SOURCES) || echo None

View File

@@ -1,42 +0,0 @@
++++++++++
[
>
+++++++
>
++++++++++
>
+++
>
+
<<<<
-
]
>
++
.
>
+
.
+++++++
..
+++
.
>
++
.
<<
+++++++++++++++
.
>
.
+++
.
------
.
--------
.
>
+
.
>
.

View File

@@ -1 +0,0 @@
++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>.

View File

@@ -1,6 +0,0 @@
#include <stdio.h>
int main(){
printf("Hello, world!\n");
return 0;
}

BIN
nbfi/nbfi

Binary file not shown.

View File

@@ -20,8 +20,8 @@
#define STACK_EMPTY() (sp == 0)
#define STACK_FULL() (sp == MAX_SIZE)
static inline void die(int code, char* message){
fprintf(stderr, message);
static inline void die(int code, const char* message){
fprintf(stderr, "%s", message);
exit(code);
}
@@ -83,7 +83,7 @@ void execute(){
case OP_INC_VAL: data[ptr]++; break;
case OP_DEC_VAL: data[ptr]--; break;
case OP_OUT: putchar(data[ptr]); break;
case OP_IN: data[ptr] = (unsigned int)getchar(); break;
case OP_IN: data[ptr] = (short unsigned int)getchar(); break;
case OP_JMP_FWD: if(!data[ptr]) { pc = program[pc].operand; } break;
case OP_JMP_BCK: if(data[ptr]) { pc = program[pc].operand; } break;
default: die(2, "Unknown instruction.");