Adding U<.
This commit is contained in:
@ -217,3 +217,12 @@ e: test-/cell
|
|||||||
-10 cells cell/ -10 =assert
|
-10 cells cell/ -10 =assert
|
||||||
-10 cells 1- cell/ -11 =assert
|
-10 cells 1- cell/ -11 =assert
|
||||||
;e
|
;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
|
||||||
|
|||||||
@ -227,6 +227,7 @@ e: check-tier0-opcodes
|
|||||||
out: literal
|
out: literal
|
||||||
out: 0=
|
out: 0=
|
||||||
out: 0<
|
out: 0<
|
||||||
|
out: U<
|
||||||
out: +
|
out: +
|
||||||
out: U/MOD
|
out: U/MOD
|
||||||
out: */MOD
|
out: */MOD
|
||||||
|
|||||||
@ -106,6 +106,7 @@ typedef struct {
|
|||||||
YV(internals, NOP, ) \
|
YV(internals, NOP, ) \
|
||||||
X("0=", ZEQUAL, tos = !tos ? -1 : 0) \
|
X("0=", ZEQUAL, tos = !tos ? -1 : 0) \
|
||||||
X("0<", ZLESS, tos = (tos|0) < 0 ? -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("+", PLUS, tos += *sp--) \
|
||||||
X("U/MOD", USMOD, w = *sp; *sp = (ucell_t) w % (ucell_t) tos; \
|
X("U/MOD", USMOD, w = *sp; *sp = (ucell_t) w % (ucell_t) tos; \
|
||||||
tos = (ucell_t) w / (ucell_t) tos) \
|
tos = (ucell_t) w / (ucell_t) tos) \
|
||||||
|
|||||||
@ -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)|0; --sp');
|
||||||
cases = ReplaceAll(cases, 'tos = (*sp--) - tos', 'tos = (*sp - tos)|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, '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, '(((ucell_t) *sp) >> tos)', 'i32[sp>>2]>>>tos');
|
||||||
cases = ReplaceAll(cases, '*((cell_t *) tos) += *sp--',
|
cases = ReplaceAll(cases, '*((cell_t *) tos) += *sp--',
|
||||||
'i32[tos>>2] = ((i32[tos>>2]|0) + (i32[sp>>2]|0))|0; --sp');
|
'i32[tos>>2] = ((i32[tos>>2]|0) + (i32[sp>>2]|0))|0; --sp');
|
||||||
|
|||||||
Reference in New Issue
Block a user