Change expr,type to type:expr, mov rN,r0 to get rN, mov r0,rN to set Rn
authorNick Downing <nick@ndcode.org>
Mon, 22 Jan 2024 10:28:30 +0000 (21:28 +1100)
committerNick Downing <nick@ndcode.org>
Mon, 22 Jan 2024 10:43:47 +0000 (21:43 +1100)
c_vm.c
test.asm
vm_asm.l
vm_asm.t
vm_asm.y

diff --git a/c_vm.c b/c_vm.c
index f9b593c..be2b309 100644 (file)
--- a/c_vm.c
+++ b/c_vm.c
@@ -3,21 +3,21 @@
 enum op {
   // the following are coded as OP_xxx
   OP_NOP = 0,
-  OP_ADD_EXPR_INT8_R1,
-  OP_ADD_EXPR_INT8_R2,
-  OP_ADD_EXPR_INT8_R3,
-  OP_ADD_EXPR_INT8_R4,
-  OP_ADD_EXPR_INT8_R5,
-  OP_ADD_EXPR_INT16_R1,
-  OP_ADD_EXPR_INT16_R2,
-  OP_ADD_EXPR_INT16_R3,
-  OP_ADD_EXPR_INT16_R4,
-  OP_ADD_EXPR_INT16_R5,
-  OP_ADD_EXPR_INT32_R1,
-  OP_ADD_EXPR_INT32_R2,
-  OP_ADD_EXPR_INT32_R3,
-  OP_ADD_EXPR_INT32_R4,
-  OP_ADD_EXPR_INT32_R5,
+  OP_ADD_INT8_EXPR_R1,
+  OP_ADD_INT8_EXPR_R2,
+  OP_ADD_INT8_EXPR_R3,
+  OP_ADD_INT8_EXPR_R4,
+  OP_ADD_INT8_EXPR_R5,
+  OP_ADD_INT16_EXPR_R1,
+  OP_ADD_INT16_EXPR_R2,
+  OP_ADD_INT16_EXPR_R3,
+  OP_ADD_INT16_EXPR_R4,
+  OP_ADD_INT16_EXPR_R5,
+  OP_ADD_INT32_EXPR_R1,
+  OP_ADD_INT32_EXPR_R2,
+  OP_ADD_INT32_EXPR_R3,
+  OP_ADD_INT32_EXPR_R4,
+  OP_ADD_INT32_EXPR_R5,
   OP_ADD_INT8,
   OP_ADD_INT16,
   OP_ADD_INT32,
@@ -26,9 +26,9 @@ enum op {
   OP_AND_INT16,
   OP_AND_INT32,
   OP_CALL,
-  OP_CALL_EXPR_INT8,
-  OP_CALL_EXPR_INT16,
-  OP_CALL_EXPR_INT32,
+  OP_CALL_INT8_EXPR,
+  OP_CALL_INT16_EXPR,
+  OP_CALL_INT32_EXPR,
   OP_CVT_INT8_INT16,
   OP_CVT_INT8_INT32,
   OP_CVT_INT8_FLOAT32,
@@ -79,66 +79,66 @@ enum op {
   OP_IMM_EXPR_8,
   OP_IMM_EXPR_16,
   OP_IMM_EXPR_32,
-  OP_JMPF_INT8_EXPR_INT8,
-  OP_JMPF_INT8_EXPR_INT16,
-  OP_JMPF_INT8_EXPR_INT32,
-  OP_JMPF_INT16_EXPR_INT8,
-  OP_JMPF_INT16_EXPR_INT16,
-  OP_JMPF_INT16_EXPR_INT32,
-  OP_JMPF_INT32_EXPR_INT8,
-  OP_JMPF_INT32_EXPR_INT16,
-  OP_JMPF_INT32_EXPR_INT32,
-  OP_JMPF_FLOAT32_EXPR_INT8,
-  OP_JMPF_FLOAT32_EXPR_INT16,
-  OP_JMPF_FLOAT32_EXPR_INT32,
-  OP_JMPF_R1_EXPR_INT8,
-  OP_JMPF_R1_EXPR_INT16,
-  OP_JMPF_R1_EXPR_INT32,
-  OP_JMPF_R2_EXPR_INT8,
-  OP_JMPF_R2_EXPR_INT16,
-  OP_JMPF_R2_EXPR_INT32,
-  OP_JMPF_R3_EXPR_INT8,
-  OP_JMPF_R3_EXPR_INT16,
-  OP_JMPF_R3_EXPR_INT32,
-  OP_JMPT_INT8_EXPR_INT8,
-  OP_JMPT_INT8_EXPR_INT16,
-  OP_JMPT_INT8_EXPR_INT32,
-  OP_JMPT_INT16_EXPR_INT8,
-  OP_JMPT_INT16_EXPR_INT16,
-  OP_JMPT_INT16_EXPR_INT32,
-  OP_JMPT_INT32_EXPR_INT8,
-  OP_JMPT_INT32_EXPR_INT16,
-  OP_JMPT_INT32_EXPR_INT32,
-  OP_JMPT_FLOAT32_EXPR_INT8,
-  OP_JMPT_FLOAT32_EXPR_INT16,
-  OP_JMPT_FLOAT32_EXPR_INT32,
-  OP_JMPT_R1_EXPR_INT8,
-  OP_JMPT_R1_EXPR_INT16,
-  OP_JMPT_R1_EXPR_INT32,
-  OP_JMPT_R2_EXPR_INT8,
-  OP_JMPT_R2_EXPR_INT16,
-  OP_JMPT_R2_EXPR_INT32,
-  OP_JMPT_R3_EXPR_INT8,
-  OP_JMPT_R3_EXPR_INT16,
-  OP_JMPT_R3_EXPR_INT32,
+  OP_JMPF_INT8_INT8_EXPR,
+  OP_JMPF_INT8_INT16_EXPR,
+  OP_JMPF_INT8_INT32_EXPR,
+  OP_JMPF_INT16_INT8_EXPR,
+  OP_JMPF_INT16_INT16_EXPR,
+  OP_JMPF_INT16_INT32_EXPR,
+  OP_JMPF_INT32_INT8_EXPR,
+  OP_JMPF_INT32_INT16_EXPR,
+  OP_JMPF_INT32_INT32_EXPR,
+  OP_JMPF_FLOAT32_INT8_EXPR,
+  OP_JMPF_FLOAT32_INT16_EXPR,
+  OP_JMPF_FLOAT32_INT32_EXPR,
+  OP_JMPF_R1_INT8_EXPR,
+  OP_JMPF_R1_INT16_EXPR,
+  OP_JMPF_R1_INT32_EXPR,
+  OP_JMPF_R2_INT8_EXPR,
+  OP_JMPF_R2_INT16_EXPR,
+  OP_JMPF_R2_INT32_EXPR,
+  OP_JMPF_R3_INT8_EXPR,
+  OP_JMPF_R3_INT16_EXPR,
+  OP_JMPF_R3_INT32_EXPR,
+  OP_JMPT_INT8_INT8_EXPR,
+  OP_JMPT_INT8_INT16_EXPR,
+  OP_JMPT_INT8_INT32_EXPR,
+  OP_JMPT_INT16_INT8_EXPR,
+  OP_JMPT_INT16_INT16_EXPR,
+  OP_JMPT_INT16_INT32_EXPR,
+  OP_JMPT_INT32_INT8_EXPR,
+  OP_JMPT_INT32_INT16_EXPR,
+  OP_JMPT_INT32_INT32_EXPR,
+  OP_JMPT_FLOAT32_INT8_EXPR,
+  OP_JMPT_FLOAT32_INT16_EXPR,
+  OP_JMPT_FLOAT32_INT32_EXPR,
+  OP_JMPT_R1_INT8_EXPR,
+  OP_JMPT_R1_INT16_EXPR,
+  OP_JMPT_R1_INT32_EXPR,
+  OP_JMPT_R2_INT8_EXPR,
+  OP_JMPT_R2_INT16_EXPR,
+  OP_JMPT_R2_INT32_EXPR,
+  OP_JMPT_R3_INT8_EXPR,
+  OP_JMPT_R3_INT16_EXPR,
+  OP_JMPT_R3_INT32_EXPR,
   OP_LD_8,
   OP_LD_16,
   OP_LD_32,
-  OP_LEA_EXPR_INT8_R1,
-  OP_LEA_EXPR_INT8_R2,
-  OP_LEA_EXPR_INT8_R3,
-  OP_LEA_EXPR_INT8_R4,
-  OP_LEA_EXPR_INT8_R5,
-  OP_LEA_EXPR_INT16_R1,
-  OP_LEA_EXPR_INT16_R2,
-  OP_LEA_EXPR_INT16_R3,
-  OP_LEA_EXPR_INT16_R4,
-  OP_LEA_EXPR_INT16_R5,
-  OP_LEA_EXPR_INT32_R1,
-  OP_LEA_EXPR_INT32_R2,
-  OP_LEA_EXPR_INT32_R3,
-  OP_LEA_EXPR_INT32_R4,
-  OP_LEA_EXPR_INT32_R5,
+  OP_LEA_INT8_EXPR_R1,
+  OP_LEA_INT8_EXPR_R2,
+  OP_LEA_INT8_EXPR_R3,
+  OP_LEA_INT8_EXPR_R4,
+  OP_LEA_INT8_EXPR_R5,
+  OP_LEA_INT16_EXPR_R1,
+  OP_LEA_INT16_EXPR_R2,
+  OP_LEA_INT16_EXPR_R3,
+  OP_LEA_INT16_EXPR_R4,
+  OP_LEA_INT16_EXPR_R5,
+  OP_LEA_INT32_EXPR_R1,
+  OP_LEA_INT32_EXPR_R2,
+  OP_LEA_INT32_EXPR_R3,
+  OP_LEA_INT32_EXPR_R4,
+  OP_LEA_INT32_EXPR_R5,
   OP_LE_INT8,
   OP_LE_INT16,
   OP_LE_INT32,
@@ -165,16 +165,16 @@ enum op {
   OP_MOD_R_UINT8,
   OP_MOD_R_UINT16,
   OP_MOD_R_UINT32,
-  OP_MOV_R0_R1,
-  OP_MOV_R0_R2,
-  OP_MOV_R0_R3,
-  OP_MOV_R0_R4,
-  OP_MOV_R0_R5,
-  OP_MOV_R1_R0,
-  OP_MOV_R2_R0,
-  OP_MOV_R3_R0,
-  OP_MOV_R4_R0,
-  OP_MOV_R5_R0,
+  OP_SET_R1,
+  OP_SET_R2,
+  OP_SET_R3,
+  OP_SET_R4,
+  OP_SET_R5,
+  OP_GET_R1,
+  OP_GET_R2,
+  OP_GET_R3,
+  OP_GET_R4,
+  OP_GET_R5,
   OP_MUL_INT8,
   OP_MUL_INT16,
   OP_MUL_INT32,
@@ -249,18 +249,18 @@ enum op {
 
   // the following are coded as 0xff, OP_xxx & 0xff
   // the commented items are for a system with 64-bit addressing
-  //OP_ADD_EXPR_INT64_R1 = 0x100,
-  //OP_ADD_EXPR_INT64_R2,
-  //OP_ADD_EXPR_INT64_R3,
-  //OP_ADD_EXPR_INT64_R4,
-  //OP_ADD_EXPR_INT64_R5,
+  //OP_ADD_INT64_EXPR_R1 = 0x100,
+  //OP_ADD_INT64_EXPR_R2,
+  //OP_ADD_INT64_EXPR_R3,
+  //OP_ADD_INT64_EXPR_R4,
+  //OP_ADD_INT64_EXPR_R5,
   OP_ADD_INT64 = 0x100,
   OP_ADD_INT128,
   OP_ADD_FLOAT64,
   OP_ADD_FLOAT128,
   OP_AND_INT64,
   OP_AND_INT128,
-  //OP_CALL_EXPR_INT64,
+  //OP_CALL_INT64_EXPR,
   OP_CVT_INT8_INT64,
   OP_CVT_INT8_INT128,
   OP_CVT_INT8_FLOAT64,
@@ -347,59 +347,59 @@ enum op {
   OP_GT_FLOAT128,
   OP_IMM_EXPR_64,
   OP_IMM_EXPR_128,
-  //OP_JMPF_INT8_EXPR_INT64,
-  //OP_JMPF_INT16_EXPR_INT64,
-  //OP_JMPF_INT32_EXPR_INT64,
-  OP_JMPF_INT64_EXPR_INT8,
-  OP_JMPF_INT64_EXPR_INT16,
-  OP_JMPF_INT64_EXPR_INT32,
-  //OP_JMPF_INT64_EXPR_INT64,
-  OP_JMPF_INT128_EXPR_INT8,
-  OP_JMPF_INT128_EXPR_INT16,
-  OP_JMPF_INT128_EXPR_INT32,
-  //OP_JMPF_INT128_EXPR_INT64,
-  //OP_JMPF_FLOAT32_EXPR_INT64,
-  OP_JMPF_FLOAT64_EXPR_INT8,
-  OP_JMPF_FLOAT64_EXPR_INT16,
-  OP_JMPF_FLOAT64_EXPR_INT32,
-  //OP_JMPF_FLOAT64_EXPR_INT64,
-  OP_JMPF_FLOAT128_EXPR_INT8,
-  OP_JMPF_FLOAT128_EXPR_INT16,
-  OP_JMPF_FLOAT128_EXPR_INT32,
-  //OP_JMPF_FLOAT128_EXPR_INT64,
-  //OP_JMPF_R1_EXPR_INT64,
-  //OP_JMPF_R2_EXPR_INT64,
-  //OP_JMPF_R3_EXPR_INT64,
-  //OP_JMPT_INT8_EXPR_INT64,
-  //OP_JMPT_INT16_EXPR_INT64,
-  //OP_JMPT_INT32_EXPR_INT64,
-  OP_JMPT_INT64_EXPR_INT8,
-  OP_JMPT_INT64_EXPR_INT16,
-  OP_JMPT_INT64_EXPR_INT32,
-  //OP_JMPT_INT64_EXPR_INT64,
-  OP_JMPT_INT128_EXPR_INT8,
-  OP_JMPT_INT128_EXPR_INT16,
-  OP_JMPT_INT128_EXPR_INT32,
-  //OP_JMPT_INT128_EXPR_INT64,
-  //OP_JMPT_FLOAT32_EXPR_INT64,
-  OP_JMPT_FLOAT64_EXPR_INT8,
-  OP_JMPT_FLOAT64_EXPR_INT16,
-  OP_JMPT_FLOAT64_EXPR_INT32,
-  //OP_JMPT_FLOAT64_EXPR_INT64,
-  OP_JMPT_FLOAT128_EXPR_INT8,
-  OP_JMPT_FLOAT128_EXPR_INT16,
-  OP_JMPT_FLOAT128_EXPR_INT32,
-  //OP_JMPT_FLOAT128_EXPR_INT64,
-  //OP_JMPT_R1_EXPR_INT64,
-  //OP_JMPT_R2_EXPR_INT64,
-  //OP_JMPT_R3_EXPR_INT64,
+  //OP_JMPF_INT8_INT64_EXPR,
+  //OP_JMPF_INT16_INT64_EXPR,
+  //OP_JMPF_INT32_INT64_EXPR,
+  OP_JMPF_INT64_INT8_EXPR,
+  OP_JMPF_INT64_INT16_EXPR,
+  OP_JMPF_INT64_INT32_EXPR,
+  //OP_JMPF_INT64_INT64_EXPR,
+  OP_JMPF_INT128_INT8_EXPR,
+  OP_JMPF_INT128_INT16_EXPR,
+  OP_JMPF_INT128_INT32_EXPR,
+  //OP_JMPF_INT128_INT64_EXPR,
+  //OP_JMPF_FLOAT32_INT64_EXPR,
+  OP_JMPF_FLOAT64_INT8_EXPR,
+  OP_JMPF_FLOAT64_INT16_EXPR,
+  OP_JMPF_FLOAT64_INT32_EXPR,
+  //OP_JMPF_FLOAT64_INT64_EXPR,
+  OP_JMPF_FLOAT128_INT8_EXPR,
+  OP_JMPF_FLOAT128_INT16_EXPR,
+  OP_JMPF_FLOAT128_INT32_EXPR,
+  //OP_JMPF_FLOAT128_INT64_EXPR,
+  //OP_JMPF_R1_INT64_EXPR,
+  //OP_JMPF_R2_INT64_EXPR,
+  //OP_JMPF_R3_INT64_EXPR,
+  //OP_JMPT_INT8_INT64_EXPR,
+  //OP_JMPT_INT16_INT64_EXPR,
+  //OP_JMPT_INT32_INT64_EXPR,
+  OP_JMPT_INT64_INT8_EXPR,
+  OP_JMPT_INT64_INT16_EXPR,
+  OP_JMPT_INT64_INT32_EXPR,
+  //OP_JMPT_INT64_INT64_EXPR,
+  OP_JMPT_INT128_INT8_EXPR,
+  OP_JMPT_INT128_INT16_EXPR,
+  OP_JMPT_INT128_INT32_EXPR,
+  //OP_JMPT_INT128_INT64_EXPR,
+  //OP_JMPT_FLOAT32_INT64_EXPR,
+  OP_JMPT_FLOAT64_INT8_EXPR,
+  OP_JMPT_FLOAT64_INT16_EXPR,
+  OP_JMPT_FLOAT64_INT32_EXPR,
+  //OP_JMPT_FLOAT64_INT64_EXPR,
+  OP_JMPT_FLOAT128_INT8_EXPR,
+  OP_JMPT_FLOAT128_INT16_EXPR,
+  OP_JMPT_FLOAT128_INT32_EXPR,
+  //OP_JMPT_FLOAT128_INT64_EXPR,
+  //OP_JMPT_R1_INT64_EXPR,
+  //OP_JMPT_R2_INT64_EXPR,
+  //OP_JMPT_R3_INT64_EXPR,
   OP_LD_64,
   OP_LD_128,
-  //OP_LEA_EXPR_INT64_R1,
-  //OP_LEA_EXPR_INT64_R2,
-  //OP_LEA_EXPR_INT64_R3,
-  //OP_LEA_EXPR_INT64_R4,
-  //OP_LEA_EXPR_INT64_R5,
+  //OP_LEA_INT64_EXPR_R1,
+  //OP_LEA_INT64_EXPR_R2,
+  //OP_LEA_INT64_EXPR_R3,
+  //OP_LEA_INT64_EXPR_R4,
+  //OP_LEA_INT64_EXPR_R5,
   OP_LE_INT64,
   OP_LE_INT128,
   OP_LE_UINT64,
@@ -470,21 +470,21 @@ enum op {
 
 int main(void) {
   printf("OP_NOP = 0x%x\n", OP_NOP);
-  printf("OP_ADD_EXPR_INT8_R1 = 0x%x\n", OP_ADD_EXPR_INT8_R1);
-  printf("OP_ADD_EXPR_INT8_R2 = 0x%x\n", OP_ADD_EXPR_INT8_R2);
-  printf("OP_ADD_EXPR_INT8_R3 = 0x%x\n", OP_ADD_EXPR_INT8_R3);
-  printf("OP_ADD_EXPR_INT8_R4 = 0x%x\n", OP_ADD_EXPR_INT8_R4);
-  printf("OP_ADD_EXPR_INT8_R5 = 0x%x\n", OP_ADD_EXPR_INT8_R5);
-  printf("OP_ADD_EXPR_INT16_R1 = 0x%x\n", OP_ADD_EXPR_INT16_R1);
-  printf("OP_ADD_EXPR_INT16_R2 = 0x%x\n", OP_ADD_EXPR_INT16_R2);
-  printf("OP_ADD_EXPR_INT16_R3 = 0x%x\n", OP_ADD_EXPR_INT16_R3);
-  printf("OP_ADD_EXPR_INT16_R4 = 0x%x\n", OP_ADD_EXPR_INT16_R4);
-  printf("OP_ADD_EXPR_INT16_R5 = 0x%x\n", OP_ADD_EXPR_INT16_R5);
-  printf("OP_ADD_EXPR_INT32_R1 = 0x%x\n", OP_ADD_EXPR_INT32_R1);
-  printf("OP_ADD_EXPR_INT32_R2 = 0x%x\n", OP_ADD_EXPR_INT32_R2);
-  printf("OP_ADD_EXPR_INT32_R3 = 0x%x\n", OP_ADD_EXPR_INT32_R3);
-  printf("OP_ADD_EXPR_INT32_R4 = 0x%x\n", OP_ADD_EXPR_INT32_R4);
-  printf("OP_ADD_EXPR_INT32_R5 = 0x%x\n", OP_ADD_EXPR_INT32_R5);
+  printf("OP_ADD_INT8_EXPR_R1 = 0x%x\n", OP_ADD_INT8_EXPR_R1);
+  printf("OP_ADD_INT8_EXPR_R2 = 0x%x\n", OP_ADD_INT8_EXPR_R2);
+  printf("OP_ADD_INT8_EXPR_R3 = 0x%x\n", OP_ADD_INT8_EXPR_R3);
+  printf("OP_ADD_INT8_EXPR_R4 = 0x%x\n", OP_ADD_INT8_EXPR_R4);
+  printf("OP_ADD_INT8_EXPR_R5 = 0x%x\n", OP_ADD_INT8_EXPR_R5);
+  printf("OP_ADD_INT16_EXPR_R1 = 0x%x\n", OP_ADD_INT16_EXPR_R1);
+  printf("OP_ADD_INT16_EXPR_R2 = 0x%x\n", OP_ADD_INT16_EXPR_R2);
+  printf("OP_ADD_INT16_EXPR_R3 = 0x%x\n", OP_ADD_INT16_EXPR_R3);
+  printf("OP_ADD_INT16_EXPR_R4 = 0x%x\n", OP_ADD_INT16_EXPR_R4);
+  printf("OP_ADD_INT16_EXPR_R5 = 0x%x\n", OP_ADD_INT16_EXPR_R5);
+  printf("OP_ADD_INT32_EXPR_R1 = 0x%x\n", OP_ADD_INT32_EXPR_R1);
+  printf("OP_ADD_INT32_EXPR_R2 = 0x%x\n", OP_ADD_INT32_EXPR_R2);
+  printf("OP_ADD_INT32_EXPR_R3 = 0x%x\n", OP_ADD_INT32_EXPR_R3);
+  printf("OP_ADD_INT32_EXPR_R4 = 0x%x\n", OP_ADD_INT32_EXPR_R4);
+  printf("OP_ADD_INT32_EXPR_R5 = 0x%x\n", OP_ADD_INT32_EXPR_R5);
   printf("OP_ADD_INT8 = 0x%x\n", OP_ADD_INT8);
   printf("OP_ADD_INT16 = 0x%x\n", OP_ADD_INT16);
   printf("OP_ADD_INT32 = 0x%x\n", OP_ADD_INT32);
@@ -493,9 +493,9 @@ int main(void) {
   printf("OP_AND_INT16 = 0x%x\n", OP_AND_INT16);
   printf("OP_AND_INT32 = 0x%x\n", OP_AND_INT32);
   printf("OP_CALL = 0x%x\n", OP_CALL);
-  printf("OP_CALL_EXPR_INT8 = 0x%x\n", OP_CALL_EXPR_INT8);
-  printf("OP_CALL_EXPR_INT16 = 0x%x\n", OP_CALL_EXPR_INT16);
-  printf("OP_CALL_EXPR_INT32 = 0x%x\n", OP_CALL_EXPR_INT32);
+  printf("OP_CALL_INT8_EXPR = 0x%x\n", OP_CALL_INT8_EXPR);
+  printf("OP_CALL_INT16_EXPR = 0x%x\n", OP_CALL_INT16_EXPR);
+  printf("OP_CALL_INT32_EXPR = 0x%x\n", OP_CALL_INT32_EXPR);
   printf("OP_CVT_INT8_INT16 = 0x%x\n", OP_CVT_INT8_INT16);
   printf("OP_CVT_INT8_INT32 = 0x%x\n", OP_CVT_INT8_INT32);
   printf("OP_CVT_INT8_FLOAT32 = 0x%x\n", OP_CVT_INT8_FLOAT32);
@@ -546,66 +546,66 @@ int main(void) {
   printf("OP_IMM_EXPR_8 = 0x%x\n", OP_IMM_EXPR_8);
   printf("OP_IMM_EXPR_16 = 0x%x\n", OP_IMM_EXPR_16);
   printf("OP_IMM_EXPR_32 = 0x%x\n", OP_IMM_EXPR_32);
-  printf("OP_JMPF_INT8_EXPR_INT8 = 0x%x\n", OP_JMPF_INT8_EXPR_INT8);
-  printf("OP_JMPF_INT8_EXPR_INT16 = 0x%x\n", OP_JMPF_INT8_EXPR_INT16);
-  printf("OP_JMPF_INT8_EXPR_INT32 = 0x%x\n", OP_JMPF_INT8_EXPR_INT32);
-  printf("OP_JMPF_INT16_EXPR_INT8 = 0x%x\n", OP_JMPF_INT16_EXPR_INT8);
-  printf("OP_JMPF_INT16_EXPR_INT16 = 0x%x\n", OP_JMPF_INT16_EXPR_INT16);
-  printf("OP_JMPF_INT16_EXPR_INT32 = 0x%x\n", OP_JMPF_INT16_EXPR_INT32);
-  printf("OP_JMPF_INT32_EXPR_INT8 = 0x%x\n", OP_JMPF_INT32_EXPR_INT8);
-  printf("OP_JMPF_INT32_EXPR_INT16 = 0x%x\n", OP_JMPF_INT32_EXPR_INT16);
-  printf("OP_JMPF_INT32_EXPR_INT32 = 0x%x\n", OP_JMPF_INT32_EXPR_INT32);
-  printf("OP_JMPF_FLOAT32_EXPR_INT8 = 0x%x\n", OP_JMPF_FLOAT32_EXPR_INT8);
-  printf("OP_JMPF_FLOAT32_EXPR_INT16 = 0x%x\n", OP_JMPF_FLOAT32_EXPR_INT16);
-  printf("OP_JMPF_FLOAT32_EXPR_INT32 = 0x%x\n", OP_JMPF_FLOAT32_EXPR_INT32);
-  printf("OP_JMPF_R1_EXPR_INT8 = 0x%x\n", OP_JMPF_R1_EXPR_INT8);
-  printf("OP_JMPF_R1_EXPR_INT16 = 0x%x\n", OP_JMPF_R1_EXPR_INT16);
-  printf("OP_JMPF_R1_EXPR_INT32 = 0x%x\n", OP_JMPF_R1_EXPR_INT32);
-  printf("OP_JMPF_R2_EXPR_INT8 = 0x%x\n", OP_JMPF_R2_EXPR_INT8);
-  printf("OP_JMPF_R2_EXPR_INT16 = 0x%x\n", OP_JMPF_R2_EXPR_INT16);
-  printf("OP_JMPF_R2_EXPR_INT32 = 0x%x\n", OP_JMPF_R2_EXPR_INT32);
-  printf("OP_JMPF_R3_EXPR_INT8 = 0x%x\n", OP_JMPF_R3_EXPR_INT8);
-  printf("OP_JMPF_R3_EXPR_INT16 = 0x%x\n", OP_JMPF_R3_EXPR_INT16);
-  printf("OP_JMPF_R3_EXPR_INT32 = 0x%x\n", OP_JMPF_R3_EXPR_INT32);
-  printf("OP_JMPT_INT8_EXPR_INT8 = 0x%x\n", OP_JMPT_INT8_EXPR_INT8);
-  printf("OP_JMPT_INT8_EXPR_INT16 = 0x%x\n", OP_JMPT_INT8_EXPR_INT16);
-  printf("OP_JMPT_INT8_EXPR_INT32 = 0x%x\n", OP_JMPT_INT8_EXPR_INT32);
-  printf("OP_JMPT_INT16_EXPR_INT8 = 0x%x\n", OP_JMPT_INT16_EXPR_INT8);
-  printf("OP_JMPT_INT16_EXPR_INT16 = 0x%x\n", OP_JMPT_INT16_EXPR_INT16);
-  printf("OP_JMPT_INT16_EXPR_INT32 = 0x%x\n", OP_JMPT_INT16_EXPR_INT32);
-  printf("OP_JMPT_INT32_EXPR_INT8 = 0x%x\n", OP_JMPT_INT32_EXPR_INT8);
-  printf("OP_JMPT_INT32_EXPR_INT16 = 0x%x\n", OP_JMPT_INT32_EXPR_INT16);
-  printf("OP_JMPT_INT32_EXPR_INT32 = 0x%x\n", OP_JMPT_INT32_EXPR_INT32);
-  printf("OP_JMPT_FLOAT32_EXPR_INT8 = 0x%x\n", OP_JMPT_FLOAT32_EXPR_INT8);
-  printf("OP_JMPT_FLOAT32_EXPR_INT16 = 0x%x\n", OP_JMPT_FLOAT32_EXPR_INT16);
-  printf("OP_JMPT_FLOAT32_EXPR_INT32 = 0x%x\n", OP_JMPT_FLOAT32_EXPR_INT32);
-  printf("OP_JMPT_R1_EXPR_INT8 = 0x%x\n", OP_JMPT_R1_EXPR_INT8);
-  printf("OP_JMPT_R1_EXPR_INT16 = 0x%x\n", OP_JMPT_R1_EXPR_INT16);
-  printf("OP_JMPT_R1_EXPR_INT32 = 0x%x\n", OP_JMPT_R1_EXPR_INT32);
-  printf("OP_JMPT_R2_EXPR_INT8 = 0x%x\n", OP_JMPT_R2_EXPR_INT8);
-  printf("OP_JMPT_R2_EXPR_INT16 = 0x%x\n", OP_JMPT_R2_EXPR_INT16);
-  printf("OP_JMPT_R2_EXPR_INT32 = 0x%x\n", OP_JMPT_R2_EXPR_INT32);
-  printf("OP_JMPT_R3_EXPR_INT8 = 0x%x\n", OP_JMPT_R3_EXPR_INT8);
-  printf("OP_JMPT_R3_EXPR_INT16 = 0x%x\n", OP_JMPT_R3_EXPR_INT16);
-  printf("OP_JMPT_R3_EXPR_INT32 = 0x%x\n", OP_JMPT_R3_EXPR_INT32);
+  printf("OP_JMPF_INT8_INT8_EXPR = 0x%x\n", OP_JMPF_INT8_INT8_EXPR);
+  printf("OP_JMPF_INT8_INT16_EXPR = 0x%x\n", OP_JMPF_INT8_INT16_EXPR);
+  printf("OP_JMPF_INT8_INT32_EXPR = 0x%x\n", OP_JMPF_INT8_INT32_EXPR);
+  printf("OP_JMPF_INT16_INT8_EXPR = 0x%x\n", OP_JMPF_INT16_INT8_EXPR);
+  printf("OP_JMPF_INT16_INT16_EXPR = 0x%x\n", OP_JMPF_INT16_INT16_EXPR);
+  printf("OP_JMPF_INT16_INT32_EXPR = 0x%x\n", OP_JMPF_INT16_INT32_EXPR);
+  printf("OP_JMPF_INT32_INT8_EXPR = 0x%x\n", OP_JMPF_INT32_INT8_EXPR);
+  printf("OP_JMPF_INT32_INT16_EXPR = 0x%x\n", OP_JMPF_INT32_INT16_EXPR);
+  printf("OP_JMPF_INT32_INT32_EXPR = 0x%x\n", OP_JMPF_INT32_INT32_EXPR);
+  printf("OP_JMPF_FLOAT32_INT8_EXPR = 0x%x\n", OP_JMPF_FLOAT32_INT8_EXPR);
+  printf("OP_JMPF_FLOAT32_INT16_EXPR = 0x%x\n", OP_JMPF_FLOAT32_INT16_EXPR);
+  printf("OP_JMPF_FLOAT32_INT32_EXPR = 0x%x\n", OP_JMPF_FLOAT32_INT32_EXPR);
+  printf("OP_JMPF_R1_INT8_EXPR = 0x%x\n", OP_JMPF_R1_INT8_EXPR);
+  printf("OP_JMPF_R1_INT16_EXPR = 0x%x\n", OP_JMPF_R1_INT16_EXPR);
+  printf("OP_JMPF_R1_INT32_EXPR = 0x%x\n", OP_JMPF_R1_INT32_EXPR);
+  printf("OP_JMPF_R2_INT8_EXPR = 0x%x\n", OP_JMPF_R2_INT8_EXPR);
+  printf("OP_JMPF_R2_INT16_EXPR = 0x%x\n", OP_JMPF_R2_INT16_EXPR);
+  printf("OP_JMPF_R2_INT32_EXPR = 0x%x\n", OP_JMPF_R2_INT32_EXPR);
+  printf("OP_JMPF_R3_INT8_EXPR = 0x%x\n", OP_JMPF_R3_INT8_EXPR);
+  printf("OP_JMPF_R3_INT16_EXPR = 0x%x\n", OP_JMPF_R3_INT16_EXPR);
+  printf("OP_JMPF_R3_INT32_EXPR = 0x%x\n", OP_JMPF_R3_INT32_EXPR);
+  printf("OP_JMPT_INT8_INT8_EXPR = 0x%x\n", OP_JMPT_INT8_INT8_EXPR);
+  printf("OP_JMPT_INT8_INT16_EXPR = 0x%x\n", OP_JMPT_INT8_INT16_EXPR);
+  printf("OP_JMPT_INT8_INT32_EXPR = 0x%x\n", OP_JMPT_INT8_INT32_EXPR);
+  printf("OP_JMPT_INT16_INT8_EXPR = 0x%x\n", OP_JMPT_INT16_INT8_EXPR);
+  printf("OP_JMPT_INT16_INT16_EXPR = 0x%x\n", OP_JMPT_INT16_INT16_EXPR);
+  printf("OP_JMPT_INT16_INT32_EXPR = 0x%x\n", OP_JMPT_INT16_INT32_EXPR);
+  printf("OP_JMPT_INT32_INT8_EXPR = 0x%x\n", OP_JMPT_INT32_INT8_EXPR);
+  printf("OP_JMPT_INT32_INT16_EXPR = 0x%x\n", OP_JMPT_INT32_INT16_EXPR);
+  printf("OP_JMPT_INT32_INT32_EXPR = 0x%x\n", OP_JMPT_INT32_INT32_EXPR);
+  printf("OP_JMPT_FLOAT32_INT8_EXPR = 0x%x\n", OP_JMPT_FLOAT32_INT8_EXPR);
+  printf("OP_JMPT_FLOAT32_INT16_EXPR = 0x%x\n", OP_JMPT_FLOAT32_INT16_EXPR);
+  printf("OP_JMPT_FLOAT32_INT32_EXPR = 0x%x\n", OP_JMPT_FLOAT32_INT32_EXPR);
+  printf("OP_JMPT_R1_INT8_EXPR = 0x%x\n", OP_JMPT_R1_INT8_EXPR);
+  printf("OP_JMPT_R1_INT16_EXPR = 0x%x\n", OP_JMPT_R1_INT16_EXPR);
+  printf("OP_JMPT_R1_INT32_EXPR = 0x%x\n", OP_JMPT_R1_INT32_EXPR);
+  printf("OP_JMPT_R2_INT8_EXPR = 0x%x\n", OP_JMPT_R2_INT8_EXPR);
+  printf("OP_JMPT_R2_INT16_EXPR = 0x%x\n", OP_JMPT_R2_INT16_EXPR);
+  printf("OP_JMPT_R2_INT32_EXPR = 0x%x\n", OP_JMPT_R2_INT32_EXPR);
+  printf("OP_JMPT_R3_INT8_EXPR = 0x%x\n", OP_JMPT_R3_INT8_EXPR);
+  printf("OP_JMPT_R3_INT16_EXPR = 0x%x\n", OP_JMPT_R3_INT16_EXPR);
+  printf("OP_JMPT_R3_INT32_EXPR = 0x%x\n", OP_JMPT_R3_INT32_EXPR);
   printf("OP_LD_8 = 0x%x\n", OP_LD_8);
   printf("OP_LD_16 = 0x%x\n", OP_LD_16);
   printf("OP_LD_32 = 0x%x\n", OP_LD_32);
-  printf("OP_LEA_EXPR_INT8_R1 = 0x%x\n", OP_LEA_EXPR_INT8_R1);
-  printf("OP_LEA_EXPR_INT8_R2 = 0x%x\n", OP_LEA_EXPR_INT8_R2);
-  printf("OP_LEA_EXPR_INT8_R3 = 0x%x\n", OP_LEA_EXPR_INT8_R3);
-  printf("OP_LEA_EXPR_INT8_R4 = 0x%x\n", OP_LEA_EXPR_INT8_R4);
-  printf("OP_LEA_EXPR_INT8_R5 = 0x%x\n", OP_LEA_EXPR_INT8_R5);
-  printf("OP_LEA_EXPR_INT16_R1 = 0x%x\n", OP_LEA_EXPR_INT16_R1);
-  printf("OP_LEA_EXPR_INT16_R2 = 0x%x\n", OP_LEA_EXPR_INT16_R2);
-  printf("OP_LEA_EXPR_INT16_R3 = 0x%x\n", OP_LEA_EXPR_INT16_R3);
-  printf("OP_LEA_EXPR_INT16_R4 = 0x%x\n", OP_LEA_EXPR_INT16_R4);
-  printf("OP_LEA_EXPR_INT16_R5 = 0x%x\n", OP_LEA_EXPR_INT16_R5);
-  printf("OP_LEA_EXPR_INT32_R1 = 0x%x\n", OP_LEA_EXPR_INT32_R1);
-  printf("OP_LEA_EXPR_INT32_R2 = 0x%x\n", OP_LEA_EXPR_INT32_R2);
-  printf("OP_LEA_EXPR_INT32_R3 = 0x%x\n", OP_LEA_EXPR_INT32_R3);
-  printf("OP_LEA_EXPR_INT32_R4 = 0x%x\n", OP_LEA_EXPR_INT32_R4);
-  printf("OP_LEA_EXPR_INT32_R5 = 0x%x\n", OP_LEA_EXPR_INT32_R5);
+  printf("OP_LEA_INT8_EXPR_R1 = 0x%x\n", OP_LEA_INT8_EXPR_R1);
+  printf("OP_LEA_INT8_EXPR_R2 = 0x%x\n", OP_LEA_INT8_EXPR_R2);
+  printf("OP_LEA_INT8_EXPR_R3 = 0x%x\n", OP_LEA_INT8_EXPR_R3);
+  printf("OP_LEA_INT8_EXPR_R4 = 0x%x\n", OP_LEA_INT8_EXPR_R4);
+  printf("OP_LEA_INT8_EXPR_R5 = 0x%x\n", OP_LEA_INT8_EXPR_R5);
+  printf("OP_LEA_INT16_EXPR_R1 = 0x%x\n", OP_LEA_INT16_EXPR_R1);
+  printf("OP_LEA_INT16_EXPR_R2 = 0x%x\n", OP_LEA_INT16_EXPR_R2);
+  printf("OP_LEA_INT16_EXPR_R3 = 0x%x\n", OP_LEA_INT16_EXPR_R3);
+  printf("OP_LEA_INT16_EXPR_R4 = 0x%x\n", OP_LEA_INT16_EXPR_R4);
+  printf("OP_LEA_INT16_EXPR_R5 = 0x%x\n", OP_LEA_INT16_EXPR_R5);
+  printf("OP_LEA_INT32_EXPR_R1 = 0x%x\n", OP_LEA_INT32_EXPR_R1);
+  printf("OP_LEA_INT32_EXPR_R2 = 0x%x\n", OP_LEA_INT32_EXPR_R2);
+  printf("OP_LEA_INT32_EXPR_R3 = 0x%x\n", OP_LEA_INT32_EXPR_R3);
+  printf("OP_LEA_INT32_EXPR_R4 = 0x%x\n", OP_LEA_INT32_EXPR_R4);
+  printf("OP_LEA_INT32_EXPR_R5 = 0x%x\n", OP_LEA_INT32_EXPR_R5);
   printf("OP_LE_INT8 = 0x%x\n", OP_LE_INT8);
   printf("OP_LE_INT16 = 0x%x\n", OP_LE_INT16);
   printf("OP_LE_INT32 = 0x%x\n", OP_LE_INT32);
@@ -632,16 +632,16 @@ int main(void) {
   printf("OP_MOD_R_UINT8 = 0x%x\n", OP_MOD_R_UINT8);
   printf("OP_MOD_R_UINT16 = 0x%x\n", OP_MOD_R_UINT16);
   printf("OP_MOD_R_UINT32 = 0x%x\n", OP_MOD_R_UINT32);
-  printf("OP_MOV_R0_R1 = 0x%x\n", OP_MOV_R0_R1);
-  printf("OP_MOV_R0_R2 = 0x%x\n", OP_MOV_R0_R2);
-  printf("OP_MOV_R0_R3 = 0x%x\n", OP_MOV_R0_R3);
-  printf("OP_MOV_R0_R4 = 0x%x\n", OP_MOV_R0_R4);
-  printf("OP_MOV_R0_R5 = 0x%x\n", OP_MOV_R0_R5);
-  printf("OP_MOV_R1_R0 = 0x%x\n", OP_MOV_R1_R0);
-  printf("OP_MOV_R2_R0 = 0x%x\n", OP_MOV_R2_R0);
-  printf("OP_MOV_R3_R0 = 0x%x\n", OP_MOV_R3_R0);
-  printf("OP_MOV_R4_R0 = 0x%x\n", OP_MOV_R4_R0);
-  printf("OP_MOV_R5_R0 = 0x%x\n", OP_MOV_R5_R0);
+  printf("OP_SET_R1 = 0x%x\n", OP_SET_R1);
+  printf("OP_SET_R2 = 0x%x\n", OP_SET_R2);
+  printf("OP_SET_R3 = 0x%x\n", OP_SET_R3);
+  printf("OP_SET_R4 = 0x%x\n", OP_SET_R4);
+  printf("OP_SET_R5 = 0x%x\n", OP_SET_R5);
+  printf("OP_GET_R1 = 0x%x\n", OP_GET_R1);
+  printf("OP_GET_R2 = 0x%x\n", OP_GET_R2);
+  printf("OP_GET_R3 = 0x%x\n", OP_GET_R3);
+  printf("OP_GET_R4 = 0x%x\n", OP_GET_R4);
+  printf("OP_GET_R5 = 0x%x\n", OP_GET_R5);
   printf("OP_MUL_INT8 = 0x%x\n", OP_MUL_INT8);
   printf("OP_MUL_INT16 = 0x%x\n", OP_MUL_INT16);
   printf("OP_MUL_INT32 = 0x%x\n", OP_MUL_INT32);
@@ -713,18 +713,18 @@ int main(void) {
   printf("OP_XOR_INT8 = 0x%x\n", OP_XOR_INT8);
   printf("OP_XOR_INT16 = 0x%x\n", OP_XOR_INT16);
   printf("OP_XOR_INT32 = 0x%x\n", OP_XOR_INT32);
-  //printf("OP_ADD_EXPR_INT64_R1 = 0x%x\n", OP_ADD_EXPR_INT64_R1);
-  //printf("OP_ADD_EXPR_INT64_R2 = 0x%x\n", OP_ADD_EXPR_INT64_R2);
-  //printf("OP_ADD_EXPR_INT64_R3 = 0x%x\n", OP_ADD_EXPR_INT64_R3);
-  //printf("OP_ADD_EXPR_INT64_R4 = 0x%x\n", OP_ADD_EXPR_INT64_R4);
-  //printf("OP_ADD_EXPR_INT64_R5 = 0x%x\n", OP_ADD_EXPR_INT64_R5);
+  //printf("OP_ADD_INT64_EXPR_R1 = 0x%x\n", OP_ADD_INT64_EXPR_R1);
+  //printf("OP_ADD_INT64_EXPR_R2 = 0x%x\n", OP_ADD_INT64_EXPR_R2);
+  //printf("OP_ADD_INT64_EXPR_R3 = 0x%x\n", OP_ADD_INT64_EXPR_R3);
+  //printf("OP_ADD_INT64_EXPR_R4 = 0x%x\n", OP_ADD_INT64_EXPR_R4);
+  //printf("OP_ADD_INT64_EXPR_R5 = 0x%x\n", OP_ADD_INT64_EXPR_R5);
   printf("OP_ADD_INT64 = 0x%x\n", OP_ADD_INT64);
   printf("OP_ADD_INT128 = 0x%x\n", OP_ADD_INT128);
   printf("OP_ADD_FLOAT64 = 0x%x\n", OP_ADD_FLOAT64);
   printf("OP_ADD_FLOAT128 = 0x%x\n", OP_ADD_FLOAT128);
   printf("OP_AND_INT64 = 0x%x\n", OP_AND_INT64);
   printf("OP_AND_INT128 = 0x%x\n", OP_AND_INT128);
-  //printf("OP_CALL_EXPR_INT64 = 0x%x\n", OP_CALL_EXPR_INT64);
+  //printf("OP_CALL_INT64_EXPR = 0x%x\n", OP_CALL_INT64_EXPR);
   printf("OP_CVT_INT8_INT64 = 0x%x\n", OP_CVT_INT8_INT64);
   printf("OP_CVT_INT8_INT128 = 0x%x\n", OP_CVT_INT8_INT128);
   printf("OP_CVT_INT8_FLOAT64 = 0x%x\n", OP_CVT_INT8_FLOAT64);
@@ -811,59 +811,59 @@ int main(void) {
   printf("OP_GT_FLOAT128 = 0x%x\n", OP_GT_FLOAT128);
   printf("OP_IMM_EXPR_64 = 0x%x\n", OP_IMM_EXPR_64);
   printf("OP_IMM_EXPR_128 = 0x%x\n", OP_IMM_EXPR_128);
-  //printf("OP_JMPF_INT8_EXPR_INT64 = 0x%x\n", OP_JMPF_INT8_EXPR_INT64);
-  //printf("OP_JMPF_INT16_EXPR_INT64 = 0x%x\n", OP_JMPF_INT16_EXPR_INT64);
-  //printf("OP_JMPF_INT32_EXPR_INT64 = 0x%x\n", OP_JMPF_INT32_EXPR_INT64);
-  printf("OP_JMPF_INT64_EXPR_INT8 = 0x%x\n", OP_JMPF_INT64_EXPR_INT8);
-  printf("OP_JMPF_INT64_EXPR_INT16 = 0x%x\n", OP_JMPF_INT64_EXPR_INT16);
-  printf("OP_JMPF_INT64_EXPR_INT32 = 0x%x\n", OP_JMPF_INT64_EXPR_INT32);
-  //printf("OP_JMPF_INT64_EXPR_INT64 = 0x%x\n", OP_JMPF_INT64_EXPR_INT64);
-  printf("OP_JMPF_INT128_EXPR_INT8 = 0x%x\n", OP_JMPF_INT128_EXPR_INT8);
-  printf("OP_JMPF_INT128_EXPR_INT16 = 0x%x\n", OP_JMPF_INT128_EXPR_INT16);
-  printf("OP_JMPF_INT128_EXPR_INT32 = 0x%x\n", OP_JMPF_INT128_EXPR_INT32);
-  //printf("OP_JMPF_INT128_EXPR_INT64 = 0x%x\n", OP_JMPF_INT128_EXPR_INT64);
-  //printf("OP_JMPF_FLOAT32_EXPR_INT64 = 0x%x\n", OP_JMPF_FLOAT32_EXPR_INT64);
-  printf("OP_JMPF_FLOAT64_EXPR_INT8 = 0x%x\n", OP_JMPF_FLOAT64_EXPR_INT8);
-  printf("OP_JMPF_FLOAT64_EXPR_INT16 = 0x%x\n", OP_JMPF_FLOAT64_EXPR_INT16);
-  printf("OP_JMPF_FLOAT64_EXPR_INT32 = 0x%x\n", OP_JMPF_FLOAT64_EXPR_INT32);
-  //printf("OP_JMPF_FLOAT64_EXPR_INT64 = 0x%x\n", OP_JMPF_FLOAT64_EXPR_INT64);
-  printf("OP_JMPF_FLOAT128_EXPR_INT8 = 0x%x\n", OP_JMPF_FLOAT128_EXPR_INT8);
-  printf("OP_JMPF_FLOAT128_EXPR_INT16 = 0x%x\n", OP_JMPF_FLOAT128_EXPR_INT16);
-  printf("OP_JMPF_FLOAT128_EXPR_INT32 = 0x%x\n", OP_JMPF_FLOAT128_EXPR_INT32);
-  //printf("OP_JMPF_FLOAT128_EXPR_INT64 = 0x%x\n", OP_JMPF_FLOAT128_EXPR_INT64);
-  //printf("OP_JMPF_R1_EXPR_INT64 = 0x%x\n", OP_JMPF_R1_EXPR_INT64);
-  //printf("OP_JMPF_R2_EXPR_INT64 = 0x%x\n", OP_JMPF_R2_EXPR_INT64);
-  //printf("OP_JMPF_R3_EXPR_INT64 = 0x%x\n", OP_JMPF_R3_EXPR_INT64);
-  //printf("OP_JMPT_INT8_EXPR_INT64 = 0x%x\n", OP_JMPT_INT8_EXPR_INT64);
-  //printf("OP_JMPT_INT16_EXPR_INT64 = 0x%x\n", OP_JMPT_INT16_EXPR_INT64);
-  //printf("OP_JMPT_INT32_EXPR_INT64 = 0x%x\n", OP_JMPT_INT32_EXPR_INT64);
-  printf("OP_JMPT_INT64_EXPR_INT8 = 0x%x\n", OP_JMPT_INT64_EXPR_INT8);
-  printf("OP_JMPT_INT64_EXPR_INT16 = 0x%x\n", OP_JMPT_INT64_EXPR_INT16);
-  printf("OP_JMPT_INT64_EXPR_INT32 = 0x%x\n", OP_JMPT_INT64_EXPR_INT32);
-  //printf("OP_JMPT_INT64_EXPR_INT64 = 0x%x\n", OP_JMPT_INT64_EXPR_INT64);
-  printf("OP_JMPT_INT128_EXPR_INT8 = 0x%x\n", OP_JMPT_INT128_EXPR_INT8);
-  printf("OP_JMPT_INT128_EXPR_INT16 = 0x%x\n", OP_JMPT_INT128_EXPR_INT16);
-  printf("OP_JMPT_INT128_EXPR_INT32 = 0x%x\n", OP_JMPT_INT128_EXPR_INT32);
-  //printf("OP_JMPT_INT128_EXPR_INT64 = 0x%x\n", OP_JMPT_INT128_EXPR_INT64);
-  //printf("OP_JMPT_FLOAT32_EXPR_INT64 = 0x%x\n", OP_JMPT_FLOAT32_EXPR_INT64);
-  printf("OP_JMPT_FLOAT64_EXPR_INT8 = 0x%x\n", OP_JMPT_FLOAT64_EXPR_INT8);
-  printf("OP_JMPT_FLOAT64_EXPR_INT16 = 0x%x\n", OP_JMPT_FLOAT64_EXPR_INT16);
-  printf("OP_JMPT_FLOAT64_EXPR_INT32 = 0x%x\n", OP_JMPT_FLOAT64_EXPR_INT32);
-  //printf("OP_JMPT_FLOAT64_EXPR_INT64 = 0x%x\n", OP_JMPT_FLOAT64_EXPR_INT64);
-  printf("OP_JMPT_FLOAT128_EXPR_INT8 = 0x%x\n", OP_JMPT_FLOAT128_EXPR_INT8);
-  printf("OP_JMPT_FLOAT128_EXPR_INT16 = 0x%x\n", OP_JMPT_FLOAT128_EXPR_INT16);
-  printf("OP_JMPT_FLOAT128_EXPR_INT32 = 0x%x\n", OP_JMPT_FLOAT128_EXPR_INT32);
-  //printf("OP_JMPT_FLOAT128_EXPR_INT64 = 0x%x\n", OP_JMPT_FLOAT128_EXPR_INT64);
-  //printf("OP_JMPT_R1_EXPR_INT64 = 0x%x\n", OP_JMPT_R1_EXPR_INT64);
-  //printf("OP_JMPT_R2_EXPR_INT64 = 0x%x\n", OP_JMPT_R2_EXPR_INT64);
-  //printf("OP_JMPT_R3_EXPR_INT64 = 0x%x\n", OP_JMPT_R3_EXPR_INT64);
+  //printf("OP_JMPF_INT8_INT64_EXPR = 0x%x\n", OP_JMPF_INT8_INT64_EXPR);
+  //printf("OP_JMPF_INT16_INT64_EXPR = 0x%x\n", OP_JMPF_INT16_INT64_EXPR);
+  //printf("OP_JMPF_INT32_INT64_EXPR = 0x%x\n", OP_JMPF_INT32_INT64_EXPR);
+  printf("OP_JMPF_INT64_INT8_EXPR = 0x%x\n", OP_JMPF_INT64_INT8_EXPR);
+  printf("OP_JMPF_INT64_INT16_EXPR = 0x%x\n", OP_JMPF_INT64_INT16_EXPR);
+  printf("OP_JMPF_INT64_INT32_EXPR = 0x%x\n", OP_JMPF_INT64_INT32_EXPR);
+  //printf("OP_JMPF_INT64_INT64_EXPR = 0x%x\n", OP_JMPF_INT64_INT64_EXPR);
+  printf("OP_JMPF_INT128_INT8_EXPR = 0x%x\n", OP_JMPF_INT128_INT8_EXPR);
+  printf("OP_JMPF_INT128_INT16_EXPR = 0x%x\n", OP_JMPF_INT128_INT16_EXPR);
+  printf("OP_JMPF_INT128_INT32_EXPR = 0x%x\n", OP_JMPF_INT128_INT32_EXPR);
+  //printf("OP_JMPF_INT128_INT64_EXPR = 0x%x\n", OP_JMPF_INT128_INT64_EXPR);
+  //printf("OP_JMPF_FLOAT32_INT64_EXPR = 0x%x\n", OP_JMPF_FLOAT32_INT64_EXPR);
+  printf("OP_JMPF_FLOAT64_INT8_EXPR = 0x%x\n", OP_JMPF_FLOAT64_INT8_EXPR);
+  printf("OP_JMPF_FLOAT64_INT16_EXPR = 0x%x\n", OP_JMPF_FLOAT64_INT16_EXPR);
+  printf("OP_JMPF_FLOAT64_INT32_EXPR = 0x%x\n", OP_JMPF_FLOAT64_INT32_EXPR);
+  //printf("OP_JMPF_FLOAT64_INT64_EXPR = 0x%x\n", OP_JMPF_FLOAT64_INT64_EXPR);
+  printf("OP_JMPF_FLOAT128_INT8_EXPR = 0x%x\n", OP_JMPF_FLOAT128_INT8_EXPR);
+  printf("OP_JMPF_FLOAT128_INT16_EXPR = 0x%x\n", OP_JMPF_FLOAT128_INT16_EXPR);
+  printf("OP_JMPF_FLOAT128_INT32_EXPR = 0x%x\n", OP_JMPF_FLOAT128_INT32_EXPR);
+  //printf("OP_JMPF_FLOAT128_INT64_EXPR = 0x%x\n", OP_JMPF_FLOAT128_INT64_EXPR);
+  //printf("OP_JMPF_R1_INT64_EXPR = 0x%x\n", OP_JMPF_R1_INT64_EXPR);
+  //printf("OP_JMPF_R2_INT64_EXPR = 0x%x\n", OP_JMPF_R2_INT64_EXPR);
+  //printf("OP_JMPF_R3_INT64_EXPR = 0x%x\n", OP_JMPF_R3_INT64_EXPR);
+  //printf("OP_JMPT_INT8_INT64_EXPR = 0x%x\n", OP_JMPT_INT8_INT64_EXPR);
+  //printf("OP_JMPT_INT16_INT64_EXPR = 0x%x\n", OP_JMPT_INT16_INT64_EXPR);
+  //printf("OP_JMPT_INT32_INT64_EXPR = 0x%x\n", OP_JMPT_INT32_INT64_EXPR);
+  printf("OP_JMPT_INT64_INT8_EXPR = 0x%x\n", OP_JMPT_INT64_INT8_EXPR);
+  printf("OP_JMPT_INT64_INT16_EXPR = 0x%x\n", OP_JMPT_INT64_INT16_EXPR);
+  printf("OP_JMPT_INT64_INT32_EXPR = 0x%x\n", OP_JMPT_INT64_INT32_EXPR);
+  //printf("OP_JMPT_INT64_INT64_EXPR = 0x%x\n", OP_JMPT_INT64_INT64_EXPR);
+  printf("OP_JMPT_INT128_INT8_EXPR = 0x%x\n", OP_JMPT_INT128_INT8_EXPR);
+  printf("OP_JMPT_INT128_INT16_EXPR = 0x%x\n", OP_JMPT_INT128_INT16_EXPR);
+  printf("OP_JMPT_INT128_INT32_EXPR = 0x%x\n", OP_JMPT_INT128_INT32_EXPR);
+  //printf("OP_JMPT_INT128_INT64_EXPR = 0x%x\n", OP_JMPT_INT128_INT64_EXPR);
+  //printf("OP_JMPT_FLOAT32_INT64_EXPR = 0x%x\n", OP_JMPT_FLOAT32_INT64_EXPR);
+  printf("OP_JMPT_FLOAT64_INT8_EXPR = 0x%x\n", OP_JMPT_FLOAT64_INT8_EXPR);
+  printf("OP_JMPT_FLOAT64_INT16_EXPR = 0x%x\n", OP_JMPT_FLOAT64_INT16_EXPR);
+  printf("OP_JMPT_FLOAT64_INT32_EXPR = 0x%x\n", OP_JMPT_FLOAT64_INT32_EXPR);
+  //printf("OP_JMPT_FLOAT64_INT64_EXPR = 0x%x\n", OP_JMPT_FLOAT64_INT64_EXPR);
+  printf("OP_JMPT_FLOAT128_INT8_EXPR = 0x%x\n", OP_JMPT_FLOAT128_INT8_EXPR);
+  printf("OP_JMPT_FLOAT128_INT16_EXPR = 0x%x\n", OP_JMPT_FLOAT128_INT16_EXPR);
+  printf("OP_JMPT_FLOAT128_INT32_EXPR = 0x%x\n", OP_JMPT_FLOAT128_INT32_EXPR);
+  //printf("OP_JMPT_FLOAT128_INT64_EXPR = 0x%x\n", OP_JMPT_FLOAT128_INT64_EXPR);
+  //printf("OP_JMPT_R1_INT64_EXPR = 0x%x\n", OP_JMPT_R1_INT64_EXPR);
+  //printf("OP_JMPT_R2_INT64_EXPR = 0x%x\n", OP_JMPT_R2_INT64_EXPR);
+  //printf("OP_JMPT_R3_INT64_EXPR = 0x%x\n", OP_JMPT_R3_INT64_EXPR);
   printf("OP_LD_64 = 0x%x\n", OP_LD_64);
   printf("OP_LD_128 = 0x%x\n", OP_LD_128);
-  //printf("OP_LEA_EXPR_INT64_R1 = 0x%x\n", OP_LEA_EXPR_INT64_R1);
-  //printf("OP_LEA_EXPR_INT64_R2 = 0x%x\n", OP_LEA_EXPR_INT64_R2);
-  //printf("OP_LEA_EXPR_INT64_R3 = 0x%x\n", OP_LEA_EXPR_INT64_R3);
-  //printf("OP_LEA_EXPR_INT64_R4 = 0x%x\n", OP_LEA_EXPR_INT64_R4);
-  //printf("OP_LEA_EXPR_INT64_R5 = 0x%x\n", OP_LEA_EXPR_INT64_R5);
+  //printf("OP_LEA_INT64_EXPR_R1 = 0x%x\n", OP_LEA_INT64_EXPR_R1);
+  //printf("OP_LEA_INT64_EXPR_R2 = 0x%x\n", OP_LEA_INT64_EXPR_R2);
+  //printf("OP_LEA_INT64_EXPR_R3 = 0x%x\n", OP_LEA_INT64_EXPR_R3);
+  //printf("OP_LEA_INT64_EXPR_R4 = 0x%x\n", OP_LEA_INT64_EXPR_R4);
+  //printf("OP_LEA_INT64_EXPR_R5 = 0x%x\n", OP_LEA_INT64_EXPR_R5);
   printf("OP_LE_INT64 = 0x%x\n", OP_LE_INT64);
   printf("OP_LE_INT128 = 0x%x\n", OP_LE_INT128);
   printf("OP_LE_UINT64 = 0x%x\n", OP_LE_UINT64);
index 9bd028e..af9eff8 100644 (file)
--- a/test.asm
+++ b/test.asm
@@ -4,110 +4,110 @@ putchar = -3
 
 main: ; stack alignment 0x10
        ; printing test
-       imm hello_world,pcr32
-       call print_str,pcr32
+       imm pcr32:hello_world
+       call pcr32:print_str
 
-       imm 0x01234567,int32
-       call print_hex_int32,pcr32
-       call print_newline,pcr32
+       imm int32:0x01234567
+       call pcr32:print_hex_int32
+       call pcr32:print_newline
 
-       imm 0,int32
-       call print_dec_int32,pcr32
-       call print_newline,pcr32
+       imm int32:0
+       call pcr32:print_dec_int32
+       call pcr32:print_newline
 
-       imm 123456789,int32
-       call print_dec_int32,pcr32
-       call print_newline,pcr32
+       imm int32:123456789
+       call pcr32:print_dec_int32
+       call pcr32:print_newline
 
-       imm -123456789,int32
-       call print_dec_int32,pcr32
-       call print_newline,pcr32
+       imm int32:-123456789
+       call pcr32:print_dec_int32
+       call pcr32:print_newline
 
-       imm 0,float32
-       call print_sci_float32,pcr32
-       call print_newline,pcr32
+       imm float32:0
+       call pcr32:print_sci_float32
+       call pcr32:print_newline
 
-       imm 1.23456789e19,float32
-       call print_sci_float32,pcr32
-       call print_newline,pcr32
+       imm float32:1.23456789e19
+       call pcr32:print_sci_float32
+       call pcr32:print_newline
 
-       imm -1.23456789e-19,float32
-       call print_sci_float32,pcr32
-       call print_newline,pcr32
+       imm float32:-1.23456789e-19
+       call pcr32:print_sci_float32
+       call pcr32:print_newline
 
-       imm 1.40129846e-45,float32
-       call print_sci_float32,pcr32
-       call print_newline,pcr32
+       imm float32:1.40129846e-45
+       call pcr32:print_sci_float32
+       call pcr32:print_newline
 
        ; square root calculation tests
        ; the square root routine is C-style (takes argument on stack)
-       add -8,int32,sp
-       imm 2,float32
+       add int32:-8,sp
+       imm float32:2
        push 32
-       call sqrt_float32,pcr32
-       add 0xc,int32,sp
-       call print_sci_float32,pcr32
-       call print_newline,pcr32
+       call pcr32:sqrt_float32
+       add int32:0xc,sp
+       call pcr32:print_sci_float32
+       call pcr32:print_newline
 
-       add -8,int32,sp
-       imm 1000,float32
+       add int32:-8,sp
+       imm float32:1000
        push 32
-       call sqrt_float32,pcr32
-       add 0xc,int32,sp
-       call print_sci_float32,pcr32
-       call print_newline,pcr32
+       call pcr32:sqrt_float32
+       add int32:0xc,sp
+       call pcr32:print_sci_float32
+       call pcr32:print_newline
 
        ; done
-       imm 0,int32
+       imm int32:0
        push 32
-       call exit,pcr32
+       call pcr32:exit
 
 hello_world:
-       .data 'h',int8
-       .data 'e',int8
-       .data 'l',int8
-       .data 'l',int8
-       .data 'o',int8
-       .data ',',int8
-       .data ' ',int8
-       .data 'w',int8
-       .data 'o',int8
-       .data 'r',int8
-       .data 'l',int8
-       .data 'd',int8
-       .data '\n',int8
-       .data 0,int8
+       .data int8:'h'
+       .data int8:'e'
+       .data int8:'l'
+       .data int8:'l'
+       .data int8:'o'
+       .data int8:','
+       .data int8:' '
+       .data int8:'w'
+       .data int8:'o'
+       .data int8:'r'
+       .data int8:'l'
+       .data int8:'d'
+       .data int8:'\n'
+       .data int8:0
 
 print_str:
-       mov r0,r2
+       set r2
        ld 8
-       jmpf int8,print_str_done,pcr32
+       jmpf int8,pcr32:print_str_done
 print_str_loop:
        cvt int8,int32
        push 32
-       call putchar,pcr32
-       add 4,int32,sp
-       add 1,int32,r2
-       mov r2,r0
+       call pcr32:putchar
+       add int32:4,sp
+       add int32:1,r2
+       get r2
        ld 8
-       jmpt int8,print_str_loop,pcr32
+       jmpt int8,pcr32:print_str_loop
 print_str_done:
        ret
 
 print_newline:
-       imm 0xa,int32
+       imm int32:0xa
        push 32
-       call putchar,pcr32
-       add 4,int32,sp
+       call pcr32:putchar
+       add int32:4,sp
        ret
 
 print_hex_int32:
        push 32
 
        push 32
-       imm 16,int8
+       imm int8:16
        shr uint32
-       call print_hex_int16,pcr32
+       call pcr32:print_hex_int16
 
        pop 32
        ; fallthru
@@ -116,10 +116,10 @@ print_hex_int16:
        push 16
 
        push 16
-       imm 8,int8
+       imm int8:8
        shr uint16
-       call print_hex_int8,pcr32
-       add 2,int32,sp
+       call pcr32:print_hex_int8
+       add int32:2,sp
 
        pop 16
        ; fallthru
@@ -128,104 +128,104 @@ print_hex_int8:
        push 8
 
        push 8
-       imm 4,int8
+       imm int8:4
        shr uint8
-       call print_hex_nibble,pcr32
-       add 3,int32,sp
+       call pcr32:print_hex_nibble
+       add int32:3,sp
 
        pop 8
        ; fallthru
 
 print_hex_nibble:
        push 8
-       imm 0xf,int8
+       imm int8:0xf
        and int8
        cvt int8,int32
 
        push 8
-       imm print_hex_table,pcr32
+       imm pcr32:print_hex_table
        add int8
        ld 8
 
        cvt int8,int32
        push 32
-       call putchar,pcr32
-       add 4,int32,sp
+       call pcr32:putchar
+       add int32:4,sp
 
        ret
 
 print_hex_table:
-       .data '0',int8
-       .data '1',int8
-       .data '2',int8
-       .data '3',int8
-       .data '4',int8
-       .data '5',int8
-       .data '6',int8
-       .data '7',int8
-       .data '8',int8
-       .data '9',int8
-       .data 'a',int8
-       .data 'b',int8
-       .data 'c',int8
-       .data 'd',int8
-       .data 'e',int8
-       .data 'f',int8
+       .data int8:'0'
+       .data int8:'1'
+       .data int8:'2'
+       .data int8:'3'
+       .data int8:'4'
+       .data int8:'5'
+       .data int8:'6'
+       .data int8:'7'
+       .data int8:'8'
+       .data int8:'9'
+       .data int8:'a'
+       .data int8:'b'
+       .data int8:'c'
+       .data int8:'d'
+       .data int8:'e'
+       .data int8:'f'
 
 print_dec_int32: ; stack alignment 8
        push 32
 
        push 32
-       imm 0,int32
+       imm int32:0
        lt int32
-       jmpf int8,print_dec_pos,pcr32
+       jmpf int8,pcr32:print_dec_pos
 
-       imm '-',int32
+       imm int32:'-'
        push 32
-       call putchar,pcr32
-       add 4,int32,sp
+       call pcr32:putchar
+       add int32:4,sp
 
        pop 32
        neg int32
        push 32
 
 print_dec_pos:
-       imm print_dec_buf_end,pcr32
-       mov r0,r2
+       imm pcr32:print_dec_buf_end
+       set r2
 
        pop 32
 print_dec_loop0:
        push 32
 
        push 32
-       imm 10,int32
+       imm int32:10
        mod uint32
        push 8
-       imm '0',int8
+       imm int8:'0'
        add int8
        push 8
-       add -1,int32,r2
-       mov r2,r0
+       add int32:-1,r2
+       get r2
        st_r 8
 
-       imm 10,int32
+       imm int32:10
        div uint32
-       jmpt int32,print_dec_loop0,pcr32
+       jmpt int32,pcr32:print_dec_loop0
 
 print_dec_loop1:
-       mov r2,r0
+       get r2
        ld 8
        cvt int8,int32
        push 32
-       call putchar,pcr32
-       add 4,int32,sp
+       call pcr32:putchar
+       add int32:4,sp
 
-       add 1,int32,r2
-       mov r2,r0
+       add int32:1,r2
+       get r2
        push 32
-       imm print_dec_buf_end,pcr32
+       imm pcr32:print_dec_buf_end
        lt uint32
-       jmpt int8,print_dec_loop1,pcr32
+       jmpt int8,pcr32:print_dec_loop1
 
        ret
 
@@ -236,14 +236,14 @@ print_sci_float32:
        push 32
 
        push 32
-       imm 0,float32
+       imm float32:0
        lt float32
-       jmpf int8,print_sci_pos,pcr32
+       jmpf int8,pcr32:print_sci_pos
 
-       imm '-',int32
+       imm int32:'-'
        push 32
-       call putchar,pcr32
-       add 4,int32,sp
+       call pcr32:putchar
+       add int32:4,sp
 
        pop 32
        neg float32
@@ -255,8 +255,8 @@ print_sci_pos:
        ; entry is struct with threshold value (> 1) then scaling value (< 1)
        ; when multiplying it up:
        ; entry is struct with scaling value (> 1) then threshold value (< 1)
-       imm print_sci_table,pcr32
-       mov r0,r2
+       imm pcr32:print_sci_table
+       set r2
 
        ; if number is >= 1, exponent is positive and we'll divide it down
        ; if number is < 1, exponent is negative and we'll multiply it up
@@ -264,15 +264,15 @@ print_sci_pos:
        push 32
 
        push 32
-       imm 1,float32
+       imm float32:1
        lt float32
-       jmpt int8,print_sci_multiply,pcr32
+       jmpt int8,pcr32:print_sci_multiply
 
        ; dividing it down case
 
        ; r3 is shift register for exponent bits
-       imm 0,int32
-       mov r0,r3
+       imm int32:0
+       set r3
 
 print_sci_loop0:
        ; calculate next exponent bit
@@ -280,7 +280,7 @@ print_sci_loop0:
        push 32
 
        push 32
-       mov r2,r0
+       get r2
        ld 32
        ge float32
        push 8
@@ -288,41 +288,41 @@ print_sci_loop0:
        ; shift exponent bit into r3
        cvt int8,int32
        push 32
-       mov r3,r0
+       get r3
        push 32
-       imm 1,int8
+       imm int8:1
        shl int32
        or int32
-       mov r0,r3
-       add 3,int32,sp
+       set r3
+       add int32:3,sp
 
        ; if exponent bit is 1, divide
        pop 8
-       jmpf int8,print_sci_no_div,pcr32
+       jmpf int8,pcr32:print_sci_no_div
 
-       lea 4,int32,r2
+       lea int32:4,r2
        ld 32
        mul float32
        push 32
 
 print_sci_no_div:
-       add 8,int32,r2
-       mov r2,r0
+       add int32:8,r2
+       get r2
        push 32
-       imm print_sci_table_end,pcr32
+       imm pcr32:print_sci_table_end
        lt uint32
-       jmpt int8,print_sci_loop0,pcr32
+       jmpt int8,pcr32:print_sci_loop0
 
-       imm 1e8,float32 ; factor to shift left by 8 decimal places
-       jmp print_sci_normalized,pcr32
+       imm float32:1e8 ; factor to shift left by 8 decimal places
+       jmp pcr32:print_sci_normalized
 
 print_sci_multiply:
        ; multiplying it up case
 
        ; r3 is shift register for exponent bits
        ; we will build negative exponent directly, starting with all ones
-       imm -1,int32
-       mov r0,r3
+       imm int32:-1
+       set r3
 
 print_sci_loop1:
        ; calculate next exponent bit
@@ -330,7 +330,7 @@ print_sci_loop1:
        push 32
 
        push 32
-       lea 4,int32,r2
+       lea int32:4,r2
        ld 32
        ge float32
        push 8
@@ -338,138 +338,138 @@ print_sci_loop1:
        ; shift exponent bit into r3
        cvt int8,int32
        push 32
-       mov r3,r0
+       get r3
        push 32
-       imm 1,int8
+       imm int8:1
        shl int32
        or int32
-       mov r0,r3
-       add 3,int32,sp
+       set r3
+       add int32:3,sp
 
        ; if exponent bit is 0, multiply
        pop 8
-       jmpt int8,print_sci_no_mul,pcr32
+       jmpt int8,pcr32:print_sci_no_mul
 
-       mov r2,r0
+       get r2
        ld 32
        mul float32
        push 32
 
 print_sci_no_mul:
-       add 8,int32,r2
-       mov r2,r0
+       add int32:8,r2
+       get r2
        push 32
-       imm print_sci_table_end,pcr32
+       imm pcr32:print_sci_table_end
        lt uint32
-       jmpt int8,print_sci_loop1,pcr32
+       jmpt int8,pcr32:print_sci_loop1
 
        ; at this point the number is still < 1, do final multiply by 10
        ; we used "not exponent" rather than "neg exponent" for extra -1
-       imm 1e9,float32 ; 10 * factor to shift left by 8 decimal places
+       imm float32:1e9 ; 10 * factor to shift left by 8 decimal places
 
 print_sci_normalized:
        ; convert mantissa to 9 digit integer with 8 decimal places
        mul float32
        push 32
-       imm .5,float32
+       imm float32:.5
        add float32
        cvt float32,int32
        push 32
 
        ; if mantissa is zero, zero out exponent as well
-       jmpt int32,print_sci_not_zero,pcr32
+       jmpt int32,pcr32:print_sci_not_zero
 
-       imm 0,int32
-       mov r0,r3
-       jmp print_sci_no_overflow,pcr32
+       imm int32:0
+       set r3
+       jmp pcr32:print_sci_no_overflow
 
 print_sci_not_zero:
        ; check for 10-digit integer (rounding overflow)
        push 32
-       imm 1000000000,int32
+       imm int32:1000000000
        ge uint32
-       jmpf int8,print_sci_no_overflow,pcr32
+       jmpf int8,pcr32:print_sci_no_overflow
 
        ; move along one digit position and bump exponent
        ; note: no rounding is needed, as low order digit must be 0
-       imm 10,int32
+       imm int32:10
        div uint32
        push 32
-       add 1,int32,r3
+       add int32:1,r3
 
 print_sci_no_overflow:
        ; render all 9 digits backwards into buffer
-       imm print_sci_buf_end,pcr32
-       mov r0,r2
+       imm pcr32:print_sci_buf_end
+       set r2
 
 print_sci_loop2:
        pop 32
        push 32
 
        push 32
-       imm 10,int32
+       imm int32:10
        mod uint32
        push 8
-       imm '0',int8
+       imm int8:'0'
        add int8
        push 8
-       add -1,int32,r2
-       mov r2,r0
+       add int32:-1,r2
+       get r2
        st_r 8
 
-       imm 10,int32
+       imm int32:10
        div uint32
        push 32
 
-       mov r2,r0
+       get r2
        push 32
-       imm print_sci_buf,pcr32
+       imm pcr32:print_sci_buf
        gt uint32
-       jmpt int8,print_sci_loop2,pcr32
+       jmpt int8,pcr32:print_sci_loop2
 
        pop 32 ; should be 0, discard
 
        ; print first digit
-       mov r2,r0
+       get r2
        ld 8
        cvt int8,int32
 
        push 32
-       call putchar,pcr32
-       add 4,int32,sp
+       call pcr32:putchar
+       add int32:4,sp
 
-       add 1,int32,r2
+       add int32:1,r2
 
        ; print decimal point
-       imm '.',int32
+       imm int32:'.'
        push 32
-       call putchar,pcr32
-       add 4,int32,sp
+       call pcr32:putchar
+       add int32:4,sp
 
        ; print remaining digits
 print_sci_loop3:
-       mov r2,r0
+       get r2
        ld 8
        cvt int8,int32
        push 32
-       call putchar,pcr32
-       add 4,int32,sp
+       call pcr32:putchar
+       add int32:4,sp
 
-       add 1,int32,r2
-       mov r2,r0
+       add int32:1,r2
+       get r2
        push 32
-       imm print_sci_buf_end,pcr32
+       imm pcr32:print_sci_buf_end
        lt uint32
-       jmpt int8,print_sci_loop3,pcr32
+       jmpt int8,pcr32:print_sci_loop3
 
        ; print exponent part
-       imm 'e',int32
+       imm int32:'e'
        push 32
-       call putchar,pcr32
-       add 4,int32,sp
+       call pcr32:putchar
+       add int32:4,sp
 
-       mov r3,r0
-       jmp print_dec_int32,pcr32
+       get r3
+       jmp pcr32:print_dec_int32
 
 print_sci_buf:
        .space 9
@@ -477,18 +477,18 @@ print_sci_buf_end:
 
        .align 4
 print_sci_table:
-       .data 1e32,float32
-       .data 1e-32,float32
-       .data 1e16,float32
-       .data 1e-16,float32
-       .data 1e8,float32
-       .data 1e-8,float32
-       .data 1e4,float32
-       .data 1e-4,float32
-       .data 1e2,float32
-       .data 1e-2,float32
-       .data 1e1,float32
-       .data 1e-1,float32
+       .data float32:1e32
+       .data float32:1e-32
+       .data float32:1e16
+       .data float32:1e-16
+       .data float32:1e8
+       .data float32:1e-8
+       .data float32:1e4
+       .data float32:1e-4
+       .data float32:1e2
+       .data float32:1e-2
+       .data float32:1e1
+       .data float32:1e-1
 print_sci_table_end:
 
 ; this routine is C-style
@@ -497,37 +497,37 @@ print_sci_table_end:
 ; it preserves r2 register (r3 register is not used)
 sqrt_float32:
        ; prologue
-       mov r2,r0
+       get r2
        push 32
 
-       imm 8,int32 ; iterations
-       mov r0,r2
+       imm int32:8 ; iterations
+       set r2
 
-       imm 1,float32 ; initial estimate
+       imm float32:1 ; initial estimate
        push 32
 sqrt_loop:
        pop 32
 
        push 32
        push 32
-       lea 0x10,int32,sp
+       lea int32:0x10,sp
        ld 32
        div_r float32
        add float32
        push 32
-       imm .5,float32
+       imm float32:.5
        mul float32
 
        push 32
-       add -1,int32,r2
-       mov r2,r0
-       jmpt int32,sqrt_loop,pcr32
+       add int32:-1,r2
+       get r2
+       jmpt int32,pcr32:sqrt_loop
 
        ; epilogue (return value is on stack)
-       lea 4,int32,sp
+       lea int32:4,sp
        ld 32
-       mov r0,r2
+       set r2
 
        pop 32
-       add 4,int32,sp
+       add int32:4,sp
        ret
index a3c4e9e..5de15a5 100644 (file)
--- a/vm_asm.l
+++ b/vm_asm.l
@@ -90,7 +90,8 @@ le                                    return y_tab.LE
 lt                                     return y_tab.LT
 mod                                    return y_tab.MOD
 mod_r                                  return y_tab.MOD_R
-mov                                    return y_tab.MOV
+get                                    return y_tab.GET
+set                                    return y_tab.SET
 mul                                    return y_tab.MUL
 ne                                     return y_tab.NE
 neg                                    return y_tab.NEG
index 22cab23..7d99b9a 100644 (file)
--- a/vm_asm.t
+++ b/vm_asm.t
   gmpy2.get_context().precision = 128
 
   OP_NOP = 0x0
-  OP_ADD_EXPR_INT8_R1 = 0x1
-  OP_ADD_EXPR_INT8_R2 = 0x2
-  OP_ADD_EXPR_INT8_R3 = 0x3
-  OP_ADD_EXPR_INT8_R4 = 0x4
-  OP_ADD_EXPR_INT8_R5 = 0x5
-  OP_ADD_EXPR_INT16_R1 = 0x6
-  OP_ADD_EXPR_INT16_R2 = 0x7
-  OP_ADD_EXPR_INT16_R3 = 0x8
-  OP_ADD_EXPR_INT16_R4 = 0x9
-  OP_ADD_EXPR_INT16_R5 = 0xa
-  OP_ADD_EXPR_INT32_R1 = 0xb
-  OP_ADD_EXPR_INT32_R2 = 0xc
-  OP_ADD_EXPR_INT32_R3 = 0xd
-  OP_ADD_EXPR_INT32_R4 = 0xe
-  OP_ADD_EXPR_INT32_R5 = 0xf
+  OP_ADD_INT8_EXPR_R1 = 0x1
+  OP_ADD_INT8_EXPR_R2 = 0x2
+  OP_ADD_INT8_EXPR_R3 = 0x3
+  OP_ADD_INT8_EXPR_R4 = 0x4
+  OP_ADD_INT8_EXPR_R5 = 0x5
+  OP_ADD_INT16_EXPR_R1 = 0x6
+  OP_ADD_INT16_EXPR_R2 = 0x7
+  OP_ADD_INT16_EXPR_R3 = 0x8
+  OP_ADD_INT16_EXPR_R4 = 0x9
+  OP_ADD_INT16_EXPR_R5 = 0xa
+  OP_ADD_INT32_EXPR_R1 = 0xb
+  OP_ADD_INT32_EXPR_R2 = 0xc
+  OP_ADD_INT32_EXPR_R3 = 0xd
+  OP_ADD_INT32_EXPR_R4 = 0xe
+  OP_ADD_INT32_EXPR_R5 = 0xf
   OP_ADD_INT8 = 0x10
   OP_ADD_INT16 = 0x11
   OP_ADD_INT32 = 0x12
@@ -47,9 +47,9 @@
   OP_AND_INT16 = 0x15
   OP_AND_INT32 = 0x16
   OP_CALL = 0x17
-  OP_CALL_EXPR_INT8 = 0x18
-  OP_CALL_EXPR_INT16 = 0x19
-  OP_CALL_EXPR_INT32 = 0x1a
+  OP_CALL_INT8_EXPR = 0x18
+  OP_CALL_INT16_EXPR = 0x19
+  OP_CALL_INT32_EXPR = 0x1a
   OP_CVT_INT8_INT16 = 0x1b
   OP_CVT_INT8_INT32 = 0x1c
   OP_CVT_INT8_FLOAT32 = 0x1d
   OP_IMM_EXPR_8 = 0x4a
   OP_IMM_EXPR_16 = 0x4b
   OP_IMM_EXPR_32 = 0x4c
-  OP_JMPF_INT8_EXPR_INT8 = 0x4d
-  OP_JMPF_INT8_EXPR_INT16 = 0x4e
-  OP_JMPF_INT8_EXPR_INT32 = 0x4f
-  OP_JMPF_INT16_EXPR_INT8 = 0x50
-  OP_JMPF_INT16_EXPR_INT16 = 0x51
-  OP_JMPF_INT16_EXPR_INT32 = 0x52
-  OP_JMPF_INT32_EXPR_INT8 = 0x53
-  OP_JMPF_INT32_EXPR_INT16 = 0x54
-  OP_JMPF_INT32_EXPR_INT32 = 0x55
-  OP_JMPF_FLOAT32_EXPR_INT8 = 0x56
-  OP_JMPF_FLOAT32_EXPR_INT16 = 0x57
-  OP_JMPF_FLOAT32_EXPR_INT32 = 0x58
-  OP_JMPF_R1_EXPR_INT8 = 0x59
-  OP_JMPF_R1_EXPR_INT16 = 0x5a
-  OP_JMPF_R1_EXPR_INT32 = 0x5b
-  OP_JMPF_R2_EXPR_INT8 = 0x5c
-  OP_JMPF_R2_EXPR_INT16 = 0x5d
-  OP_JMPF_R2_EXPR_INT32 = 0x5e
-  OP_JMPF_R3_EXPR_INT8 = 0x5f
-  OP_JMPF_R3_EXPR_INT16 = 0x60
-  OP_JMPF_R3_EXPR_INT32 = 0x61
-  OP_JMPT_INT8_EXPR_INT8 = 0x62
-  OP_JMPT_INT8_EXPR_INT16 = 0x63
-  OP_JMPT_INT8_EXPR_INT32 = 0x64
-  OP_JMPT_INT16_EXPR_INT8 = 0x65
-  OP_JMPT_INT16_EXPR_INT16 = 0x66
-  OP_JMPT_INT16_EXPR_INT32 = 0x67
-  OP_JMPT_INT32_EXPR_INT8 = 0x68
-  OP_JMPT_INT32_EXPR_INT16 = 0x69
-  OP_JMPT_INT32_EXPR_INT32 = 0x6a
-  OP_JMPT_FLOAT32_EXPR_INT8 = 0x6b
-  OP_JMPT_FLOAT32_EXPR_INT16 = 0x6c
-  OP_JMPT_FLOAT32_EXPR_INT32 = 0x6d
-  OP_JMPT_R1_EXPR_INT8 = 0x6e
-  OP_JMPT_R1_EXPR_INT16 = 0x6f
-  OP_JMPT_R1_EXPR_INT32 = 0x70
-  OP_JMPT_R2_EXPR_INT8 = 0x71
-  OP_JMPT_R2_EXPR_INT16 = 0x72
-  OP_JMPT_R2_EXPR_INT32 = 0x73
-  OP_JMPT_R3_EXPR_INT8 = 0x74
-  OP_JMPT_R3_EXPR_INT16 = 0x75
-  OP_JMPT_R3_EXPR_INT32 = 0x76
+  OP_JMPF_INT8_INT8_EXPR = 0x4d
+  OP_JMPF_INT8_INT16_EXPR = 0x4e
+  OP_JMPF_INT8_INT32_EXPR = 0x4f
+  OP_JMPF_INT16_INT8_EXPR = 0x50
+  OP_JMPF_INT16_INT16_EXPR = 0x51
+  OP_JMPF_INT16_INT32_EXPR = 0x52
+  OP_JMPF_INT32_INT8_EXPR = 0x53
+  OP_JMPF_INT32_INT16_EXPR = 0x54
+  OP_JMPF_INT32_INT32_EXPR = 0x55
+  OP_JMPF_FLOAT32_INT8_EXPR = 0x56
+  OP_JMPF_FLOAT32_INT16_EXPR = 0x57
+  OP_JMPF_FLOAT32_INT32_EXPR = 0x58
+  OP_JMPF_R1_INT8_EXPR = 0x59
+  OP_JMPF_R1_INT16_EXPR = 0x5a
+  OP_JMPF_R1_INT32_EXPR = 0x5b
+  OP_JMPF_R2_INT8_EXPR = 0x5c
+  OP_JMPF_R2_INT16_EXPR = 0x5d
+  OP_JMPF_R2_INT32_EXPR = 0x5e
+  OP_JMPF_R3_INT8_EXPR = 0x5f
+  OP_JMPF_R3_INT16_EXPR = 0x60
+  OP_JMPF_R3_INT32_EXPR = 0x61
+  OP_JMPT_INT8_INT8_EXPR = 0x62
+  OP_JMPT_INT8_INT16_EXPR = 0x63
+  OP_JMPT_INT8_INT32_EXPR = 0x64
+  OP_JMPT_INT16_INT8_EXPR = 0x65
+  OP_JMPT_INT16_INT16_EXPR = 0x66
+  OP_JMPT_INT16_INT32_EXPR = 0x67
+  OP_JMPT_INT32_INT8_EXPR = 0x68
+  OP_JMPT_INT32_INT16_EXPR = 0x69
+  OP_JMPT_INT32_INT32_EXPR = 0x6a
+  OP_JMPT_FLOAT32_INT8_EXPR = 0x6b
+  OP_JMPT_FLOAT32_INT16_EXPR = 0x6c
+  OP_JMPT_FLOAT32_INT32_EXPR = 0x6d
+  OP_JMPT_R1_INT8_EXPR = 0x6e
+  OP_JMPT_R1_INT16_EXPR = 0x6f
+  OP_JMPT_R1_INT32_EXPR = 0x70
+  OP_JMPT_R2_INT8_EXPR = 0x71
+  OP_JMPT_R2_INT16_EXPR = 0x72
+  OP_JMPT_R2_INT32_EXPR = 0x73
+  OP_JMPT_R3_INT8_EXPR = 0x74
+  OP_JMPT_R3_INT16_EXPR = 0x75
+  OP_JMPT_R3_INT32_EXPR = 0x76
   OP_LD_8 = 0x77
   OP_LD_16 = 0x78
   OP_LD_32 = 0x79
-  OP_LEA_EXPR_INT8_R1 = 0x7a
-  OP_LEA_EXPR_INT8_R2 = 0x7b
-  OP_LEA_EXPR_INT8_R3 = 0x7c
-  OP_LEA_EXPR_INT8_R4 = 0x7d
-  OP_LEA_EXPR_INT8_R5 = 0x7e
-  OP_LEA_EXPR_INT16_R1 = 0x7f
-  OP_LEA_EXPR_INT16_R2 = 0x80
-  OP_LEA_EXPR_INT16_R3 = 0x81
-  OP_LEA_EXPR_INT16_R4 = 0x82
-  OP_LEA_EXPR_INT16_R5 = 0x83
-  OP_LEA_EXPR_INT32_R1 = 0x84
-  OP_LEA_EXPR_INT32_R2 = 0x85
-  OP_LEA_EXPR_INT32_R3 = 0x86
-  OP_LEA_EXPR_INT32_R4 = 0x87
-  OP_LEA_EXPR_INT32_R5 = 0x88
+  OP_LEA_INT8_EXPR_R1 = 0x7a
+  OP_LEA_INT8_EXPR_R2 = 0x7b
+  OP_LEA_INT8_EXPR_R3 = 0x7c
+  OP_LEA_INT8_EXPR_R4 = 0x7d
+  OP_LEA_INT8_EXPR_R5 = 0x7e
+  OP_LEA_INT16_EXPR_R1 = 0x7f
+  OP_LEA_INT16_EXPR_R2 = 0x80
+  OP_LEA_INT16_EXPR_R3 = 0x81
+  OP_LEA_INT16_EXPR_R4 = 0x82
+  OP_LEA_INT16_EXPR_R5 = 0x83
+  OP_LEA_INT32_EXPR_R1 = 0x84
+  OP_LEA_INT32_EXPR_R2 = 0x85
+  OP_LEA_INT32_EXPR_R3 = 0x86
+  OP_LEA_INT32_EXPR_R4 = 0x87
+  OP_LEA_INT32_EXPR_R5 = 0x88
   OP_LE_INT8 = 0x89
   OP_LE_INT16 = 0x8a
   OP_LE_INT32 = 0x8b
   OP_MOD_R_UINT8 = 0xa0
   OP_MOD_R_UINT16 = 0xa1
   OP_MOD_R_UINT32 = 0xa2
-  OP_MOV_R0_R1 = 0xa3
-  OP_MOV_R0_R2 = 0xa4
-  OP_MOV_R0_R3 = 0xa5
-  OP_MOV_R0_R4 = 0xa6
-  OP_MOV_R0_R5 = 0xa7
-  OP_MOV_R1_R0 = 0xa8
-  OP_MOV_R2_R0 = 0xa9
-  OP_MOV_R3_R0 = 0xaa
-  OP_MOV_R4_R0 = 0xab
-  OP_MOV_R5_R0 = 0xac
+  OP_SET_R1 = 0xa3
+  OP_SET_R2 = 0xa4
+  OP_SET_R3 = 0xa5
+  OP_SET_R4 = 0xa6
+  OP_SET_R5 = 0xa7
+  OP_GET_R1 = 0xa8
+  OP_GET_R2 = 0xa9
+  OP_GET_R3 = 0xaa
+  OP_GET_R4 = 0xab
+  OP_GET_R5 = 0xac
   OP_MUL_INT8 = 0xad
   OP_MUL_INT16 = 0xae
   OP_MUL_INT32 = 0xaf
   OP_GT_FLOAT128 = 0x159
   OP_IMM_EXPR_64 = 0x15a
   OP_IMM_EXPR_128 = 0x15b
-  OP_JMPF_INT64_EXPR_INT8 = 0x15c
-  OP_JMPF_INT64_EXPR_INT16 = 0x15d
-  OP_JMPF_INT64_EXPR_INT32 = 0x15e
-  OP_JMPF_INT128_EXPR_INT8 = 0x15f
-  OP_JMPF_INT128_EXPR_INT16 = 0x160
-  OP_JMPF_INT128_EXPR_INT32 = 0x161
-  OP_JMPF_FLOAT64_EXPR_INT8 = 0x162
-  OP_JMPF_FLOAT64_EXPR_INT16 = 0x163
-  OP_JMPF_FLOAT64_EXPR_INT32 = 0x164
-  OP_JMPF_FLOAT128_EXPR_INT8 = 0x165
-  OP_JMPF_FLOAT128_EXPR_INT16 = 0x166
-  OP_JMPF_FLOAT128_EXPR_INT32 = 0x167
-  OP_JMPT_INT64_EXPR_INT8 = 0x168
-  OP_JMPT_INT64_EXPR_INT16 = 0x169
-  OP_JMPT_INT64_EXPR_INT32 = 0x16a
-  OP_JMPT_INT128_EXPR_INT8 = 0x16b
-  OP_JMPT_INT128_EXPR_INT16 = 0x16c
-  OP_JMPT_INT128_EXPR_INT32 = 0x16d
-  OP_JMPT_FLOAT64_EXPR_INT8 = 0x16e
-  OP_JMPT_FLOAT64_EXPR_INT16 = 0x16f
-  OP_JMPT_FLOAT64_EXPR_INT32 = 0x170
-  OP_JMPT_FLOAT128_EXPR_INT8 = 0x171
-  OP_JMPT_FLOAT128_EXPR_INT16 = 0x172
-  OP_JMPT_FLOAT128_EXPR_INT32 = 0x173
+  OP_JMPF_INT64_INT8_EXPR = 0x15c
+  OP_JMPF_INT64_INT16_EXPR = 0x15d
+  OP_JMPF_INT64_INT32_EXPR = 0x15e
+  OP_JMPF_INT128_INT8_EXPR = 0x15f
+  OP_JMPF_INT128_INT16_EXPR = 0x160
+  OP_JMPF_INT128_INT32_EXPR = 0x161
+  OP_JMPF_FLOAT64_INT8_EXPR = 0x162
+  OP_JMPF_FLOAT64_INT16_EXPR = 0x163
+  OP_JMPF_FLOAT64_INT32_EXPR = 0x164
+  OP_JMPF_FLOAT128_INT8_EXPR = 0x165
+  OP_JMPF_FLOAT128_INT16_EXPR = 0x166
+  OP_JMPF_FLOAT128_INT32_EXPR = 0x167
+  OP_JMPT_INT64_INT8_EXPR = 0x168
+  OP_JMPT_INT64_INT16_EXPR = 0x169
+  OP_JMPT_INT64_INT32_EXPR = 0x16a
+  OP_JMPT_INT128_INT8_EXPR = 0x16b
+  OP_JMPT_INT128_INT16_EXPR = 0x16c
+  OP_JMPT_INT128_INT32_EXPR = 0x16d
+  OP_JMPT_FLOAT64_INT8_EXPR = 0x16e
+  OP_JMPT_FLOAT64_INT16_EXPR = 0x16f
+  OP_JMPT_FLOAT64_INT32_EXPR = 0x170
+  OP_JMPT_FLOAT128_INT8_EXPR = 0x171
+  OP_JMPT_FLOAT128_INT16_EXPR = 0x172
+  OP_JMPT_FLOAT128_INT32_EXPR = 0x173
   OP_LD_64 = 0x174
   OP_LD_128 = 0x175
   OP_LE_INT64 = 0x176
index 1619463..2ca7120 100644 (file)
--- a/vm_asm.y
+++ b/vm_asm.y
@@ -34,7 +34,8 @@
 %token LT
 %token MOD
 %token MOD_R
-%token MOV
+%token GET
+%token SET
 %token MUL
 %token NE
 %token NEG
@@ -219,31 +220,31 @@ input_line
   | %space (?E{t_def.Label}identifier ':')
   | %space (?E{t_def.Equate}identifier '=' expression)
   | %space (?E{t_def.DotAlign}DOT_ALIGN expression)
-  | %space (?E{t_def.DotDataI, size = 8}DOT_DATA expression ',' INT8)
-  | %space (?E{t_def.DotDataI, size = 16}DOT_DATA expression ',' INT16)
-  | %space (?E{t_def.DotDataI, size = 32}DOT_DATA expression ',' INT32)
-  | %space (?E{t_def.DotDataI, size = 64}DOT_DATA expression ',' INT64)
-  | %space (?E{t_def.DotDataI, size = 128}DOT_DATA expression ',' INT128)
-  | %space (?E{t_def.DotDataF, size = 32}DOT_DATA expression ',' FLOAT32)
-  | %space (?E{t_def.DotDataF, size = 64}DOT_DATA expression ',' FLOAT64)
-  | %space (?E{t_def.DotDataF, size = 128}DOT_DATA expression ',' FLOAT128)
+  | %space (?E{t_def.DotDataI, size = 8}DOT_DATA INT8 ':' expression)
+  | %space (?E{t_def.DotDataI, size = 16}DOT_DATA INT16 ':' expression)
+  | %space (?E{t_def.DotDataI, size = 32}DOT_DATA INT32 ':' expression)
+  | %space (?E{t_def.DotDataI, size = 64}DOT_DATA INT64 ':' expression)
+  | %space (?E{t_def.DotDataI, size = 128}DOT_DATA INT128 ':' expression)
+  | %space (?E{t_def.DotDataF, size = 32}DOT_DATA FLOAT32 ':' expression)
+  | %space (?E{t_def.DotDataF, size = 64}DOT_DATA FLOAT64 ':' expression)
+  | %space (?E{t_def.DotDataF, size = 128}DOT_DATA FLOAT128 ':' expression)
   | %space (?E{t_def.DotSpace}DOT_SPACE expression)
   | %space (?E{t_def.Op, op = t_def.OP_NOP}NOP)
-  | %space (?E{t_def.OpI, op = t_def.OP_ADD_EXPR_INT8_R1, size = 8}ADD expression ',' INT8 ',' R1)
-  | %space (?E{t_def.OpI, op = t_def.OP_ADD_EXPR_INT8_R2, size = 8}ADD expression ',' INT8 ',' R2)
-  | %space (?E{t_def.OpI, op = t_def.OP_ADD_EXPR_INT8_R3, size = 8}ADD expression ',' INT8 ',' R3)
-  | %space (?E{t_def.OpI, op = t_def.OP_ADD_EXPR_INT8_R4, size = 8}ADD expression ',' INT8 ',' R4)
-  | %space (?E{t_def.OpI, op = t_def.OP_ADD_EXPR_INT8_R5, size = 8}ADD expression ',' INT8 ',' R5)
-  | %space (?E{t_def.OpI, op = t_def.OP_ADD_EXPR_INT16_R1, size = 16}ADD expression ',' INT16 ',' R1)
-  | %space (?E{t_def.OpI, op = t_def.OP_ADD_EXPR_INT16_R2, size = 16}ADD expression ',' INT16 ',' R2)
-  | %space (?E{t_def.OpI, op = t_def.OP_ADD_EXPR_INT16_R3, size = 16}ADD expression ',' INT16 ',' R3)
-  | %space (?E{t_def.OpI, op = t_def.OP_ADD_EXPR_INT16_R4, size = 16}ADD expression ',' INT16 ',' R4)
-  | %space (?E{t_def.OpI, op = t_def.OP_ADD_EXPR_INT16_R5, size = 16}ADD expression ',' INT16 ',' R5)
-  | %space (?E{t_def.OpI, op = t_def.OP_ADD_EXPR_INT32_R1, size = 32}ADD expression ',' INT32 ',' R1)
-  | %space (?E{t_def.OpI, op = t_def.OP_ADD_EXPR_INT32_R2, size = 32}ADD expression ',' INT32 ',' R2)
-  | %space (?E{t_def.OpI, op = t_def.OP_ADD_EXPR_INT32_R3, size = 32}ADD expression ',' INT32 ',' R3)
-  | %space (?E{t_def.OpI, op = t_def.OP_ADD_EXPR_INT32_R4, size = 32}ADD expression ',' INT32 ',' R4)
-  | %space (?E{t_def.OpI, op = t_def.OP_ADD_EXPR_INT32_R5, size = 32}ADD expression ',' INT32 ',' R5)
+  | %space (?E{t_def.OpI, op = t_def.OP_ADD_INT8_EXPR_R1, size = 8}ADD INT8 ':' expression ',' R1)
+  | %space (?E{t_def.OpI, op = t_def.OP_ADD_INT8_EXPR_R2, size = 8}ADD INT8 ':' expression ',' R2)
+  | %space (?E{t_def.OpI, op = t_def.OP_ADD_INT8_EXPR_R3, size = 8}ADD INT8 ':' expression ',' R3)
+  | %space (?E{t_def.OpI, op = t_def.OP_ADD_INT8_EXPR_R4, size = 8}ADD INT8 ':' expression ',' R4)
+  | %space (?E{t_def.OpI, op = t_def.OP_ADD_INT8_EXPR_R5, size = 8}ADD INT8 ':' expression ',' R5)
+  | %space (?E{t_def.OpI, op = t_def.OP_ADD_INT16_EXPR_R1, size = 16}ADD INT16 ':' expression ',' R1)
+  | %space (?E{t_def.OpI, op = t_def.OP_ADD_INT16_EXPR_R2, size = 16}ADD INT16 ':' expression ',' R2)
+  | %space (?E{t_def.OpI, op = t_def.OP_ADD_INT16_EXPR_R3, size = 16}ADD INT16 ':' expression ',' R3)
+  | %space (?E{t_def.OpI, op = t_def.OP_ADD_INT16_EXPR_R4, size = 16}ADD INT16 ':' expression ',' R4)
+  | %space (?E{t_def.OpI, op = t_def.OP_ADD_INT16_EXPR_R5, size = 16}ADD INT16 ':' expression ',' R5)
+  | %space (?E{t_def.OpI, op = t_def.OP_ADD_INT32_EXPR_R1, size = 32}ADD INT32 ':' expression ',' R1)
+  | %space (?E{t_def.OpI, op = t_def.OP_ADD_INT32_EXPR_R2, size = 32}ADD INT32 ':' expression ',' R2)
+  | %space (?E{t_def.OpI, op = t_def.OP_ADD_INT32_EXPR_R3, size = 32}ADD INT32 ':' expression ',' R3)
+  | %space (?E{t_def.OpI, op = t_def.OP_ADD_INT32_EXPR_R4, size = 32}ADD INT32 ':' expression ',' R4)
+  | %space (?E{t_def.OpI, op = t_def.OP_ADD_INT32_EXPR_R5, size = 32}ADD INT32 ':' expression ',' R5)
   | %space (?E{t_def.Op, op = t_def.OP_ADD_INT8}ADD INT8)
   | %space (?E{t_def.Op, op = t_def.OP_ADD_INT16}ADD INT16)
   | %space (?E{t_def.Op, op = t_def.OP_ADD_INT32}ADD INT32)
@@ -258,12 +259,12 @@ input_line
   | %space (?E{t_def.Op, op = t_def.OP_AND_INT64}AND INT64)
   | %space (?E{t_def.Op, op = t_def.OP_AND_INT128}AND INT128)
   | %space (?E{t_def.Op, op = t_def.OP_CALL}CALL)
-  | %space (?E{t_def.OpI, op = t_def.OP_CALL_EXPR_INT8, size = 8}CALL expression ',' INT8)
-  | %space (?E{t_def.OpI, op = t_def.OP_CALL_EXPR_INT16, size = 16}CALL expression ',' INT16)
-  | %space (?E{t_def.OpI, op = t_def.OP_CALL_EXPR_INT32, size = 32}CALL expression ',' INT32)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_CALL_EXPR_INT8, size = 8}CALL expression ',' PCR8)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_CALL_EXPR_INT16, size = 16}CALL expression ',' PCR16)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_CALL_EXPR_INT32, size = 32}CALL expression ',' PCR32)
+  | %space (?E{t_def.OpI, op = t_def.OP_CALL_INT8_EXPR, size = 8}CALL INT8 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_CALL_INT16_EXPR, size = 16}CALL INT16 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_CALL_INT32_EXPR, size = 32}CALL INT32 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_CALL_INT8_EXPR, size = 8}CALL PCR8 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_CALL_INT16_EXPR, size = 16}CALL PCR16 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_CALL_INT32_EXPR, size = 32}CALL PCR32 ':' expression)
   | %space (?E{t_def.Op, op = t_def.OP_CVT_INT8_INT16}CVT INT8 ',' INT16)
   | %space (?E{t_def.Op, op = t_def.OP_CVT_INT8_INT32}CVT INT8 ',' INT32)
   | %space (?E{t_def.Op, op = t_def.OP_CVT_INT8_INT64}CVT INT8 ',' INT64)
@@ -395,180 +396,180 @@ input_line
   | %space (?E{t_def.Op, op = t_def.OP_GT_FLOAT32}GT FLOAT32)
   | %space (?E{t_def.Op, op = t_def.OP_GT_FLOAT64}GT FLOAT64)
   | %space (?E{t_def.Op, op = t_def.OP_GT_FLOAT128}GT FLOAT128)
-  | %space (?E{t_def.OpI, op = t_def.OP_IMM_EXPR_8, size = 8}IMM expression ',' INT8)
-  | %space (?E{t_def.OpI, op = t_def.OP_IMM_EXPR_16, size = 16}IMM expression ',' INT16)
-  | %space (?E{t_def.OpI, op = t_def.OP_IMM_EXPR_32, size = 32}IMM expression ',' INT32)
-  | %space (?E{t_def.OpI, op = t_def.OP_IMM_EXPR_64, size = 64}IMM expression ',' INT64)
-  | %space (?E{t_def.OpI, op = t_def.OP_IMM_EXPR_128, size = 128}IMM expression ',' INT128)
-  | %space (?E{t_def.OpF, op = t_def.OP_IMM_EXPR_32, size = 32}IMM expression ',' FLOAT32)
-  | %space (?E{t_def.OpF, op = t_def.OP_IMM_EXPR_64, size = 64}IMM expression ',' FLOAT64)
-  | %space (?E{t_def.OpF, op = t_def.OP_IMM_EXPR_128, size = 128}IMM expression ',' FLOAT128)
+  | %space (?E{t_def.OpI, op = t_def.OP_IMM_EXPR_8, size = 8}IMM INT8 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_IMM_EXPR_16, size = 16}IMM INT16 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_IMM_EXPR_32, size = 32}IMM INT32 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_IMM_EXPR_64, size = 64}IMM INT64 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_IMM_EXPR_128, size = 128}IMM INT128 ':' expression)
+  | %space (?E{t_def.OpF, op = t_def.OP_IMM_EXPR_32, size = 32}IMM FLOAT32 ':' expression)
+  | %space (?E{t_def.OpF, op = t_def.OP_IMM_EXPR_64, size = 64}IMM FLOAT64 ':' expression)
+  | %space (?E{t_def.OpF, op = t_def.OP_IMM_EXPR_128, size = 128}IMM FLOAT128 ':' expression)
 
   /* imm XXX,pcrY is a synonym for lea XXX,pcrY,r5 */
