Replaced XV with Z to make things uniform + fixed remaining non-valid asm.js.
This commit is contained in:
@ -16,6 +16,8 @@
|
||||
#include <string.h>
|
||||
|
||||
#define JMPW break decode
|
||||
#define SSMOD_FUNC SSMOD_FUNC
|
||||
#define COMMA COMMA
|
||||
|
||||
#include "common/opcodes.h"
|
||||
#include "common/floats.h"
|
||||
@ -28,10 +30,10 @@
|
||||
FLOATING_POINT_LIST
|
||||
|
||||
enum {
|
||||
#define XV(flags, name, op, code) OP_ ## op,
|
||||
#define Z(flags, name, op, code) OP_ ## op,
|
||||
PLATFORM_OPCODE_LIST
|
||||
OPCODE_LIST
|
||||
#undef XV
|
||||
#undef Z
|
||||
};
|
||||
|
||||
enum {
|
||||
@ -49,24 +51,24 @@ enum {
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
if (argc == 2 && strcmp(argv[1], "cases") == 0) {
|
||||
#define XV(flags, name, op, code) \
|
||||
#define Z(flags, name, op, code) \
|
||||
printf(" case %d: // %s\n %s; break;\n", OP_ ## op, name, #code);
|
||||
PLATFORM_OPCODE_LIST
|
||||
OPCODE_LIST
|
||||
#undef XV
|
||||
#undef Z
|
||||
} else if (argc == 2 && strcmp(argv[1], "dict") == 0) {
|
||||
#define V(name) \
|
||||
printf(" create(\"" #name "-builtins\", %d);\n", BUILTIN_FORK, OP_DOCREATE); \
|
||||
printf(" comma(%d);\n", VOC_ ## name);
|
||||
VOCABULARY_LIST
|
||||
#undef V
|
||||
#define XV(flags, name, op, code) \
|
||||
#define Z(flags, name, op, code) \
|
||||
printf(" builtin(" #name ", %d, %d, %d);\n", \
|
||||
((VOC_ ## flags >> 8) & 0xff) | BUILTIN_MARK, \
|
||||
(VOC_ ## flags & 0xff), OP_ ## op);
|
||||
PLATFORM_OPCODE_LIST
|
||||
OPCODE_LIST
|
||||
#undef XV
|
||||
#undef Z
|
||||
} else if (argc == 2 && strcmp(argv[1], "sys") == 0) {
|
||||
G_SYS *g_sys = 0;
|
||||
#define G_SYS 256
|
||||
|
||||
@ -74,6 +74,7 @@ cases = ReplaceAll(cases, /[*](.)p/, '(i32[$1p>>2]|0)');
|
||||
cases = ReplaceAll(cases, 'sp[-1]', '(i32[(sp - 4)>>2]|0)');
|
||||
|
||||
cases = ReplaceAll(cases, /([+-]).(.)p/, '$2p = ($2p $1 4) | 0');
|
||||
cases = ReplaceAll(cases, 'sp -= (2-1)', 'sp = (sp - 4) | 0');
|
||||
cases = ReplaceAll(cases, 'sp -= 2', 'sp = (sp - 8) | 0');
|
||||
cases = ReplaceAll(cases, 'fp -= 2', 'fp = (fp - 8) | 0');
|
||||
cases = ReplaceAll(cases, 'sizeof(cell_t)', '4');
|
||||
@ -112,6 +113,7 @@ cases = ReplaceAll(cases, /tos ([^=]?)= /, 'txx $1= ');
|
||||
cases = ReplaceAll(cases, ' tos', ' (tos|0)');
|
||||
cases = ReplaceAll(cases, /txx ([^=]?)= /, 'tos $1= ');
|
||||
// Keep Together ^^^
|
||||
cases = ReplaceAll(cases, 'fp)', 'fp|0)');
|
||||
cases = ReplaceAll(cases, ' (w>>>0) / (tos>>>0)', ' ((w>>>0) / (tos>>>0))|0');
|
||||
cases = ReplaceAll(cases, 'COMMA(tos)', 'COMMA(tos|0)');
|
||||
cases = ReplaceAll(cases, /find\(([^\n]+)\);/, 'find($1)|0;');
|
||||
|
||||
@ -207,6 +207,7 @@ function VM(stdlib, foreign, heap) {
|
||||
var memset = foreign.memset;
|
||||
var memmove = foreign.memmove;
|
||||
var convert = foreign.convert;
|
||||
var fconvert = foreign.fconvert;
|
||||
var evaluate1 = foreign.evaluate1;
|
||||
var emitlog = foreign.log;
|
||||
|
||||
@ -264,7 +265,10 @@ var ffi = {
|
||||
UNSMUDGE: function() { console.log('unsmudge'); },
|
||||
parse: function() { console.log('parse'); },
|
||||
find: function() { console.log('find'); },
|
||||
memmove: function() { console.log('memmove'); },
|
||||
memset: function() { console.log('memset'); },
|
||||
convert: function() { console.log('convert'); },
|
||||
fconvert: function() { console.log('fconvert'); },
|
||||
evaluate1: function() { console.log('evaluate1'); },
|
||||
log: function(n) { console.log(n); }
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user