Adding U<.

This commit is contained in:
Brad Nelson
2023-11-11 14:46:27 -08:00
parent 564a8fc68b
commit fa56ecf59d
4 changed files with 12 additions and 0 deletions

View File

@ -217,3 +217,12 @@ e: test-/cell
-10 cells cell/ -10 =assert
-10 cells 1- cell/ -11 =assert
;e
e: test-u<
1 3 u< assert
3 1 u< 0= assert
0 -1 u< assert
-1 0 u< 0= assert
0 0 u< 0= assert
-1 -1 u< 0= assert
;e

View File

@ -227,6 +227,7 @@ e: check-tier0-opcodes
out: literal
out: 0=
out: 0<
out: U<
out: +
out: U/MOD
out: */MOD

View File

@ -106,6 +106,7 @@ typedef struct {
YV(internals, NOP, ) \
X("0=", ZEQUAL, tos = !tos ? -1 : 0) \
X("0<", ZLESS, tos = (tos|0) < 0 ? -1 : 0) \
X("U<", ULESS, tos = ((ucell_t) *sp) < ((ucell_t) tos) ? -1 : 0; --sp) \
X("+", PLUS, tos += *sp--) \
X("U/MOD", USMOD, w = *sp; *sp = (ucell_t) w % (ucell_t) tos; \
tos = (ucell_t) w / (ucell_t) tos) \

View File

@ -43,6 +43,7 @@ cases = ReplaceAll(cases, 'tos *= sizeof(cell_t)', 'tos = (tos * 4)|0');
cases = ReplaceAll(cases, 'tos += *sp--', 'tos = (tos + *sp)|0; --sp');
cases = ReplaceAll(cases, 'tos = (*sp--) - tos', 'tos = (*sp - tos)|0; --sp');
cases = ReplaceAll(cases, 'tos *= *sp--', 'tos = imul(tos, *sp); --sp');
cases = ReplaceAll(cases, '((ucell_t) *sp)', '(i32[sp>>2]>>>0)');
cases = ReplaceAll(cases, '(((ucell_t) *sp) >> tos)', 'i32[sp>>2]>>>tos');
cases = ReplaceAll(cases, '*((cell_t *) tos) += *sp--',
'i32[tos>>2] = ((i32[tos>>2]|0) + (i32[sp>>2]|0))|0; --sp');