-  | %space (?E{t_def.OpPCR, op = t_def.OP_LEA_EXPR_INT8_R5, size = 8}IMM expression ',' PCR8)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_LEA_EXPR_INT16_R5, size = 16}IMM expression ',' PCR16)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_LEA_EXPR_INT32_R5, size = 32}IMM expression ',' PCR32)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_LEA_INT8_EXPR_R5, size = 8}IMM PCR8 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_LEA_INT16_EXPR_R5, size = 16}IMM PCR16 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_LEA_INT32_EXPR_R5, size = 32}IMM PCR32 ':' expression)
 
   /* jmp XXX,YYY is a synonym for add XXX,YYY,r5 */
-  | %space (?E{t_def.OpI, op = t_def.OP_ADD_EXPR_INT8_R5, size = 8}JMP expression ',' INT8)
-  | %space (?E{t_def.OpI, op = t_def.OP_ADD_EXPR_INT16_R5, size = 16}JMP expression ',' INT16)
-  | %space (?E{t_def.OpI, op = t_def.OP_ADD_EXPR_INT32_R5, size = 32}JMP expression ',' INT32)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_ADD_EXPR_INT8_R5, size = 8}JMP expression ',' PCR8)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_ADD_EXPR_INT16_R5, size = 16}JMP expression ',' PCR16)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_ADD_EXPR_INT32_R5, size = 32}JMP expression ',' PCR32)
+  | %space (?E{t_def.OpI, op = t_def.OP_ADD_INT8_EXPR_R5, size = 8}JMP INT8 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_ADD_INT16_EXPR_R5, size = 16}JMP INT16 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_ADD_INT32_EXPR_R5, size = 32}JMP INT32 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_ADD_INT8_EXPR_R5, size = 8}JMP PCR8 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_ADD_INT16_EXPR_R5, size = 16}JMP PCR16 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_ADD_INT32_EXPR_R5, size = 32}JMP PCR32 ':' expression)
 
