diff options
Diffstat (limited to 'Build/source/utils/xml2pmx/xml2pmx-src/action.c')
-rw-r--r-- | Build/source/utils/xml2pmx/xml2pmx-src/action.c | 1075 |
1 files changed, 1075 insertions, 0 deletions
diff --git a/Build/source/utils/xml2pmx/xml2pmx-src/action.c b/Build/source/utils/xml2pmx/xml2pmx-src/action.c new file mode 100644 index 00000000000..27d72f31f43 --- /dev/null +++ b/Build/source/utils/xml2pmx/xml2pmx-src/action.c @@ -0,0 +1,1075 @@ +/* Action code -- generated by iset.tcl */ + + ACTION(PUSH_x1) + ALSO(PUSH_x1+1) + ALSO(PUSH_x1+2) + ALSO(PUSH_x1+3) + ALSO(PUSH_x1+4) + ALSO(PUSH_x1+5) + ALSO(PUSH_x1+6) + ALSO(PUSH_x1+7) + ALSO(PUSH_x1+8) + ALSO(PUSH_x1+9) + ALSO(PUSH_x1+10) + ALSO(PUSH_x1+11) + pc = pc0 + 1; + sp--; sp[0].i = (ir-2); + NEXT; + + ACTION(PUSH_1) + pc = pc0 + 2; + sp--; sp[0].i = (get1(pc0+1)); + NEXT; + + ACTION(PUSH_2) + pc = pc0 + 3; + sp--; sp[0].i = (get2(pc0+1)); + NEXT; + + ACTION(LDKW_1) + pc = pc0 + 2; + sp--; sp[0].i = const((get1(pc0+1))).i; + NEXT; + + ACTION(LDKW_2) + pc = pc0 + 3; + sp--; sp[0].i = const((get2(pc0+1))).i; + NEXT; + + ACTION(LDKF_1) + pc = pc0 + 2; + sp--; sp[0].f = const((get1(pc0+1))).f; + NEXT; + + ACTION(LDKF_2) + pc = pc0 + 3; + sp--; sp[0].f = const((get2(pc0+1))).f; + NEXT; + + ACTION(LOCAL_x1) + pc = pc0 + 1; + sp--; sp[0].a = stkaddr(local((0))); + NEXT; + + ACTION(LOCAL_1) + pc = pc0 + 2; + sp--; sp[0].a = stkaddr(local((get1(pc0+1)))); + NEXT; + + ACTION(LOCAL_2) + pc = pc0 + 3; + sp--; sp[0].a = stkaddr(local((get2(pc0+1)))); + NEXT; + + ACTION(OFFSET) + pc = pc0 + 1; + sp[1].a = sp[1].a + sp[0].i; sp++; + NEXT; + + ACTION(INDEXS) + pc = pc0 + 1; + sp[1].a = sp[1].a + (sp[0].i<<1); sp++; + NEXT; + + ACTION(INDEXW) + pc = pc0 + 1; + sp[1].a = sp[1].a + (sp[0].i<<2); sp++; + NEXT; + + ACTION(INDEXD) + pc = pc0 + 1; + sp[1].a = sp[1].a + (sp[0].i<<3); sp++; + NEXT; + + ACTION(LOADS) + pc = pc0 + 1; + sp[0].i = load(sp[0], short); + NEXT; + + ACTION(LOADC) + pc = pc0 + 1; + sp[0].i = load(sp[0], uchar); + NEXT; + + ACTION(LOADF) + pc = pc0 + 1; + sp[0].f = load(sp[0], float); + NEXT; + + ACTION(STORES) + pc = pc0 + 1; + store(sp[1].i, sp[0], short); sp += 2; + NEXT; + + ACTION(STOREC) + pc = pc0 + 1; + store(sp[1].i, sp[0], uchar); sp += 2; + NEXT; + + ACTION(STOREF) + pc = pc0 + 1; + store(sp[1].f, sp[0], float); sp += 2; + NEXT; + + ACTION(LDLW_x1) + ALSO(LDLW_x1+1) + ALSO(LDLW_x1+2) + ALSO(LDLW_x1+3) + ALSO(LDLW_x1+4) + ALSO(LDLW_x1+5) + pc = pc0 + 1; + sp--; sp[0].i = ldl((ir*4-152), int); + NEXT; + + ACTION(LDLW_x2) + ALSO(LDLW_x2+1) + ALSO(LDLW_x2+2) + ALSO(LDLW_x2+3) + ALSO(LDLW_x2+4) + ALSO(LDLW_x2+5) + pc = pc0 + 1; + sp--; sp[0].i = ldl((ir*4-140), int); + NEXT; + + ACTION(LDLW_1) + pc = pc0 + 2; + sp--; sp[0].i = ldl((get1(pc0+1)), int); + NEXT; + + ACTION(LDLW_2) + pc = pc0 + 3; + sp--; sp[0].i = ldl((get2(pc0+1)), int); + NEXT; + + ACTION(LDLS_1) + pc = pc0 + 2; + sp--; sp[0].i = ldl((get1(pc0+1)), short); + NEXT; + + ACTION(LDLS_2) + pc = pc0 + 3; + sp--; sp[0].i = ldl((get2(pc0+1)), short); + NEXT; + + ACTION(LDLC_1) + pc = pc0 + 2; + sp--; sp[0].i = ldl((get1(pc0+1)), uchar); + NEXT; + + ACTION(LDLC_2) + pc = pc0 + 3; + sp--; sp[0].i = ldl((get2(pc0+1)), uchar); + NEXT; + + ACTION(LDLF_1) + pc = pc0 + 2; + sp--; sp[0].f = ldl((get1(pc0+1)), float); + NEXT; + + ACTION(LDLF_2) + pc = pc0 + 3; + sp--; sp[0].f = ldl((get2(pc0+1)), float); + NEXT; + + ACTION(STLW_x1) + ALSO(STLW_x1+1) + ALSO(STLW_x1+2) + ALSO(STLW_x1+3) + ALSO(STLW_x1+4) + ALSO(STLW_x1+5) + pc = pc0 + 1; + stl((ir*4-232), sp[0].i, int); sp += 1; + NEXT; + + ACTION(STLW_x2) + ALSO(STLW_x2+1) + ALSO(STLW_x2+2) + ALSO(STLW_x2+3) + ALSO(STLW_x2+4) + ALSO(STLW_x2+5) + pc = pc0 + 1; + stl((ir*4-220), sp[0].i, int); sp += 1; + NEXT; + + ACTION(STLW_1) + pc = pc0 + 2; + stl((get1(pc0+1)), sp[0].i, int); sp += 1; + NEXT; + + ACTION(STLW_2) + pc = pc0 + 3; + stl((get2(pc0+1)), sp[0].i, int); sp += 1; + NEXT; + + ACTION(STLS_1) + pc = pc0 + 2; + stl((get1(pc0+1)), sp[0].i, short); sp += 1; + NEXT; + + ACTION(STLS_2) + pc = pc0 + 3; + stl((get2(pc0+1)), sp[0].i, short); sp += 1; + NEXT; + + ACTION(STLC_1) + pc = pc0 + 2; + stl((get1(pc0+1)), sp[0].i, uchar); sp += 1; + NEXT; + + ACTION(STLC_2) + pc = pc0 + 3; + stl((get2(pc0+1)), sp[0].i, uchar); sp += 1; + NEXT; + + ACTION(STLF_1) + pc = pc0 + 2; + stl((get1(pc0+1)), sp[0].f, float); sp += 1; + NEXT; + + ACTION(STLF_2) + pc = pc0 + 3; + stl((get2(pc0+1)), sp[0].f, float); sp += 1; + NEXT; + + ACTION(LDGW_K) + pc = pc0 + 2; + sp--; sp[0].i = ldg((get1(pc0+1)), int); + NEXT; + + ACTION(LDGW_L) + pc = pc0 + 3; + sp--; sp[0].i = ldg((get2(pc0+1)), int); + NEXT; + + ACTION(LDGS_K) + pc = pc0 + 2; + sp--; sp[0].i = ldg((get1(pc0+1)), short); + NEXT; + + ACTION(LDGS_L) + pc = pc0 + 3; + sp--; sp[0].i = ldg((get2(pc0+1)), short); + NEXT; + + ACTION(LDGC_K) + pc = pc0 + 2; + sp--; sp[0].i = ldg((get1(pc0+1)), uchar); + NEXT; + + ACTION(LDGC_L) + pc = pc0 + 3; + sp--; sp[0].i = ldg((get2(pc0+1)), uchar); + NEXT; + + ACTION(LDGF_K) + pc = pc0 + 2; + sp--; sp[0].f = ldg((get1(pc0+1)), float); + NEXT; + + ACTION(LDGF_L) + pc = pc0 + 3; + sp--; sp[0].f = ldg((get2(pc0+1)), float); + NEXT; + + ACTION(STGW_K) + pc = pc0 + 2; + stg((get1(pc0+1)), sp[0].i, int); sp += 1; + NEXT; + + ACTION(STGW_L) + pc = pc0 + 3; + stg((get2(pc0+1)), sp[0].i, int); sp += 1; + NEXT; + + ACTION(STGS_K) + pc = pc0 + 2; + stg((get1(pc0+1)), sp[0].i, short); sp += 1; + NEXT; + + ACTION(STGS_L) + pc = pc0 + 3; + stg((get2(pc0+1)), sp[0].i, short); sp += 1; + NEXT; + + ACTION(STGC_K) + pc = pc0 + 2; + stg((get1(pc0+1)), sp[0].i, uchar); sp += 1; + NEXT; + + ACTION(STGC_L) + pc = pc0 + 3; + stg((get2(pc0+1)), sp[0].i, uchar); sp += 1; + NEXT; + + ACTION(STGF_K) + pc = pc0 + 2; + stg((get1(pc0+1)), sp[0].f, float); sp += 1; + NEXT; + + ACTION(STGF_L) + pc = pc0 + 3; + stg((get2(pc0+1)), sp[0].f, float); sp += 1; + NEXT; + + ACTION(LDNW_x1) + ALSO(LDNW_x1+1) + ALSO(LDNW_x1+2) + ALSO(LDNW_x1+3) + ALSO(LDNW_x1+4) + ALSO(LDNW_x1+5) + ALSO(LDNW_x1+6) + ALSO(LDNW_x1+7) + ALSO(LDNW_x1+8) + ALSO(LDNW_x1+9) + ALSO(LDNW_x1+10) + ALSO(LDNW_x1+11) + ALSO(LDNW_x1+12) + pc = pc0 + 1; + sp[0].i = ldn((ir*4-368), sp[0]); + NEXT; + + ACTION(LDNW_1) + pc = pc0 + 2; + sp[0].i = ldn((get1(pc0+1)), sp[0]); + NEXT; + + ACTION(LDNW_2) + pc = pc0 + 3; + sp[0].i = ldn((get2(pc0+1)), sp[0]); + NEXT; + + ACTION(STNW_x1) + ALSO(STNW_x1+1) + ALSO(STNW_x1+2) + ALSO(STNW_x1+3) + ALSO(STNW_x1+4) + ALSO(STNW_x1+5) + ALSO(STNW_x1+6) + ALSO(STNW_x1+7) + ALSO(STNW_x1+8) + ALSO(STNW_x1+9) + ALSO(STNW_x1+10) + ALSO(STNW_x1+11) + ALSO(STNW_x1+12) + pc = pc0 + 1; + stn((ir*4-428), sp[1].i, sp[0]); sp += 2; + NEXT; + + ACTION(STNW_1) + pc = pc0 + 2; + stn((get1(pc0+1)), sp[1].i, sp[0]); sp += 2; + NEXT; + + ACTION(STNW_2) + pc = pc0 + 3; + stn((get2(pc0+1)), sp[1].i, sp[0]); sp += 2; + NEXT; + + ACTION(LDIW) + pc = pc0 + 1; + sp[1].i = ldi(sp[1], sp[0], int); sp++; + NEXT; + + ACTION(LDIS) + pc = pc0 + 1; + sp[1].i = ldi(sp[1], sp[0], short); sp++; + NEXT; + + ACTION(LDIC) + pc = pc0 + 1; + sp[1].i = ldi(sp[1], sp[0], uchar); sp++; + NEXT; + + ACTION(LDIF) + pc = pc0 + 1; + sp[1].f = ldi(sp[1], sp[0], float); sp++; + NEXT; + + ACTION(STIW) + pc = pc0 + 1; + sti(sp[2].i, sp[1], sp[0], int); sp += 3; + NEXT; + + ACTION(STIS) + pc = pc0 + 1; + sti(sp[2].i, sp[1], sp[0], short); sp += 3; + NEXT; + + ACTION(STIC) + pc = pc0 + 1; + sti(sp[2].i, sp[1], sp[0], uchar); sp += 3; + NEXT; + + ACTION(STIF) + pc = pc0 + 1; + sti(sp[2].f, sp[1], sp[0], float); sp += 3; + NEXT; + + ACTION(LOADD) + pc = pc0 + 1; + sp--; putdbl(&sp[0], getdbl(valptr(sp[1]))); + NEXT; + + ACTION(STORED) + pc = pc0 + 1; + putdbl(valptr(sp[0]), getdbl(&sp[1])); sp += 3; + NEXT; + + ACTION(LDKD_1) + pc = pc0 + 2; + sp -= 2; putdbl(&sp[0], getdbl(&const((get1(pc0+1))))); + NEXT; + + ACTION(LDKD_2) + pc = pc0 + 3; + sp -= 2; putdbl(&sp[0], getdbl(&const((get2(pc0+1))))); + NEXT; + + ACTION(LOADQ) + pc = pc0 + 1; + sp--; putlong(&sp[0], getlong(valptr(sp[1]))); + NEXT; + + ACTION(STOREQ) + pc = pc0 + 1; + putlong(valptr(sp[0]), getlong(&sp[1])); sp += 3; + NEXT; + + ACTION(LDKQ_1) + pc = pc0 + 2; + sp -= 2; putlong(&sp[0], getlong(&const((get1(pc0+1))))); + NEXT; + + ACTION(LDKQ_2) + pc = pc0 + 3; + sp -= 2; putlong(&sp[0], getlong(&const((get2(pc0+1))))); + NEXT; + + ACTION(INCL_1) + pc = pc0 + 2; + { indir(local((get1(pc0+1))), int)++; } + NEXT; + + ACTION(DECL_1) + pc = pc0 + 2; + { indir(local((get1(pc0+1))), int)--; } + NEXT; + + ACTION(DUP) + ALSO(DUP+1) + ALSO(DUP+2) + pc = pc0 + 1; + { dup((ir-136), sp); } + NEXT; + + ACTION(SWAP) + pc = pc0 + 1; + { swap(sp); } + NEXT; + + ACTION(POP_1) + pc = pc0 + 2; + { sp += (get1(pc0+1)); } + NEXT; + + ACTION(PLUS) + pc = pc0 + 1; + sp[1].i = sp[1].i + sp[0].i; sp++; + NEXT; + + ACTION(MINUS) + pc = pc0 + 1; + sp[1].i = sp[1].i - sp[0].i; sp++; + NEXT; + + ACTION(TIMES) + pc = pc0 + 1; + sp[1].i = sp[1].i * sp[0].i; sp++; + NEXT; + + ACTION(UMINUS) + pc = pc0 + 1; + sp[0].i = - sp[0].i; + NEXT; + + ACTION(AND) + pc = pc0 + 1; + sp[1].i = sp[1].i && sp[0].i; sp++; + NEXT; + + ACTION(OR) + pc = pc0 + 1; + sp[1].i = sp[1].i || sp[0].i; sp++; + NEXT; + + ACTION(NOT) + pc = pc0 + 1; + sp[0].i = ! sp[0].i; + NEXT; + + ACTION(INC) + pc = pc0 + 1; + sp[0].i = sp[0].i + 1; + NEXT; + + ACTION(DEC) + pc = pc0 + 1; + sp[0].i = sp[0].i - 1; + NEXT; + + ACTION(BITAND) + pc = pc0 + 1; + sp[1].i = sp[1].i & sp[0].i; sp++; + NEXT; + + ACTION(BITOR) + pc = pc0 + 1; + sp[1].i = sp[1].i | sp[0].i; sp++; + NEXT; + + ACTION(BITXOR) + pc = pc0 + 1; + sp[1].i = sp[1].i ^ sp[0].i; sp++; + NEXT; + + ACTION(BITNOT) + pc = pc0 + 1; + sp[0].i = ~ sp[0].i; + NEXT; + + ACTION(LSL) + pc = pc0 + 1; + sp[1].i = sp[1].i << sp[0].i; sp++; + NEXT; + + ACTION(LSR) + pc = pc0 + 1; + sp[1].i = (unsigned) sp[1].i>>sp[0].i; sp++; + NEXT; + + ACTION(ASR) + pc = pc0 + 1; + sp[1].i = sp[1].i >> sp[0].i; sp++; + NEXT; + + ACTION(ROR) + pc = pc0 + 1; + sp[1].i = ror(sp[1].i, sp[0].i); sp++; + NEXT; + + ACTION(DIV) + pc = pc0 + 1; + int_div(sp); sp++; + NEXT; + + ACTION(MOD) + pc = pc0 + 1; + int_mod(sp); sp++; + NEXT; + + ACTION(EQ) + pc = pc0 + 1; + sp[1].i = sp[1].i == sp[0].i; sp++; + NEXT; + + ACTION(LT) + pc = pc0 + 1; + sp[1].i = sp[1].i < sp[0].i; sp++; + NEXT; + + ACTION(GT) + pc = pc0 + 1; + sp[1].i = sp[1].i > sp[0].i; sp++; + NEXT; + + ACTION(LEQ) + pc = pc0 + 1; + sp[1].i = sp[1].i <= sp[0].i; sp++; + NEXT; + + ACTION(GEQ) + pc = pc0 + 1; + sp[1].i = sp[1].i >= sp[0].i; sp++; + NEXT; + + ACTION(NEQ) + pc = pc0 + 1; + sp[1].i = sp[1].i != sp[0].i; sp++; + NEXT; + + ACTION(JEQ_S) + pc = pc0 + 2; + if (sp[1].i == sp[0].i) jump((get1(pc0+1))); sp += 2; + NEXT; + + ACTION(JEQ_R) + pc = pc0 + 3; + if (sp[1].i == sp[0].i) jump((get2(pc0+1))); sp += 2; + NEXT; + + ACTION(JLT_S) + pc = pc0 + 2; + if (sp[1].i < sp[0].i) jump((get1(pc0+1))); sp += 2; + NEXT; + + ACTION(JLT_R) + pc = pc0 + 3; + if (sp[1].i < sp[0].i) jump((get2(pc0+1))); sp += 2; + NEXT; + + ACTION(JGT_S) + pc = pc0 + 2; + if (sp[1].i > sp[0].i) jump((get1(pc0+1))); sp += 2; + NEXT; + + ACTION(JGT_R) + pc = pc0 + 3; + if (sp[1].i > sp[0].i) jump((get2(pc0+1))); sp += 2; + NEXT; + + ACTION(JLEQ_S) + pc = pc0 + 2; + if (sp[1].i <= sp[0].i) jump((get1(pc0+1))); sp += 2; + NEXT; + + ACTION(JLEQ_R) + pc = pc0 + 3; + if (sp[1].i <= sp[0].i) jump((get2(pc0+1))); sp += 2; + NEXT; + + ACTION(JGEQ_S) + pc = pc0 + 2; + if (sp[1].i >= sp[0].i) jump((get1(pc0+1))); sp += 2; + NEXT; + + ACTION(JGEQ_R) + pc = pc0 + 3; + if (sp[1].i >= sp[0].i) jump((get2(pc0+1))); sp += 2; + NEXT; + + ACTION(JNEQ_S) + pc = pc0 + 2; + if (sp[1].i != sp[0].i) jump((get1(pc0+1))); sp += 2; + NEXT; + + ACTION(JNEQ_R) + pc = pc0 + 3; + if (sp[1].i != sp[0].i) jump((get2(pc0+1))); sp += 2; + NEXT; + + ACTION(JLTZ_S) + pc = pc0 + 2; + if (sp[0].i < 0) jump((get1(pc0+1))); sp += 1; + NEXT; + + ACTION(JGTZ_S) + pc = pc0 + 2; + if (sp[0].i > 0) jump((get1(pc0+1))); sp += 1; + NEXT; + + ACTION(JLEQZ_S) + pc = pc0 + 2; + if (sp[0].i <= 0) jump((get1(pc0+1))); sp += 1; + NEXT; + + ACTION(JGEQZ_S) + pc = pc0 + 2; + if (sp[0].i >= 0) jump((get1(pc0+1))); sp += 1; + NEXT; + + ACTION(JNEQZ_S) + pc = pc0 + 2; + if (sp[0].i != 0) jump((get1(pc0+1))); sp += 1; + NEXT; + + ACTION(JNEQZ_R) + pc = pc0 + 3; + if (sp[0].i != 0) jump((get2(pc0+1))); sp += 1; + NEXT; + + ACTION(JEQZ_S) + pc = pc0 + 2; + if (sp[0].i == 0) jump((get1(pc0+1))); sp += 1; + NEXT; + + ACTION(JEQZ_R) + pc = pc0 + 3; + if (sp[0].i == 0) jump((get2(pc0+1))); sp += 1; + NEXT; + + ACTION(JUMP_S) + pc = pc0 + 2; + { jump((get1(pc0+1))); } + NEXT; + + ACTION(JUMP_R) + pc = pc0 + 3; + { jump((get2(pc0+1))); } + NEXT; + + ACTION(QPLUS) + pc = pc0 + 1; + putlong(&sp[2], getlong(&sp[2]) + getlong(&sp[0])); sp += 2; + NEXT; + + ACTION(QMINUS) + pc = pc0 + 1; + putlong(&sp[2], getlong(&sp[2]) - getlong(&sp[0])); sp += 2; + NEXT; + + ACTION(QTIMES) + pc = pc0 + 1; + putlong(&sp[2], getlong(&sp[2]) * getlong(&sp[0])); sp += 2; + NEXT; + + ACTION(QUMINUS) + pc = pc0 + 1; + putlong(&sp[0], - getlong(&sp[0])); + NEXT; + + ACTION(QDIV) + pc = pc0 + 1; + long_div(sp); sp += 2; + NEXT; + + ACTION(QMOD) + pc = pc0 + 1; + long_mod(sp); sp += 2; + NEXT; + + ACTION(QCMP) + pc = pc0 + 1; + sp[3].i = lcmp(getlong(&sp[2]), getlong(&sp[0])); sp += 3; + NEXT; + + ACTION(JCASE_1) + pc = pc0 + 2; + if ((unsigned) sp[0].i < (unsigned) (get1(pc0+1))) + pc0 = pc + 2*sp[0].i, jump(get2(pc0)); else pc += 2*(get1(pc0+1)); sp += 1; + NEXT; + + ACTION(JRANGE_S) + pc = pc0 + 2; + if (sp[2].i >= sp[1].i && sp[2].i <= sp[0].i) jump((get1(pc0+1))); sp += 3; + NEXT; + + ACTION(JRANGE_R) + pc = pc0 + 3; + if (sp[2].i >= sp[1].i && sp[2].i <= sp[0].i) jump((get2(pc0+1))); sp += 3; + NEXT; + + ACTION(TESTGEQ_S) + pc = pc0 + 2; + if (sp[1].i >= sp[0].i) jump((get1(pc0+1))); sp++; + NEXT; + + ACTION(TESTGEQ_R) + pc = pc0 + 3; + if (sp[1].i >= sp[0].i) jump((get2(pc0+1))); sp++; + NEXT; + + ACTION(FPLUS) + pc = pc0 + 1; + sp[1].f = sp[1].f + sp[0].f; sp++; + NEXT; + + ACTION(FMINUS) + pc = pc0 + 1; + sp[1].f = sp[1].f - sp[0].f; sp++; + NEXT; + + ACTION(FTIMES) + pc = pc0 + 1; + sp[1].f = sp[1].f * sp[0].f; sp++; + NEXT; + + ACTION(FDIV) + pc = pc0 + 1; + sp[1].f = sp[1].f / sp[0].f; sp++; + NEXT; + + ACTION(FUMINUS) + pc = pc0 + 1; + sp[0].f = - sp[0].f; + NEXT; + + ACTION(FCMPL) + pc = pc0 + 1; + sp[1].i = fcmpl(sp[1].f, sp[0].f); sp++; + NEXT; + + ACTION(FCMPG) + pc = pc0 + 1; + sp[1].i = fcmpg(sp[1].f, sp[0].f); sp++; + NEXT; + + ACTION(DPLUS) + pc = pc0 + 1; + putdbl(&sp[2], getdbl(&sp[2]) + getdbl(&sp[0])); sp += 2; + NEXT; + + ACTION(DMINUS) + pc = pc0 + 1; + putdbl(&sp[2], getdbl(&sp[2]) - getdbl(&sp[0])); sp += 2; + NEXT; + + ACTION(DTIMES) + pc = pc0 + 1; + putdbl(&sp[2], getdbl(&sp[2]) * getdbl(&sp[0])); sp += 2; + NEXT; + + ACTION(DDIV) + pc = pc0 + 1; + putdbl(&sp[2], getdbl(&sp[2]) / getdbl(&sp[0])); sp += 2; + NEXT; + + ACTION(DUMINUS) + pc = pc0 + 1; + putdbl(&sp[0], - getdbl(&sp[0])); + NEXT; + + ACTION(DCMPL) + pc = pc0 + 1; + sp[3].i = fcmpl(getdbl(&sp[2]), getdbl(&sp[0])); sp += 3; + NEXT; + + ACTION(DCMPG) + pc = pc0 + 1; + sp[3].i = fcmpg(getdbl(&sp[2]), getdbl(&sp[0])); sp += 3; + NEXT; + + ACTION(CONVNF) + pc = pc0 + 1; + sp[0].f = flo_conv(sp[0].i); + NEXT; + + ACTION(CONVND) + pc = pc0 + 1; + sp--; putdbl(&sp[0], flo_conv(sp[1].i)); + NEXT; + + ACTION(CONVFN) + pc = pc0 + 1; + sp[0].i = (int) sp[0].f; + NEXT; + + ACTION(CONVDN) + pc = pc0 + 1; + sp[1].i = (int) getdbl(&sp[0]); sp++; + NEXT; + + ACTION(CONVFD) + pc = pc0 + 1; + sp--; putdbl(&sp[0], sp[1].f); + NEXT; + + ACTION(CONVDF) + pc = pc0 + 1; + sp[1].f = (float) getdbl(&sp[0]); sp++; + NEXT; + + ACTION(CONVNC) + pc = pc0 + 1; + sp[0].i = sp[0].i & 0xff; + NEXT; + + ACTION(CONVNS) + pc = pc0 + 1; + sp[0].i = (short) sp[0].i; + NEXT; + + ACTION(CONVNQ) + pc = pc0 + 1; + sp--; putlong(&sp[0], sp[1].i); + NEXT; + + ACTION(CONVQN) + pc = pc0 + 1; + sp[1].i = (int) getlong(&sp[0]); sp++; + NEXT; + + ACTION(CONVQD) + pc = pc0 + 1; + putdbl(&sp[0], flo_convq(getlong(&sp[0]))); + NEXT; + + ACTION(BOUND_2) + pc = pc0 + 3; + if ((unsigned) sp[1].i >= (unsigned) sp[0].i) error(E_BOUND, (get2(pc0+1))); sp++; + NEXT; + + ACTION(NCHECK_2) + pc = pc0 + 3; + if (pointer(sp[0]) == NULL) error(E_NULL, (get2(pc0+1))); + NEXT; + + ACTION(GCHECK_2) + pc = pc0 + 3; + if (valptr(sp[0]) != NULL) error(E_GLOB, (get2(pc0+1))); sp += 1; + NEXT; + + ACTION(ZCHECK_2) + pc = pc0 + 3; + if (sp[0].i == 0) error(E_DIV, (get2(pc0+1))); + NEXT; + + ACTION(FZCHECK_2) + pc = pc0 + 3; + if (sp[0].f == 0.0) error(E_FDIV, (get2(pc0+1))); + NEXT; + + ACTION(DZCHECK_2) + pc = pc0 + 3; + if (get_double(&sp[0]) == 0.0) error(E_FDIV, (get2(pc0+1))); + NEXT; + + ACTION(QZCHECK_2) + pc = pc0 + 3; + if (get_long(&sp[0]) == 0) error(E_DIV, (get2(pc0+1))); + NEXT; + + ACTION(ERROR_12) + pc = pc0 + 4; + { error((get1(pc0+1)), (get2(pc0+2))); } + NEXT; + + ACTION(ALIGNC) + pc = pc0 + 1; + sp[0].i = alignx(sp[0].i, 8); + NEXT; + + ACTION(ALIGNS) + pc = pc0 + 1; + sp[0].i = alignx(sp[0].i, 16); + NEXT; + + ACTION(FIXCOPY) + pc = pc0 + 1; + prof_charge(sp[0].i/4); + memcpy(pointer(sp[2]), pointer(sp[1]), sp[0].i); sp += 3; + NEXT; + + ACTION(FLEXCOPY) + pc = pc0 + 1; + { value *d = pointer(sp[1]); int size = sp[0].i; + int sizew = (size+3)/4; prof_charge(sizew); + sp -= sizew - 2; + if ((uchar *) sp < stack + SLIMIT) error(E_STACK, 0); + memcpy(sp, pointer(d[0]), size); + d[0].a = stkaddr(sp); } + NEXT; + + ACTION(STATLINK) + pc = pc0 + 1; + { sp[1-HEAD+SL].a = sp[0].a; sp++; } + NEXT; + + ACTION(SAVELINK) + pc = pc0 + 1; + { } + NEXT; + + ACTION(JPROC) + pc = pc0 + 1; + { value *p = valptr(sp[0]); + sp -= HEAD-1; + sp[BP].a = stkaddr(bp); + sp[PC].a = codeaddr(pc); + + if (interpreted(p)) { + cp = p; pc = codeptr(cp[CP_CODE].a); + goto enter; + } + +#ifdef PROFILE + /* Calling a native-code routine */ + prof_enter(dsegaddr(p), ticks, PROF_PRIM); + ticks = 0; +#endif +#ifdef OBXDEB + prim_bp = sp; +#endif + rp = primcall(p, sp); +#ifdef OBXDEB + prim_bp = NULL; +#endif + } + NEXT; + + ACTION(SLIDE_1) + pc = pc0 + 2; + { slide((get1(pc0+1))); } + NEXT; + + ACTION(SLIDEW_1) + pc = pc0 + 2; + { slide((get1(pc0+1))); sp--; sp[0].i = (*rp).i; } + NEXT; + + ACTION(SLIDEF_1) + pc = pc0 + 2; + { slide((get1(pc0+1))); sp--; sp[0].f = (*rp).f; } + NEXT; + + ACTION(SLIDED_1) + pc = pc0 + 2; + { slide((get1(pc0+1))); sp -= 2; putdbl(&sp[0], getdbl(rp)); } + NEXT; + + ACTION(SLIDEQ_1) + pc = pc0 + 2; + { slide((get1(pc0+1))); sp -= 2; putlong(&sp[0], getlong(rp)); } + NEXT; + + ACTION(RETURN) + pc = pc0 + 1; + { if (bp == base) { + level--; +#ifdef PROFILE + prof_exit(0, ticks); +#endif + return sp; + } + + rp = sp; sp = bp; pc = codeptr(sp[PC].a); + bp = valptr(sp[BP]); cp = valptr(bp[CP]); + do_find_proc; +#ifdef PROFILE + prof_exit(dsegaddr(cp), ticks); + ticks = 0; +#endif + cond_break(); } + NEXT; + + ACTION(LNUM_2) + pc = pc0 + 3; + { +#ifdef PROFILE + if (lflag) { + static module m = NULL; /* Cache most recent module */ + ticks--; + if (m == NULL || dsegaddr(cp) < m->m_addr + || dsegaddr(cp) >= m->m_addr + m->m_length) { + m = find_module(dsegaddr(cp)); + } + m->m_lcount[(get2(pc0+1))-1]++; + } +#endif +#ifdef OBXDEB + if (intflag) + debug_break(cp, bp, pc0, "interrupt"); + else if (one_shot) + debug_break(cp, bp, pc0, "line"); +#endif + } + NEXT; + + ACTION(BREAK_2) + pc = pc0 + 3; + { +#ifdef OBXDEB + debug_break(cp, bp, pc0, "break"); +#endif + } + NEXT; + |