POP_N_ELEMS (0) : |
POP_N_ELEMS POP_VALUE : POP_N_ELEMS ($1a + 1) |
POP_VALUE POP_VALUE : POP_N_ELEMS (2) |
POP_VALUE POP_N_ELEMS : POP_N_ELEMS ($2a + 1) |
POP_N_ELEMS POP_N_ELEMS : POP_N_ELEMS ($1a + $2a) |
POP_N_ELEMS(1) : POP_VALUE |
|
ASSIGN_GLOBAL POP_VALUE : ASSIGN_GLOBAL_AND_POP($1a) |
ASSIGN_LOCAL POP_VALUE : ASSIGN_LOCAL_AND_POP($1a) |
NUMBER(0) : CONST0 |
NUMBER(1) : CONST1 |
NUMBER(-1) : CONST_1 |
NUMBER (0x7fffffff) : BIGNUM |
CONST0 NEGATE : CONST0 |
CONST1 NEGATE : CONST_1 |
CONST_1 NEGATE : CONST1 |
NUMBER NEGATE : NEG_NUMBER($1a) |
NUMBER [$1a < 0] : NEG_NUMBER (-$1a) |
NEG_NUMBER NEGATE : NUMBER ($1a) |
NEGATE CONST_1 ADD : COMPL |
NEGATE CONST1 SUBTRACT : COMPL |
CONST0 ASSIGN_LOCAL_AND_POP : CLEAR_LOCAL($2a) |
|
CONST_1 MULTIPLY : NEGATE |
#CONST0 MULTIPLY : POP_VALUE CONST0 |
CONST1 MULTIPLY : |
#NUMBER MULTIPLY [count_bits($1a)==1]: NUMBER(my_log2($1a)) LSH |
|
CONST_1 DIVIDE : NEGATE |
CONST1 DIVIDE : |
#NUMBER DIVIDE [count_bits($1a)==1]: NUMBER(my_log2($1a)) RSH |
|
CONST0 SUBTRACT: |
CONST0 XOR: |
CONST_1 XOR: COMPL |
EQ CONST0: NOT |
CONST0 RETURN: RETURN_0 |
INC POP_VALUE: INC_AND_POP |
POST_INC POP_VALUE: INC_AND_POP |
DEC POP_VALUE: DEC_AND_POP |
POST_DEC POP_VALUE: DEC_AND_POP |
NOT BRANCH_WHEN_NON_ZERO: BRANCH_WHEN_ZERO($2a) |
NOT BRANCH_WHEN_ZERO: BRANCH_WHEN_NON_ZERO($2a) |
|
BRANCH !LABEL : BRANCH($1a) |
RETURN !LABEL : RETURN |
RETURN_0 !LABEL : RETURN_0 |
BRANCH LABEL ($1a) : LABEL ($1a) |
|
LOCAL_LVALUE INC : INC_LOCAL ($1a) |
LOCAL_LVALUE POST_INC : POST_INC_LOCAL ($1a) |
LOCAL_LVALUE INC_AND_POP : INC_LOCAL_AND_POP ($1a) |
INC_LOCAL POP_VALUE : INC_LOCAL_AND_POP ($1a) |
POST_INC_LOCAL POP_VALUE : INC_LOCAL_AND_POP ($1a) |
|
LOCAL_LVALUE DEC : DEC_LOCAL ($1a) |
LOCAL_LVALUE POST_DEC : POST_DEC_LOCAL ($1a) |
LOCAL_LVALUE DEC_AND_POP : DEC_LOCAL_AND_POP ($1a) |
DEC_LOCAL POP_VALUE : DEC_LOCAL_AND_POP ($1a) |
POST_DEC_LOCAL POP_VALUE : DEC_LOCAL_AND_POP ($1a) |
|
CONST1 BRANCH_WHEN_ZERO: |
CONST0 BRANCH_WHEN_ZERO: BRANCH($2a) |
CONST1 BRANCH_WHEN_NON_ZERO: BRANCH($2a) |
CONST0 BRANCH_WHEN_NON_ZERO: |
|
EQ BRANCH_WHEN_NON_ZERO: BRANCH_WHEN_EQ ($2a) |
NE BRANCH_WHEN_NON_ZERO: BRANCH_WHEN_NE ($2a) |
LT BRANCH_WHEN_NON_ZERO: BRANCH_WHEN_LT ($2a) |
GT BRANCH_WHEN_NON_ZERO: BRANCH_WHEN_GT ($2a) |
LE BRANCH_WHEN_NON_ZERO: BRANCH_WHEN_LE ($2a) |
GE BRANCH_WHEN_NON_ZERO: BRANCH_WHEN_GE ($2a) |
|
EQ BRANCH_WHEN_ZERO: BRANCH_WHEN_NE ($2a) |
NE BRANCH_WHEN_ZERO: BRANCH_WHEN_EQ ($2a) |
LT BRANCH_WHEN_ZERO: BRANCH_WHEN_GE ($2a) |
GT BRANCH_WHEN_ZERO: BRANCH_WHEN_LE ($2a) |
LE BRANCH_WHEN_ZERO: BRANCH_WHEN_GT ($2a) |
GE BRANCH_WHEN_ZERO: BRANCH_WHEN_LT ($2a) |
|
EQ NOT: NE |
NE NOT: EQ |
LT NOT: GE |
GT NOT: LE |
LE NOT: GT |
GE NOT: LT |
|