-  | %space (?E{t_def.OpI, op = t_def.OP_JMPF_INT8_EXPR_INT8, size = 8}JMPF INT8 ',' expression ',' INT8)
-  | %space (?E{t_def.OpI, op = t_def.OP_JMPF_INT8_EXPR_INT16, size = 16}JMPF INT8 ',' expression ',' INT16)
-  | %space (?E{t_def.OpI, op = t_def.OP_JMPF_INT8_EXPR_INT32, size = 32}JMPF INT8 ',' expression ',' INT32)
-  | %space (?E{t_def.OpI, op = t_def.OP_JMPF_INT16_EXPR_INT8, size = 8}JMPF INT16 ',' expression ',' INT8)
-  | %space (?E{t_def.OpI, op = t_def.OP_JMPF_INT16_EXPR_INT16, size = 16}JMPF INT16 ',' expression ',' INT16)
-  | %space (?E{t_def.OpI, op = t_def.OP_JMPF_INT16_EXPR_INT32, size = 32}JMPF INT16 ',' expression ',' INT32)
-  | %space (?E{t_def.OpI, op = t_def.OP_JMPF_INT32_EXPR_INT8, size = 8}JMPF INT32 ',' expression ',' INT8)
-  | %space (?E{t_def.OpI, op = t_def.OP_JMPF_INT32_EXPR_INT16, size = 16}JMPF INT32 ',' expression ',' INT16)
-  | %space (?E{t_def.OpI, op = t_def.OP_JMPF_INT32_EXPR_INT32, size = 32}JMPF INT32 ',' expression ',' INT32)
-  | %space (?E{t_def.OpI, op = t_def.OP_JMPF_INT64_EXPR_INT8, size = 8}JMPF INT64 ',' expression ',' INT8)
-  | %space (?E{t_def.OpI, op = t_def.OP_JMPF_INT64_EXPR_INT16, size = 16}JMPF INT64 ',' expression ',' INT16)
-  | %space (?E{t_def.OpI, op = t_def.OP_JMPF_INT64_EXPR_INT32, size = 32}JMPF INT64 ',' expression ',' INT32)
-  | %space (?E{t_def.OpI, op = t_def.OP_JMPF_INT128_EXPR_INT8, size = 8}JMPF INT128 ',' expression ',' INT8)
-  | %space (?E{t_def.OpI, op = t_def.OP_JMPF_INT128_EXPR_INT16, size = 16}JMPF INT128 ',' expression ',' INT16)
-  | %space (?E{t_def.OpI, op = t_def.OP_JMPF_INT128_EXPR_INT32, size = 32}JMPF INT128 ',' expression ',' INT32)
-  | %space (?E{t_def.OpI, op = t_def.OP_JMPF_FLOAT32_EXPR_INT8, size = 8}JMPF FLOAT32 ',' expression ',' INT8)
-  | %space (?E{t_def.OpI, op = t_def.OP_JMPF_FLOAT32_EXPR_INT16, size = 16}JMPF FLOAT32 ',' expression ',' INT16)
-  | %space (?E{t_def.OpI, op = t_def.OP_JMPF_FLOAT32_EXPR_INT32, size = 32}JMPF FLOAT32 ',' expression ',' INT32)
-  | %space (?E{t_def.OpI, op = t_def.OP_JMPF_FLOAT64_EXPR_INT8, size = 8}JMPF FLOAT64 ',' expression ',' INT8)
-  | %space (?E{t_def.OpI, op = t_def.OP_JMPF_FLOAT64_EXPR_INT16, size = 16}JMPF FLOAT64 ',' expression ',' INT16)
-  | %space (?E{t_def.OpI, op = t_def.OP_JMPF_FLOAT64_EXPR_INT32, size = 32}JMPF FLOAT64 ',' expression ',' INT32)
-  | %space (?E{t_def.OpI, op = t_def.OP_JMPF_FLOAT128_EXPR_INT8, size = 8}JMPF FLOAT128 ',' expression ',' INT8)
-  | %space (?E{t_def.OpI, op = t_def.OP_JMPF_FLOAT128_EXPR_INT16, size = 16}JMPF FLOAT128 ',' expression ',' INT16)
-  | %space (?E{t_def.OpI, op = t_def.OP_JMPF_FLOAT128_EXPR_INT32, size = 32}JMPF FLOAT128 ',' expression ',' INT32)
-  | %space (?E{t_def.OpI, op = t_def.OP_JMPF_R1_EXPR_INT8, size = 8}JMPF R1 ',' expression ',' INT8)
-  | %space (?E{t_def.OpI, op = t_def.OP_JMPF_R1_EXPR_INT16, size = 16}JMPF R1 ',' expression ',' INT16)
-  | %space (?E{t_def.OpI, op = t_def.OP_JMPF_R1_EXPR_INT32, size = 32}JMPF R1 ',' expression ',' INT32)
-  | %space (?E{t_def.OpI, op = t_def.OP_JMPF_R2_EXPR_INT8, size = 8}JMPF R2 ',' expression ',' INT8)
-  | %space (?E{t_def.OpI, op = t_def.OP_JMPF_R2_EXPR_INT16, size = 16}JMPF R2 ',' expression ',' INT16)
-  | %space (?E{t_def.OpI, op = t_def.OP_JMPF_R2_EXPR_INT32, size = 32}JMPF R2 ',' expression ',' INT32)
-  | %space (?E{t_def.OpI, op = t_def.OP_JMPF_R3_EXPR_INT8, size = 8}JMPF R3 ',' expression ',' INT8)
-  | %space (?E{t_def.OpI, op = t_def.OP_JMPF_R3_EXPR_INT16, size = 16}JMPF R3 ',' expression ',' INT16)
-  | %space (?E{t_def.OpI, op = t_def.OP_JMPF_R3_EXPR_INT32, size = 32}JMPF R3 ',' expression ',' INT32)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPF_INT8_EXPR_INT8, size = 8}JMPF INT8 ',' expression ',' PCR8)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPF_INT8_EXPR_INT16, size = 16}JMPF INT8 ',' expression ',' PCR16)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPF_INT8_EXPR_INT32, size = 32}JMPF INT8 ',' expression ',' PCR32)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPF_INT16_EXPR_INT8, size = 8}JMPF INT16 ',' expression ',' PCR8)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPF_INT16_EXPR_INT16, size = 16}JMPF INT16 ',' expression ',' PCR16)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPF_INT16_EXPR_INT32, size = 32}JMPF INT16 ',' expression ',' PCR32)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPF_INT32_EXPR_INT8, size = 8}JMPF INT32 ',' expression ',' PCR8)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPF_INT32_EXPR_INT16, size = 16}JMPF INT32 ',' expression ',' PCR16)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPF_INT32_EXPR_INT32, size = 32}JMPF INT32 ',' expression ',' PCR32)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPF_INT64_EXPR_INT8, size = 8}JMPF INT64 ',' expression ',' PCR8)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPF_INT64_EXPR_INT16, size = 16}JMPF INT64 ',' expression ',' PCR16)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPF_INT64_EXPR_INT32, size = 32}JMPF INT64 ',' expression ',' PCR32)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPF_INT128_EXPR_INT8, size = 8}JMPF INT128 ',' expression ',' PCR8)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPF_INT128_EXPR_INT16, size = 16}JMPF INT128 ',' expression ',' PCR16)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPF_INT128_EXPR_INT32, size = 32}JMPF INT128 ',' expression ',' PCR32)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPF_FLOAT32_EXPR_INT8, size = 8}JMPF FLOAT32 ',' expression ',' PCR8)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPF_FLOAT32_EXPR_INT16, size = 16}JMPF FLOAT32 ',' expression ',' PCR16)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPF_FLOAT32_EXPR_INT32, size = 32}JMPF FLOAT32 ',' expression ',' PCR32)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPF_FLOAT64_EXPR_INT8, size = 8}JMPF FLOAT64 ',' expression ',' PCR8)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPF_FLOAT64_EXPR_INT16, size = 16}JMPF FLOAT64 ',' expression ',' PCR16)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPF_FLOAT64_EXPR_INT32, size = 32}JMPF FLOAT64 ',' expression ',' PCR32)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPF_FLOAT128_EXPR_INT8, size = 8}JMPF FLOAT128 ',' expression ',' PCR8)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPF_FLOAT128_EXPR_INT16, size = 16}JMPF FLOAT128 ',' expression ',' PCR16)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPF_FLOAT128_EXPR_INT32, size = 32}JMPF FLOAT128 ',' expression ',' PCR32)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPF_R1_EXPR_INT8, size = 8}JMPF R1 ',' expression ',' PCR8)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPF_R1_EXPR_INT16, size = 16}JMPF R1 ',' expression ',' PCR16)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPF_R1_EXPR_INT32, size = 32}JMPF R1 ',' expression ',' PCR32)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPF_R2_EXPR_INT8, size = 8}JMPF R2 ',' expression ',' PCR8)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPF_R2_EXPR_INT16, size = 16}JMPF R2 ',' expression ',' PCR16)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPF_R2_EXPR_INT32, size = 32}JMPF R2 ',' expression ',' PCR32)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPF_R3_EXPR_INT8, size = 8}JMPF R3 ',' expression ',' PCR8)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPF_R3_EXPR_INT16, size = 16}JMPF R3 ',' expression ',' PCR16)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPF_R3_EXPR_INT32, size = 32}JMPF R3 ',' expression ',' PCR32)
-  | %space (?E{t_def.OpI, op = t_def.OP_JMPT_INT8_EXPR_INT8, size = 8}JMPT INT8 ',' expression ',' INT8)
-  | %space (?E{t_def.OpI, op = t_def.OP_JMPT_INT8_EXPR_INT16, size = 16}JMPT INT8 ',' expression ',' INT16)
-  | %space (?E{t_def.OpI, op = t_def.OP_JMPT_INT8_EXPR_INT32, size = 32}JMPT INT8 ',' expression ',' INT32)
-  | %space (?E{t_def.OpI, op = t_def.OP_JMPT_INT16_EXPR_INT8, size = 8}JMPT INT16 ',' expression ',' INT8)
-  | %space (?E{t_def.OpI, op = t_def.OP_JMPT_INT16_EXPR_INT16, size = 16}JMPT INT16 ',' expression ',' INT16)
-  | %space (?E{t_def.OpI, op = t_def.OP_JMPT_INT16_EXPR_INT32, size = 32}JMPT INT16 ',' expression ',' INT32)
-  | %space (?E{t_def.OpI, op = t_def.OP_JMPT_INT32_EXPR_INT8, size = 8}JMPT INT32 ',' expression ',' INT8)
-  | %space (?E{t_def.OpI, op = t_def.OP_JMPT_INT32_EXPR_INT16, size = 16}JMPT INT32 ',' expression ',' INT16)
-  | %space (?E{t_def.OpI, op = t_def.OP_JMPT_INT32_EXPR_INT32, size = 32}JMPT INT32 ',' expression ',' INT32)
-  | %space (?E{t_def.OpI, op = t_def.OP_JMPT_INT64_EXPR_INT8, size = 8}JMPT INT64 ',' expression ',' INT8)
-  | %space (?E{t_def.OpI, op = t_def.OP_JMPT_INT64_EXPR_INT16, size = 16}JMPT INT64 ',' expression ',' INT16)
-  | %space (?E{t_def.OpI, op = t_def.OP_JMPT_INT64_EXPR_INT32, size = 32}JMPT INT64 ',' expression ',' INT32)
-  | %space (?E{t_def.OpI, op = t_def.OP_JMPT_INT128_EXPR_INT8, size = 8}JMPT INT128 ',' expression ',' INT8)
-  | %space (?E{t_def.OpI, op = t_def.OP_JMPT_INT128_EXPR_INT16, size = 16}JMPT INT128 ',' expression ',' INT16)
-  | %space (?E{t_def.OpI, op = t_def.OP_JMPT_INT128_EXPR_INT32, size = 32}JMPT INT128 ',' expression ',' INT32)
-  | %space (?E{t_def.OpI, op = t_def.OP_JMPT_FLOAT32_EXPR_INT8, size = 8}JMPT FLOAT32 ',' expression ',' INT8)
-  | %space (?E{t_def.OpI, op = t_def.OP_JMPT_FLOAT32_EXPR_INT16, size = 16}JMPT FLOAT32 ',' expression ',' INT16)
-  | %space (?E{t_def.OpI, op = t_def.OP_JMPT_FLOAT32_EXPR_INT32, size = 32}JMPT FLOAT32 ',' expression ',' INT32)
-  | %space (?E{t_def.OpI, op = t_def.OP_JMPT_FLOAT64_EXPR_INT8, size = 8}JMPT FLOAT64 ',' expression ',' INT8)
-  | %space (?E{t_def.OpI, op = t_def.OP_JMPT_FLOAT64_EXPR_INT16, size = 16}JMPT FLOAT64 ',' expression ',' INT16)
-  | %space (?E{t_def.OpI, op = t_def.OP_JMPT_FLOAT64_EXPR_INT32, size = 32}JMPT FLOAT64 ',' expression ',' INT32)
-  | %space (?E{t_def.OpI, op = t_def.OP_JMPT_FLOAT128_EXPR_INT8, size = 8}JMPT FLOAT128 ',' expression ',' INT8)
-  | %space (?E{t_def.OpI, op = t_def.OP_JMPT_FLOAT128_EXPR_INT16, size = 16}JMPT FLOAT128 ',' expression ',' INT16)
-  | %space (?E{t_def.OpI, op = t_def.OP_JMPT_FLOAT128_EXPR_INT32, size = 32}JMPT FLOAT128 ',' expression ',' INT32)
-  | %space (?E{t_def.OpI, op = t_def.OP_JMPT_R1_EXPR_INT8, size = 8}JMPT R1 ',' expression ',' INT8)
-  | %space (?E{t_def.OpI, op = t_def.OP_JMPT_R1_EXPR_INT16, size = 16}JMPT R1 ',' expression ',' INT16)
-  | %space (?E{t_def.OpI, op = t_def.OP_JMPT_R1_EXPR_INT32, size = 32}JMPT R1 ',' expression ',' INT32)
-  | %space (?E{t_def.OpI, op = t_def.OP_JMPT_R2_EXPR_INT8, size = 8}JMPT R2 ',' expression ',' INT8)
-  | %space (?E{t_def.OpI, op = t_def.OP_JMPT_R2_EXPR_INT16, size = 16}JMPT R2 ',' expression ',' INT16)
-  | %space (?E{t_def.OpI, op = t_def.OP_JMPT_R2_EXPR_INT32, size = 32}JMPT R2 ',' expression ',' INT32)
-  | %space (?E{t_def.OpI, op = t_def.OP_JMPT_R3_EXPR_INT8, size = 8}JMPT R3 ',' expression ',' INT8)
-  | %space (?E{t_def.OpI, op = t_def.OP_JMPT_R3_EXPR_INT16, size = 16}JMPT R3 ',' expression ',' INT16)
-  | %space (?E{t_def.OpI, op = t_def.OP_JMPT_R3_EXPR_INT32, size = 32}JMPT R3 ',' expression ',' INT32)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPT_INT8_EXPR_INT8, size = 8}JMPT INT8 ',' expression ',' PCR8)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPT_INT8_EXPR_INT16, size = 16}JMPT INT8 ',' expression ',' PCR16)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPT_INT8_EXPR_INT32, size = 32}JMPT INT8 ',' expression ',' PCR32)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPT_INT16_EXPR_INT8, size = 8}JMPT INT16 ',' expression ',' PCR8)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPT_INT16_EXPR_INT16, size = 16}JMPT INT16 ',' expression ',' PCR16)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPT_INT16_EXPR_INT32, size = 32}JMPT INT16 ',' expression ',' PCR32)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPT_INT32_EXPR_INT8, size = 8}JMPT INT32 ',' expression ',' PCR8)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPT_INT32_EXPR_INT16, size = 16}JMPT INT32 ',' expression ',' PCR16)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPT_INT32_EXPR_INT32, size = 32}JMPT INT32 ',' expression ',' PCR32)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPT_INT64_EXPR_INT8, size = 8}JMPT INT64 ',' expression ',' PCR8)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPT_INT64_EXPR_INT16, size = 16}JMPT INT64 ',' expression ',' PCR16)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPT_INT64_EXPR_INT32, size = 32}JMPT INT64 ',' expression ',' PCR32)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPT_INT128_EXPR_INT8, size = 8}JMPT INT128 ',' expression ',' PCR8)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPT_INT128_EXPR_INT16, size = 16}JMPT INT128 ',' expression ',' PCR16)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPT_INT128_EXPR_INT32, size = 32}JMPT INT128 ',' expression ',' PCR32)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPT_FLOAT32_EXPR_INT8, size = 8}JMPT FLOAT32 ',' expression ',' PCR8)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPT_FLOAT32_EXPR_INT16, size = 16}JMPT FLOAT32 ',' expression ',' PCR16)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPT_FLOAT32_EXPR_INT32, size = 32}JMPT FLOAT32 ',' expression ',' PCR32)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPT_FLOAT64_EXPR_INT8, size = 8}JMPT FLOAT64 ',' expression ',' PCR8)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPT_FLOAT64_EXPR_INT16, size = 16}JMPT FLOAT64 ',' expression ',' PCR16)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPT_FLOAT64_EXPR_INT32, size = 32}JMPT FLOAT64 ',' expression ',' PCR32)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPT_FLOAT128_EXPR_INT8, size = 8}JMPT FLOAT128 ',' expression ',' PCR8)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPT_FLOAT128_EXPR_INT16, size = 16}JMPT FLOAT128 ',' expression ',' PCR16)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPT_FLOAT128_EXPR_INT32, size = 32}JMPT FLOAT128 ',' expression ',' PCR32)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPT_R1_EXPR_INT8, size = 8}JMPT R1 ',' expression ',' PCR8)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPT_R1_EXPR_INT16, size = 16}JMPT R1 ',' expression ',' PCR16)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPT_R1_EXPR_INT32, size = 32}JMPT R1 ',' expression ',' PCR32)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPT_R2_EXPR_INT8, size = 8}JMPT R2 ',' expression ',' PCR8)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPT_R2_EXPR_INT16, size = 16}JMPT R2 ',' expression ',' PCR16)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPT_R2_EXPR_INT32, size = 32}JMPT R2 ',' expression ',' PCR32)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPT_R3_EXPR_INT8, size = 8}JMPT R3 ',' expression ',' PCR8)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPT_R3_EXPR_INT16, size = 16}JMPT R3 ',' expression ',' PCR16)
-  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPT_R3_EXPR_INT32, size = 32}JMPT R3 ',' expression ',' PCR32)
+  | %space (?E{t_def.OpI, op = t_def.OP_JMPF_INT8_INT8_EXPR, size = 8}JMPF INT8 ',' INT8 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_JMPF_INT8_INT16_EXPR, size = 16}JMPF INT8 ',' INT16 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_JMPF_INT8_INT32_EXPR, size = 32}JMPF INT8 ',' INT32 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_JMPF_INT16_INT8_EXPR, size = 8}JMPF INT16 ',' INT8 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_JMPF_INT16_INT16_EXPR, size = 16}JMPF INT16 ',' INT16 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_JMPF_INT16_INT32_EXPR, size = 32}JMPF INT16 ',' INT32 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_JMPF_INT32_INT8_EXPR, size = 8}JMPF INT32 ',' INT8 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_JMPF_INT32_INT16_EXPR, size = 16}JMPF INT32 ',' INT16 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_JMPF_INT32_INT32_EXPR, size = 32}JMPF INT32 ',' INT32 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_JMPF_INT64_INT8_EXPR, size = 8}JMPF INT64 ',' INT8 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_JMPF_INT64_INT16_EXPR, size = 16}JMPF INT64 ',' INT16 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_JMPF_INT64_INT32_EXPR, size = 32}JMPF INT64 ',' INT32 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_JMPF_INT128_INT8_EXPR, size = 8}JMPF INT128 ',' INT8 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_JMPF_INT128_INT16_EXPR, size = 16}JMPF INT128 ',' INT16 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_JMPF_INT128_INT32_EXPR, size = 32}JMPF INT128 ',' INT32 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_JMPF_FLOAT32_INT8_EXPR, size = 8}JMPF FLOAT32 ',' INT8 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_JMPF_FLOAT32_INT16_EXPR, size = 16}JMPF FLOAT32 ',' INT16 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_JMPF_FLOAT32_INT32_EXPR, size = 32}JMPF FLOAT32 ',' INT32 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_JMPF_FLOAT64_INT8_EXPR, size = 8}JMPF FLOAT64 ',' INT8 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_JMPF_FLOAT64_INT16_EXPR, size = 16}JMPF FLOAT64 ',' INT16 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_JMPF_FLOAT64_INT32_EXPR, size = 32}JMPF FLOAT64 ',' INT32 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_JMPF_FLOAT128_INT8_EXPR, size = 8}JMPF FLOAT128 ',' INT8 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_JMPF_FLOAT128_INT16_EXPR, size = 16}JMPF FLOAT128 ',' INT16 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_JMPF_FLOAT128_INT32_EXPR, size = 32}JMPF FLOAT128 ',' INT32 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_JMPF_R1_INT8_EXPR, size = 8}JMPF R1 ',' INT8 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_JMPF_R1_INT16_EXPR, size = 16}JMPF R1 ',' INT16 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_JMPF_R1_INT32_EXPR, size = 32}JMPF R1 ',' INT32 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_JMPF_R2_INT8_EXPR, size = 8}JMPF R2 ',' INT8 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_JMPF_R2_INT16_EXPR, size = 16}JMPF R2 ',' INT16 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_JMPF_R2_INT32_EXPR, size = 32}JMPF R2 ',' INT32 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_JMPF_R3_INT8_EXPR, size = 8}JMPF R3 ',' INT8 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_JMPF_R3_INT16_EXPR, size = 16}JMPF R3 ',' INT16 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_JMPF_R3_INT32_EXPR, size = 32}JMPF R3 ',' INT32 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPF_INT8_INT8_EXPR, size = 8}JMPF INT8 ',' PCR8 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPF_INT8_INT16_EXPR, size = 16}JMPF INT8 ',' PCR16 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPF_INT8_INT32_EXPR, size = 32}JMPF INT8 ',' PCR32 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPF_INT16_INT8_EXPR, size = 8}JMPF INT16 ',' PCR8 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPF_INT16_INT16_EXPR, size = 16}JMPF INT16 ',' PCR16 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPF_INT16_INT32_EXPR, size = 32}JMPF INT16 ',' PCR32 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPF_INT32_INT8_EXPR, size = 8}JMPF INT32 ',' PCR8 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPF_INT32_INT16_EXPR, size = 16}JMPF INT32 ',' PCR16 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPF_INT32_INT32_EXPR, size = 32}JMPF INT32 ',' PCR32 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPF_INT64_INT8_EXPR, size = 8}JMPF INT64 ',' PCR8 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPF_INT64_INT16_EXPR, size = 16}JMPF INT64 ',' PCR16 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPF_INT64_INT32_EXPR, size = 32}JMPF INT64 ',' PCR32 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPF_INT128_INT8_EXPR, size = 8}JMPF INT128 ',' PCR8 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPF_INT128_INT16_EXPR, size = 16}JMPF INT128 ',' PCR16 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPF_INT128_INT32_EXPR, size = 32}JMPF INT128 ',' PCR32 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPF_FLOAT32_INT8_EXPR, size = 8}JMPF FLOAT32 ',' PCR8 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPF_FLOAT32_INT16_EXPR, size = 16}JMPF FLOAT32 ',' PCR16 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPF_FLOAT32_INT32_EXPR, size = 32}JMPF FLOAT32 ',' PCR32 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPF_FLOAT64_INT8_EXPR, size = 8}JMPF FLOAT64 ',' PCR8 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPF_FLOAT64_INT16_EXPR, size = 16}JMPF FLOAT64 ',' PCR16 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPF_FLOAT64_INT32_EXPR, size = 32}JMPF FLOAT64 ',' PCR32 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPF_FLOAT128_INT8_EXPR, size = 8}JMPF FLOAT128 ',' PCR8 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPF_FLOAT128_INT16_EXPR, size = 16}JMPF FLOAT128 ',' PCR16 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPF_FLOAT128_INT32_EXPR, size = 32}JMPF FLOAT128 ',' PCR32 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPF_R1_INT8_EXPR, size = 8}JMPF R1 ',' PCR8 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPF_R1_INT16_EXPR, size = 16}JMPF R1 ',' PCR16 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPF_R1_INT32_EXPR, size = 32}JMPF R1 ',' PCR32 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPF_R2_INT8_EXPR, size = 8}JMPF R2 ',' PCR8 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPF_R2_INT16_EXPR, size = 16}JMPF R2 ',' PCR16 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPF_R2_INT32_EXPR, size = 32}JMPF R2 ',' PCR32 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPF_R3_INT8_EXPR, size = 8}JMPF R3 ',' PCR8 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPF_R3_INT16_EXPR, size = 16}JMPF R3 ',' PCR16 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPF_R3_INT32_EXPR, size = 32}JMPF R3 ',' PCR32 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_JMPT_INT8_INT8_EXPR, size = 8}JMPT INT8 ',' INT8 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_JMPT_INT8_INT16_EXPR, size = 16}JMPT INT8 ',' INT16 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_JMPT_INT8_INT32_EXPR, size = 32}JMPT INT8 ',' INT32 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_JMPT_INT16_INT8_EXPR, size = 8}JMPT INT16 ',' INT8 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_JMPT_INT16_INT16_EXPR, size = 16}JMPT INT16 ',' INT16 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_JMPT_INT16_INT32_EXPR, size = 32}JMPT INT16 ',' INT32 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_JMPT_INT32_INT8_EXPR, size = 8}JMPT INT32 ',' INT8 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_JMPT_INT32_INT16_EXPR, size = 16}JMPT INT32 ',' INT16 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_JMPT_INT32_INT32_EXPR, size = 32}JMPT INT32 ',' INT32 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_JMPT_INT64_INT8_EXPR, size = 8}JMPT INT64 ',' INT8 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_JMPT_INT64_INT16_EXPR, size = 16}JMPT INT64 ',' INT16 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_JMPT_INT64_INT32_EXPR, size = 32}JMPT INT64 ',' INT32 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_JMPT_INT128_INT8_EXPR, size = 8}JMPT INT128 ',' INT8 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_JMPT_INT128_INT16_EXPR, size = 16}JMPT INT128 ',' INT16 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_JMPT_INT128_INT32_EXPR, size = 32}JMPT INT128 ',' INT32 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_JMPT_FLOAT32_INT8_EXPR, size = 8}JMPT FLOAT32 ',' INT8 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_JMPT_FLOAT32_INT16_EXPR, size = 16}JMPT FLOAT32 ',' INT16 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_JMPT_FLOAT32_INT32_EXPR, size = 32}JMPT FLOAT32 ',' INT32 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_JMPT_FLOAT64_INT8_EXPR, size = 8}JMPT FLOAT64 ',' INT8 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_JMPT_FLOAT64_INT16_EXPR, size = 16}JMPT FLOAT64 ',' INT16 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_JMPT_FLOAT64_INT32_EXPR, size = 32}JMPT FLOAT64 ',' INT32 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_JMPT_FLOAT128_INT8_EXPR, size = 8}JMPT FLOAT128 ',' INT8 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_JMPT_FLOAT128_INT16_EXPR, size = 16}JMPT FLOAT128 ',' INT16 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_JMPT_FLOAT128_INT32_EXPR, size = 32}JMPT FLOAT128 ',' INT32 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_JMPT_R1_INT8_EXPR, size = 8}JMPT R1 ',' INT8 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_JMPT_R1_INT16_EXPR, size = 16}JMPT R1 ',' INT16 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_JMPT_R1_INT32_EXPR, size = 32}JMPT R1 ',' INT32 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_JMPT_R2_INT8_EXPR, size = 8}JMPT R2 ',' INT8 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_JMPT_R2_INT16_EXPR, size = 16}JMPT R2 ',' INT16 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_JMPT_R2_INT32_EXPR, size = 32}JMPT R2 ',' INT32 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_JMPT_R3_INT8_EXPR, size = 8}JMPT R3 ',' INT8 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_JMPT_R3_INT16_EXPR, size = 16}JMPT R3 ',' INT16 ':' expression)
+  | %space (?E{t_def.OpI, op = t_def.OP_JMPT_R3_INT32_EXPR, size = 32}JMPT R3 ',' INT32 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPT_INT8_INT8_EXPR, size = 8}JMPT INT8 ',' PCR8 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPT_INT8_INT16_EXPR, size = 16}JMPT INT8 ',' PCR16 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPT_INT8_INT32_EXPR, size = 32}JMPT INT8 ',' PCR32 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPT_INT16_INT8_EXPR, size = 8}JMPT INT16 ',' PCR8 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPT_INT16_INT16_EXPR, size = 16}JMPT INT16 ',' PCR16 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPT_INT16_INT32_EXPR, size = 32}JMPT INT16 ',' PCR32 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPT_INT32_INT8_EXPR, size = 8}JMPT INT32 ',' PCR8 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPT_INT32_INT16_EXPR, size = 16}JMPT INT32 ',' PCR16 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPT_INT32_INT32_EXPR, size = 32}JMPT INT32 ',' PCR32 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPT_INT64_INT8_EXPR, size = 8}JMPT INT64 ',' PCR8 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPT_INT64_INT16_EXPR, size = 16}JMPT INT64 ',' PCR16 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPT_INT64_INT32_EXPR, size = 32}JMPT INT64 ',' PCR32 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPT_INT128_INT8_EXPR, size = 8}JMPT INT128 ',' PCR8 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPT_INT128_INT16_EXPR, size = 16}JMPT INT128 ',' PCR16 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPT_INT128_INT32_EXPR, size = 32}JMPT INT128 ',' PCR32 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPT_FLOAT32_INT8_EXPR, size = 8}JMPT FLOAT32 ',' PCR8 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPT_FLOAT32_INT16_EXPR, size = 16}JMPT FLOAT32 ',' PCR16 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPT_FLOAT32_INT32_EXPR, size = 32}JMPT FLOAT32 ',' PCR32 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPT_FLOAT64_INT8_EXPR, size = 8}JMPT FLOAT64 ',' PCR8 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPT_FLOAT64_INT16_EXPR, size = 16}JMPT FLOAT64 ',' PCR16 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPT_FLOAT64_INT32_EXPR, size = 32}JMPT FLOAT64 ',' PCR32 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPT_FLOAT128_INT8_EXPR, size = 8}JMPT FLOAT128 ',' PCR8 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPT_FLOAT128_INT16_EXPR, size = 16}JMPT FLOAT128 ',' PCR16 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPT_FLOAT128_INT32_EXPR, size = 32}JMPT FLOAT128 ',' PCR32 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPT_R1_INT8_EXPR, size = 8}JMPT R1 ',' PCR8 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPT_R1_INT16_EXPR, size = 16}JMPT R1 ',' PCR16 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPT_R1_INT32_EXPR, size = 32}JMPT R1 ',' PCR32 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPT_R2_INT8_EXPR, size = 8}JMPT R2 ',' PCR8 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPT_R2_INT16_EXPR, size = 16}JMPT R2 ',' PCR16 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPT_R2_INT32_EXPR, size = 32}JMPT R2 ',' PCR32 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPT_R3_INT8_EXPR, size = 8}JMPT R3 ',' PCR8 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPT_R3_INT16_EXPR, size = 16}JMPT R3 ',' PCR16 ':' expression)
+  | %space (?E{t_def.OpPCR, op = t_def.OP_JMPT_R3_INT32_EXPR, size = 32}JMPT R3 ',' PCR32 ':' expression)
   | %space (?E{t_def.Op, op = t_def.OP_LD_8}LD_8)
   | %space (?E{t_def.Op, op = t_def.OP_LD_16}LD_16)
   | %space (?E{t_def.Op, op = t_def.OP_LD_32}LD_32)
   | %space (?E{t_def.Op, op = t_def.OP_LD_64}LD_64)
   | %space (?E{t_def.Op, op = t_def.OP_LD_128}LD_128)
