From 37ceff93572bba6defd916884999c496108220ee Mon Sep 17 00:00:00 2001 From: Michal Idziorek Date: Mon, 20 Oct 2014 20:51:01 +0200 Subject: started porting simple brainfuck interpreter --- userspace/test.c | 81 +------------------------------------------------------- 1 file changed, 1 insertion(+), 80 deletions(-) (limited to 'userspace/test.c') diff --git a/userspace/test.c b/userspace/test.c index bdc6da0..12226d3 100644 --- a/userspace/test.c +++ b/userspace/test.c @@ -1,86 +1,7 @@ #include #include - -//printf needs following syscalls: sbrk write close fstat isatty lseek read -// - -#include - -int close(int file) -{ - return -1; -} - -int fstat(int file, struct stat *st) -{ - st->st_mode = S_IFCHR; - return 0; -} - -int isatty(int file) { - return 1; -} - -int lseek(int file, int ptr, int dir) { - return 0; -} - -int read(int file, char *ptr, int len) { - return 0; -} - -int write(int file, char *ptr, int len) -{ - - int todo; - for (todo = 0; todo < len; todo++) - { - - char byte=(*ptr++); - int byt=byte; - - int ebx; // will hold return value; - // system call - asm("pusha"); - asm("mov $61,%eax"); // select syscall) - - asm("mov %0,%%edx"::"m"(byt)); - //asm("mov $88,%edx"); - - asm("int $0x80"); // actual syscall ! interrupt - asm("mov %%ebx, %0": "=b" (ebx)); - asm("popa"); - // - - } - return len; -} - -caddr_t sbrk(int incr) -{ - -// extern char _end; /* Defined by the linker */ - char _end; - static char *heap_end; - char *prev_heap_end; - - if (heap_end == 0) { - heap_end = &_end; - } - prev_heap_end = heap_end; - /* - if (heap_end + incr > stack_ptr) { - write (1, "Heap and stack collision\n", 25); - abort (); - } - */ - - heap_end += incr; - return (caddr_t) prev_heap_end; -} - -// +#include "syscalls.h> int main() { -- cgit v1.2.3