From 739005289edf2ceb1fc393944c5d471c52322bca Mon Sep 17 00:00:00 2001 From: Aaron Gutierrez Date: Mon, 20 Apr 2015 22:08:07 -0400 Subject: [PATCH] changed because Mitchell broke things --- public/vm/Makefile | 5 ++- public/vm/index.js | 5 ++- public/vm/vm.js | 24 +++++----- src/c0ffi.js | 110 --------------------------------------------- views/index.jade | 3 +- 5 files changed, 22 insertions(+), 125 deletions(-) delete mode 100644 src/c0ffi.js diff --git a/public/vm/Makefile b/public/vm/Makefile index ea1e733..5a0a3fc 100644 --- a/public/vm/Makefile +++ b/public/vm/Makefile @@ -1,4 +1,7 @@ -FILES = c0vm.js bytecode-parser.js byte-stream.js opcodes.js index.js +FILES = c0vm.js bytecode-parser.js byte-stream.js opcodes.js c0ffi.js index.js all: $(FILES) browserify $(FILES) -o vm.js + +clean: + rm -f vm.js diff --git a/public/vm/index.js b/public/vm/index.js index 2a09301..d85afc0 100644 --- a/public/vm/index.js +++ b/public/vm/index.js @@ -16,7 +16,7 @@ function print(arg) { $("#output").append(arg); } -callbacks = {}; +callbacks = c0ffi.default_callbacks; callbacks[c0ffi.NATIVE_PRINT] = function(args) { print(args[0]); print("
"); @@ -33,6 +33,9 @@ console.log(callbacks); $("#run").click(function() { var input = $("#bytecode").html().replace(/(\r\n|\n|\r)/gm,""); + + $("#output").text(""); + var file = parser.parse($("#bytecode").text()); print("
"); print(c0vm.execute(file, callbacks)); diff --git a/public/vm/vm.js b/public/vm/vm.js index 47838cb..e00e72f 100644 --- a/public/vm/vm.js +++ b/public/vm/vm.js @@ -299,7 +299,6 @@ function i32_to_array(i32) { ((i32 >> 8) & 0xFF), ((i32 >> 16) & 0xFF), ((i32 >> 24) & 0xFF)]; - } function array_to_i32(array) { @@ -334,13 +333,13 @@ var ProgramState = function(parsed_file, callback_dict) { try { this.natives[i] = callback_dict[i]; } catch (key_not_found) { - this.natives[i] = function (arg) { + this.natives[i] = function (arg) { console.log("Native function " + name + " called, ran method stub."); return 0; }; } } - + // Memory is just a big array of bytes, right? // "Allocation" is appending onto this array // A pointer to memory is an index into this array. @@ -409,7 +408,7 @@ ProgramState.prototype.step = function() { case op.BIPUSH: this.frame.pc += 2; var val = this.frame.program[this.frame.pc-1]; - + // Do sign extension if necessary if ((val & 0x80) != 0) val = -0x80 + (val & 0x7F); @@ -611,7 +610,7 @@ ProgramState.prototype.step = function() { }; console.log("Unknown native function index " + f.function_table_index); } - log("Calling native function with index " + index + " with arguments " + + log("Calling native function with index " + index + " with arguments " + arg_array); this.push(native_function(arg_array)); break; @@ -623,7 +622,7 @@ ProgramState.prototype.step = function() { var address = this.heap.length; for (var i = 0; i < size; i++) this.heap.push(0); - + this.push(address); this.frame.pc += 2; break; @@ -636,7 +635,7 @@ ProgramState.prototype.step = function() { this.heap.push(num_elements); this.heap.push(size); - + for (var i = 0; i < num_elements; i++) { for (var j = 0; j < size; j++) this.heap.push(0); @@ -752,7 +751,7 @@ function execute(file, callbacks, v) { if (verbose) log(file); log("Beginning execution"); - + while (true) { var val = state.step(); if (val !== undefined) return val; @@ -771,7 +770,7 @@ function execute(file, callbacks, v) { // save state (maybe in a global in this file?) // return; // } - } + } } exports.execute = execute; @@ -795,7 +794,7 @@ function print(arg) { $("#output").append(arg); } -callbacks = {}; +callbacks = c0ffi.default_callbacks; callbacks[c0ffi.NATIVE_PRINT] = function(args) { print(args[0]); print("
"); @@ -812,6 +811,9 @@ console.log(callbacks); $("#run").click(function() { var input = $("#bytecode").html().replace(/(\r\n|\n|\r)/gm,""); + + $("#output").text(""); + var file = parser.parse($("#bytecode").text()); print("
"); print(c0vm.execute(file, callbacks)); @@ -926,4 +928,4 @@ exports.lookup_table = { },{}],7:[function(require,module,exports){ -},{}]},{},[4,2,1,6,5]); +},{}]},{},[4,2,1,6,3,5]); diff --git a/src/c0ffi.js b/src/c0ffi.js deleted file mode 100644 index c3ce859..0000000 --- a/src/c0ffi.js +++ /dev/null @@ -1,110 +0,0 @@ -exports.NATIVE_FADD = 0 -exports.NATIVE_FDIV = 1 -exports.NATIVE_FLESS = 2 -exports.NATIVE_FMUL = 3 -exports.NATIVE_FSUB = 4 -exports.NATIVE_FTOI = 5 -exports.NATIVE_ITOF = 6 -exports.NATIVE_PRINT_FPT = 7 -exports.NATIVE_PRINT_HEX = 8 -exports.NATIVE_PRINT_INT = 9 - -/* args */ -exports.NATIVE_ARGS_FLAG = 10 -exports.NATIVE_ARGS_INT = 11 -exports.NATIVE_ARGS_PARSE = 12 -exports.NATIVE_ARGS_STRING = 13 - -/* conio */ -exports.NATIVE_EOF = 14 -exports.NATIVE_FLUSH = 15 -exports.NATIVE_PRINT = 16 -exports.NATIVE_PRINTBOOL = 17 -exports.NATIVE_PRINTCHAR = 18 -exports.NATIVE_PRINTINT = 19 -exports.NATIVE_PRINTLN = 20 -exports.NATIVE_READLINE = 21 - -/* curses */ -exports.NATIVE_C_ADDCH = 22 -exports.NATIVE_C_CBREAK = 23 -exports.NATIVE_C_CURS_SET = 24 -exports.NATIVE_C_DELCH = 25 -exports.NATIVE_C_ENDWIN = 26 -exports.NATIVE_C_ERASE = 27 -exports.NATIVE_C_GETCH = 28 -exports.NATIVE_C_INITSCR = 29 -exports.NATIVE_C_KEYPAD = 30 -exports.NATIVE_C_MOVE = 31 -exports.NATIVE_C_NOECHO = 32 -exports.NATIVE_C_REFRESH = 33 -exports.NATIVE_C_SUBWIN = 34 -exports.NATIVE_C_WADDCH = 35 -exports.NATIVE_C_WADDSTR = 36 -exports.NATIVE_C_WCLEAR = 37 -exports.NATIVE_C_WERASE = 38 -exports.NATIVE_C_WMOVE = 39 -exports.NATIVE_C_WREFRESH = 40 -exports.NATIVE_C_WSTANDEND = 41 -exports.NATIVE_C_WSTANDOUT = 42 -exports.NATIVE_CC_GETBEGX = 43 -exports.NATIVE_CC_GETBEGY = 44 -exports.NATIVE_CC_GETMAXX = 45 -exports.NATIVE_CC_GETMAXY = 46 -exports.NATIVE_CC_GETX = 47 -exports.NATIVE_CC_GETY = 48 -exports.NATIVE_CC_HIGHLIGHT = 49 -exports.NATIVE_CC_KEY_IS_BACKSPACE = 50 -exports.NATIVE_CC_KEY_IS_DOWN = 51 -exports.NATIVE_CC_KEY_IS_ENTER = 52 -exports.NATIVE_CC_KEY_IS_LEFT = 53 -exports.NATIVE_CC_KEY_IS_RIGHT = 54 -exports.NATIVE_CC_KEY_IS_UP = 55 -exports.NATIVE_CC_WBOLDOFF = 56 -exports.NATIVE_CC_WBOLDON = 57 -exports.NATIVE_CC_WDIMOFF = 58 -exports.NATIVE_CC_WDIMON = 59 -exports.NATIVE_CC_WREVERSEOFF = 60 -exports.NATIVE_CC_WREVERSEON = 61 -exports.NATIVE_CC_WUNDEROFF = 62 -exports.NATIVE_CC_WUNDERON = 63 - -/* file */ -exports.NATIVE_FILE_CLOSE = 64 -exports.NATIVE_FILE_CLOSED = 65 -exports.NATIVE_FILE_EOF = 66 -exports.NATIVE_FILE_READ = 67 -exports.NATIVE_FILE_READLINE = 68 - -/* img */ -exports.NATIVE_IMAGE_CLONE = 69 -exports.NATIVE_IMAGE_CREATE = 70 -exports.NATIVE_IMAGE_DATA = 71 -exports.NATIVE_IMAGE_DESTROY = 72 -exports.NATIVE_IMAGE_HEIGHT = 73 -exports.NATIVE_IMAGE_LOAD = 74 -exports.NATIVE_IMAGE_SAVE = 75 -exports.NATIVE_IMAGE_SUBIMAGE = 76 -exports.NATIVE_IMAGE_WIDTH = 77 - -/* parse */ -exports.NATIVE_PARSE_BOOL = 78 -exports.NATIVE_PARSE_INT = 79 - -/* string */ -exports.NATIVE_CHAR_CHR = 80 -exports.NATIVE_CHAR_ORD = 81 -exports.NATIVE_STRING_CHARAT = 82 -exports.NATIVE_STRING_COMPARE = 83 -exports.NATIVE_STRING_EQUAL = 84 -exports.NATIVE_STRING_FROM_CHARARRAY = 85 -exports.NATIVE_STRING_FROMBOOL = 86 -exports.NATIVE_STRING_FROMCHAR = 87 -exports.NATIVE_STRING_FROMINT = 88 -exports.NATIVE_STRING_JOIN = 89 -exports.NATIVE_STRING_LENGTH = 90 -exports.NATIVE_STRING_SUB = 91 -exports.NATIVE_STRING_TERMINATED = 92 -exports.NATIVE_STRING_TO_CHARARRAY = 93 -exports.NATIVE_STRING_TOLOWER = 94 - diff --git a/views/index.jade b/views/index.jade index 2e1ac1b..29240ed 100644 --- a/views/index.jade +++ b/views/index.jade @@ -47,9 +47,8 @@ block script function compile() { var code = encodeURIComponent($("#inputCode").val()); - $.ajax({ - type: "POST", + type: "GET", async: true, url: "http://www.contrib.andrew.cmu.edu/~amgutier/cc0.cgi", dataType: "jsonp",