-  | %space (?E{t_def.OpI, op = t_def.OP_LEA_EXPR_INT8_R1, size = 8}LEA expression ',' INT8 ',' R1)
-  | %space (?E{t_def.OpI, op = t_def.OP_LEA_EXPR_INT8_R2, size = 8}LEA expression ',' INT8 ',' R2)
-  | %space (?E{t_def.OpI, op = t_def.OP_LEA_EXPR_INT8_R3, size = 8}LEA expression ',' INT8 ',' R3)
-  | %space (?E{t_def.OpI, op = t_def.OP_LEA_EXPR_INT8_R4, size = 8}LEA expression ',' INT8 ',' R4)
-  | %space (?E{t_def.OpI, op = t_def.OP_LEA_EXPR_INT8_R5, size = 8}LEA expression ',' INT8 ',' R5)
-  | %space (?E{t_def.OpI, op = t_def.OP_LEA_EXPR_INT16_R1, size = 16}LEA expression ',' INT16 ',' R1)
-  | %space (?E{t_def.OpI, op = t_def.OP_LEA_EXPR_INT16_R2, size = 16}LEA expression ',' INT16 ',' R2)
-  | %space (?E{t_def.OpI, op = t_def.OP_LEA_EXPR_INT16_R3, size = 16}LEA expression ',' INT16 ',' R3)
-  | %space (?E{t_def.OpI, op = t_def.OP_LEA_EXPR_INT16_R4, size = 16}LEA expression ',' INT16 ',' R4)
-  | %space (?E{t_def.OpI, op = t_def.OP_LEA_EXPR_INT16_R5, size = 16}LEA expression ',' INT16 ',' R5)
-  | %space (?E{t_def.OpI, op = t_def.OP_LEA_EXPR_INT32_R1, size = 32}LEA expression ',' INT32 ',' R1)
-  | %space (?E{t_def.OpI, op = t_def.OP_LEA_EXPR_INT32_R2, size = 32}LEA expression ',' INT32 ',' R2)
-  | %space (?E{t_def.OpI, op = t_def.OP_LEA_EXPR_INT32_R3, size = 32}LEA expression ',' INT32 ',' R3)
-  | %space (?E{t_def.OpI, op = t_def.OP_LEA_EXPR_INT32_R4, size = 32}LEA expression ',' INT32 ',' R4)
-  | %space (?E{t_def.OpI, op = t_def.OP_LEA_EXPR_INT32_R5, size = 32}LEA expression ',' INT32 ',' R5)
+  | %space (?E{t_def.OpI, op = t_def.OP_LEA_INT8_EXPR_R1, size = 8}LEA INT8 ':' expression ',' R1)
+  | %space (?E{t_def.OpI, op = t_def.OP_LEA_INT8_EXPR_R2, size = 8}LEA INT8 ':' expression ',' R2)
+  | %space (?E{t_def.OpI, op = t_def.OP_LEA_INT8_EXPR_R3, size = 8}LEA INT8 ':' expression ',' R3)
+  | %space (?E{t_def.OpI, op = t_def.OP_LEA_INT8_EXPR_R4, size = 8}LEA INT8 ':' expression ',' R4)
+  | %space (?E{t_def.OpI, op = t_def.OP_LEA_INT8_EXPR_R5, size = 8}LEA INT8 ':' expression ',' R5)
+  | %space (?E{t_def.OpI, op = t_def.OP_LEA_INT16_EXPR_R1, size = 16}LEA INT16 ':' expression ',' R1)
+  | %space (?E{t_def.OpI, op = t_def.OP_LEA_INT16_EXPR_R2, size = 16}LEA INT16 ':' expression ',' R2)
+  | %space (?E{t_def.OpI, op = t_def.OP_LEA_INT16_EXPR_R3, size = 16}LEA INT16 ':' expression ',' R3)
+  | %space (?E{t_def.OpI, op = t_def.OP_LEA_INT16_EXPR_R4, size = 16}LEA INT16 ':' expression ',' R4)
+  | %space (?E{t_def.OpI, op = t_def.OP_LEA_INT16_EXPR_R5, size = 16}LEA INT16 ':' expression ',' R5)
+  | %space (?E{t_def.OpI, op = t_def.OP_LEA_INT32_EXPR_R1, size = 32}LEA INT32 ':' expression ',' R1)
+  | %space (?E{t_def.OpI, op = t_def.OP_LEA_INT32_EXPR_R2, size = 32}LEA INT32 ':' expression ',' R2)
+  | %space (?E{t_def.OpI, op = t_def.OP_LEA_INT32_EXPR_R3, size = 32}LEA INT32 ':' expression ',' R3)
+  | %space (?E{t_def.OpI, op = t_def.OP_LEA_INT32_EXPR_R4, size = 32}LEA INT32 ':' expression ',' R4)
+  | %space (?E{t_def.OpI, op = t_def.OP_LEA_INT32_EXPR_R5, size = 32}LEA INT32 ':' expression ',' R5)
   | %space (?E{t_def.Op, op = t_def.OP_LE_INT8}LE INT8)
   | %space (?E{t_def.Op, op = t_def.OP_LE_INT16}LE INT16)
   | %space (?E{t_def.Op, op = t_def.OP_LE_INT32}LE INT32)
