Hacky version of SSMOD for now on web.
This commit is contained in:
@ -86,6 +86,11 @@ function TOBODY(xt) {
|
||||
return xt + (i32[xt>>2] === OP_DOCREATE || i32[xt>>2] === OP_DODOES ? 2 : 1);
|
||||
}
|
||||
|
||||
function DOES(ip) {
|
||||
i32[i32[i32[g_sys_current>>2]>>2]>>2] = OP_DODOES;
|
||||
i32[(i32[i32[g_sys_current>>2]>>2] + 4)>>2] = ip;
|
||||
}
|
||||
|
||||
function BUILTIN_ITEM(i) {
|
||||
return i32[g_sys_builtins>>2] + 4 * 3 * i;
|
||||
}
|
||||
@ -143,6 +148,15 @@ function CCOMMA(value) {
|
||||
i32[g_sys_heap>>2]++;
|
||||
}
|
||||
|
||||
function SSMOD(sp) {
|
||||
var a = i32[(sp - 8)>>2];
|
||||
var b = i32[(sp - 4)>>2];
|
||||
var c = i32[sp>>2];
|
||||
a *= b;
|
||||
i32[(sp - 8)>>2] = a / c;
|
||||
i32[sp>>2] = a % c;
|
||||
}
|
||||
|
||||
function Finish() {
|
||||
if (i32[g_sys_latestxt>>2] && !i32[TOPARAMS(i32[g_sys_latestxt>>2])>>2]) {
|
||||
var sz = i32[g_sys_heap>>2] - (g_sys_latestxt + 4);
|
||||
@ -518,8 +532,8 @@ var ffi = {
|
||||
'log': function(n) { console.log(n); },
|
||||
'COMMA': function(n) { COMMA(n); },
|
||||
'CCOMMA': function(n) { COMMA(n); },
|
||||
'SSMOD': function() { console.log('ssmod'); },
|
||||
'DOES': function() { console.log('does'); },
|
||||
'SSMOD': function(sp) { SSMOD(sp); },
|
||||
'DOES': function(ip) { DOES(ip); },
|
||||
'DOIMMEDIATE': function() { DOIMMEDIATE(); },
|
||||
'UNSMUDGE': function() { UNSMUDGE(); },
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user