Replaced XV with Z to make things uniform + fixed remaining non-valid asm.js.

This commit is contained in:
Brad Nelson
2022-07-12 18:13:56 -07:00
parent cd9228a609
commit 9d874a08fb
9 changed files with 67 additions and 55 deletions

View File

@ -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

View File

@ -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;');

View File

@ -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); }
};