@@ -615,16 +616,16 @@ input_line
   | %space (?E{t_def.Op, op = t_def.OP_MOD_R_UINT32}MOD_R UINT32)
   | %space (?E{t_def.Op, op = t_def.OP_MOD_R_UINT64}MOD_R UINT64)
   | %space (?E{t_def.Op, op = t_def.OP_MOD_R_UINT128}MOD_R UINT128)
-  | %space (?E{t_def.Op, op = t_def.OP_MOV_R0_R1}MOV R0 ',' R1)
-  | %space (?E{t_def.Op, op = t_def.OP_MOV_R0_R2}MOV R0 ',' R2)
-  | %space (?E{t_def.Op, op = t_def.OP_MOV_R0_R3}MOV R0 ',' R3)
-  | %space (?E{t_def.Op, op = t_def.OP_MOV_R0_R4}MOV R0 ',' R4)
-  | %space (?E{t_def.Op, op = t_def.OP_MOV_R0_R5}MOV R0 ',' R5)
-  | %space (?E{t_def.Op, op = t_def.OP_MOV_R1_R0}MOV R1 ',' R0)
-  | %space (?E{t_def.Op, op = t_def.OP_MOV_R2_R0}MOV R2 ',' R0)
-  | %space (?E{t_def.Op, op = t_def.OP_MOV_R3_R0}MOV R3 ',' R0)
-  | %space (?E{t_def.Op, op = t_def.OP_MOV_R4_R0}MOV R4 ',' R0)
-  | %space (?E{t_def.Op, op = t_def.OP_MOV_R5_R0}MOV R5 ',' R0)
+  | %space (?E{t_def.Op, op = t_def.OP_SET_R1}SET R1)
+  | %space (?E{t_def.Op, op = t_def.OP_SET_R2}SET R2)
+  | %space (?E{t_def.Op, op = t_def.OP_SET_R3}SET R3)
+  | %space (?E{t_def.Op, op = t_def.OP_SET_R4}SET R4)
+  | %space (?E{t_def.Op, op = t_def.OP_SET_R5}SET R5)
+  | %space (?E{t_def.Op, op = t_def.OP_GET_R1}GET R1)
+  | %space (?E{t_def.Op, op = t_def.OP_GET_R2}GET R2)
+  | %space (?E{t_def.Op, op = t_def.OP_GET_R3}GET R3)
+  | %space (?E{t_def.Op, op = t_def.OP_GET_R4}GET R4)
+  | %space (?E{t_def.Op, op = t_def.OP_GET_R5}GET R5)
   | %space (?E{t_def.Op, op = t_def.OP_MUL_INT8}MUL INT8)
   | %space (?E{t_def.Op, op = t_def.OP_MUL_INT16}MUL INT16)
   | %space (?E{t_def.Op, op = t_def.OP_MUL_INT32}MUL INT32)