aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--miscutils/bc.c168
1 files changed, 84 insertions, 84 deletions
diff --git a/miscutils/bc.c b/miscutils/bc.c
index ee3061621..62bdd9a44 100644
--- a/miscutils/bc.c
+++ b/miscutils/bc.c
@@ -354,21 +354,21 @@ typedef struct BcFunc {
354} BcFunc; 354} BcFunc;
355 355
356typedef enum BcResultType { 356typedef enum BcResultType {
357 BC_RESULT_TEMP, 357 XC_RESULT_TEMP,
358 358
359 BC_RESULT_VAR, 359 XC_RESULT_VAR,
360 BC_RESULT_ARRAY_ELEM, 360 XC_RESULT_ARRAY_ELEM,
361 BC_RESULT_ARRAY, 361 XC_RESULT_ARRAY,
362 362
363 BC_RESULT_STR, 363 XC_RESULT_STR,
364 364
365 //code uses "inst - XC_INST_IBASE + BC_RESULT_IBASE" construct, 365 //code uses "inst - XC_INST_IBASE + XC_RESULT_IBASE" construct,
366 BC_RESULT_IBASE, // relative order should match for: XC_INST_IBASE 366 XC_RESULT_IBASE, // relative order should match for: XC_INST_IBASE
367 BC_RESULT_OBASE, // relative order should match for: XC_INST_OBASE 367 XC_RESULT_OBASE, // relative order should match for: XC_INST_OBASE
368 BC_RESULT_SCALE, // relative order should match for: XC_INST_SCALE 368 XC_RESULT_SCALE, // relative order should match for: XC_INST_SCALE
369 IF_BC(BC_RESULT_LAST,) // relative order should match for: BC_INST_LAST 369 IF_BC(BC_RESULT_LAST,) // relative order should match for: BC_INST_LAST
370 BC_RESULT_CONSTANT, 370 XC_RESULT_CONSTANT,
371 BC_RESULT_ONE, 371 IF_BC(BC_RESULT_ONE,)
372} BcResultType; 372} BcResultType;
373 373
374typedef union BcResultData { 374typedef union BcResultData {
@@ -780,7 +780,7 @@ typedef struct BcProgram {
780 780
781#define BC_PROG_STR(n) (!(n)->num && !(n)->cap) 781#define BC_PROG_STR(n) (!(n)->num && !(n)->cap)
782#define BC_PROG_NUM(r, n) \ 782#define BC_PROG_NUM(r, n) \
783 ((r)->t != BC_RESULT_ARRAY && (r)->t != BC_RESULT_STR && !BC_PROG_STR(n)) 783 ((r)->t != XC_RESULT_ARRAY && (r)->t != XC_RESULT_STR && !BC_PROG_STR(n))
784 784
785#define BC_FLAG_W (1 << 0) 785#define BC_FLAG_W (1 << 0)
786#define BC_FLAG_V (1 << 1) 786#define BC_FLAG_V (1 << 1)
@@ -2451,22 +2451,22 @@ static void dc_result_copy(BcResult *d, BcResult *src)
2451 d->t = src->t; 2451 d->t = src->t;
2452 2452
2453 switch (d->t) { 2453 switch (d->t) {
2454 case BC_RESULT_TEMP: 2454 case XC_RESULT_TEMP:
2455 case BC_RESULT_IBASE: 2455 case XC_RESULT_IBASE:
2456 case BC_RESULT_SCALE: 2456 case XC_RESULT_SCALE:
2457 case BC_RESULT_OBASE: 2457 case XC_RESULT_OBASE:
2458 bc_num_init(&d->d.n, src->d.n.len); 2458 bc_num_init(&d->d.n, src->d.n.len);
2459 bc_num_copy(&d->d.n, &src->d.n); 2459 bc_num_copy(&d->d.n, &src->d.n);
2460 break; 2460 break;
2461 case BC_RESULT_VAR: 2461 case XC_RESULT_VAR:
2462 case BC_RESULT_ARRAY: 2462 case XC_RESULT_ARRAY:
2463 case BC_RESULT_ARRAY_ELEM: 2463 case XC_RESULT_ARRAY_ELEM:
2464 d->d.id.name = xstrdup(src->d.id.name); 2464 d->d.id.name = xstrdup(src->d.id.name);
2465 break; 2465 break;
2466 case BC_RESULT_CONSTANT: 2466 case XC_RESULT_CONSTANT:
2467 IF_BC(case BC_RESULT_LAST:) 2467 IF_BC(case BC_RESULT_LAST:)
2468 case BC_RESULT_ONE: 2468 IF_BC(case BC_RESULT_ONE:)
2469 case BC_RESULT_STR: 2469 case XC_RESULT_STR:
2470 memcpy(&d->d.n, &src->d.n, sizeof(BcNum)); 2470 memcpy(&d->d.n, &src->d.n, sizeof(BcNum));
2471 break; 2471 break;
2472 } 2472 }
@@ -2478,15 +2478,15 @@ static FAST_FUNC void bc_result_free(void *result)
2478 BcResult *r = (BcResult *) result; 2478 BcResult *r = (BcResult *) result;
2479 2479
2480 switch (r->t) { 2480 switch (r->t) {
2481 case BC_RESULT_TEMP: 2481 case XC_RESULT_TEMP:
2482 case BC_RESULT_IBASE: 2482 case XC_RESULT_IBASE:
2483 case BC_RESULT_SCALE: 2483 case XC_RESULT_SCALE:
2484 case BC_RESULT_OBASE: 2484 case XC_RESULT_OBASE:
2485 bc_num_free(&r->d.n); 2485 bc_num_free(&r->d.n);
2486 break; 2486 break;
2487 case BC_RESULT_VAR: 2487 case XC_RESULT_VAR:
2488 case BC_RESULT_ARRAY: 2488 case XC_RESULT_ARRAY:
2489 case BC_RESULT_ARRAY_ELEM: 2489 case XC_RESULT_ARRAY_ELEM:
2490 free(r->d.id.name); 2490 free(r->d.id.name);
2491 break; 2491 break;
2492 default: 2492 default:
@@ -5086,14 +5086,14 @@ static BcVec* bc_program_search(char *id, bool var)
5086static BC_STATUS zbc_program_num(BcResult *r, BcNum **num, bool hex) 5086static BC_STATUS zbc_program_num(BcResult *r, BcNum **num, bool hex)
5087{ 5087{
5088 switch (r->t) { 5088 switch (r->t) {
5089 case BC_RESULT_STR: 5089 case XC_RESULT_STR:
5090 case BC_RESULT_TEMP: 5090 case XC_RESULT_TEMP:
5091 case BC_RESULT_IBASE: 5091 case XC_RESULT_IBASE:
5092 case BC_RESULT_SCALE: 5092 case XC_RESULT_SCALE:
5093 case BC_RESULT_OBASE: 5093 case XC_RESULT_OBASE:
5094 *num = &r->d.n; 5094 *num = &r->d.n;
5095 break; 5095 break;
5096 case BC_RESULT_CONSTANT: { 5096 case XC_RESULT_CONSTANT: {
5097 BcStatus s; 5097 BcStatus s;
5098 char *str; 5098 char *str;
5099 unsigned base_t; 5099 unsigned base_t;
@@ -5112,17 +5112,17 @@ static BC_STATUS zbc_program_num(BcResult *r, BcNum **num, bool hex)
5112 RETURN_STATUS(s); 5112 RETURN_STATUS(s);
5113 } 5113 }
5114 *num = &r->d.n; 5114 *num = &r->d.n;
5115 r->t = BC_RESULT_TEMP; 5115 r->t = XC_RESULT_TEMP;
5116 break; 5116 break;
5117 } 5117 }
5118 case BC_RESULT_VAR: 5118 case XC_RESULT_VAR:
5119 case BC_RESULT_ARRAY: 5119 case XC_RESULT_ARRAY:
5120 case BC_RESULT_ARRAY_ELEM: { 5120 case XC_RESULT_ARRAY_ELEM: {
5121 BcVec *v; 5121 BcVec *v;
5122 5122
5123 v = bc_program_search(r->d.id.name, r->t == BC_RESULT_VAR); 5123 v = bc_program_search(r->d.id.name, r->t == XC_RESULT_VAR);
5124 5124
5125 if (r->t == BC_RESULT_ARRAY_ELEM) { 5125 if (r->t == XC_RESULT_ARRAY_ELEM) {
5126 v = bc_vec_top(v); 5126 v = bc_vec_top(v);
5127 if (v->len <= r->d.id.idx) bc_array_expand(v, r->d.id.idx + 1); 5127 if (v->len <= r->d.id.idx) bc_array_expand(v, r->d.id.idx + 1);
5128 *num = bc_vec_item(v, r->d.id.idx); 5128 *num = bc_vec_item(v, r->d.id.idx);
@@ -5164,7 +5164,7 @@ static BC_STATUS zbc_program_binOpPrep(BcResult **l, BcNum **ln,
5164 5164
5165 lt = (*l)->t; 5165 lt = (*l)->t;
5166 rt = (*r)->t; 5166 rt = (*r)->t;
5167 hex = assign && (lt == BC_RESULT_IBASE || lt == BC_RESULT_OBASE); 5167 hex = assign && (lt == XC_RESULT_IBASE || lt == XC_RESULT_OBASE);
5168 5168
5169 s = zbc_program_num(*l, ln, false); 5169 s = zbc_program_num(*l, ln, false);
5170 if (s) RETURN_STATUS(s); 5170 if (s) RETURN_STATUS(s);
@@ -5173,12 +5173,12 @@ static BC_STATUS zbc_program_binOpPrep(BcResult **l, BcNum **ln,
5173 5173
5174 // We run this again under these conditions in case any vector has been 5174 // We run this again under these conditions in case any vector has been
5175 // reallocated out from under the BcNums or arrays we had. 5175 // reallocated out from under the BcNums or arrays we had.
5176 if (lt == rt && (lt == BC_RESULT_VAR || lt == BC_RESULT_ARRAY_ELEM)) { 5176 if (lt == rt && (lt == XC_RESULT_VAR || lt == XC_RESULT_ARRAY_ELEM)) {
5177 s = zbc_program_num(*l, ln, false); 5177 s = zbc_program_num(*l, ln, false);
5178 if (s) RETURN_STATUS(s); 5178 if (s) RETURN_STATUS(s);
5179 } 5179 }
5180 5180
5181 if (!BC_PROG_NUM((*l), (*ln)) && (!assign || (*l)->t != BC_RESULT_VAR)) 5181 if (!BC_PROG_NUM((*l), (*ln)) && (!assign || (*l)->t != XC_RESULT_VAR))
5182 RETURN_STATUS(bc_error_variable_is_wrong_type()); 5182 RETURN_STATUS(bc_error_variable_is_wrong_type());
5183 if (!assign && !BC_PROG_NUM((*r), (*ln))) 5183 if (!assign && !BC_PROG_NUM((*r), (*ln)))
5184 RETURN_STATUS(bc_error_variable_is_wrong_type()); 5184 RETURN_STATUS(bc_error_variable_is_wrong_type());
@@ -5189,7 +5189,7 @@ static BC_STATUS zbc_program_binOpPrep(BcResult **l, BcNum **ln,
5189 5189
5190static void bc_program_binOpRetire(BcResult *r) 5190static void bc_program_binOpRetire(BcResult *r)
5191{ 5191{
5192 r->t = BC_RESULT_TEMP; 5192 r->t = XC_RESULT_TEMP;
5193 bc_vec_pop(&G.prog.results); 5193 bc_vec_pop(&G.prog.results);
5194 bc_result_pop_and_push(r); 5194 bc_result_pop_and_push(r);
5195} 5195}
@@ -5599,7 +5599,7 @@ static BC_STATUS zbc_program_print(char inst, size_t idx)
5599 } else { 5599 } else {
5600 char *str; 5600 char *str;
5601 5601
5602 idx = (r->t == BC_RESULT_STR) ? r->d.id.idx : num->rdx; 5602 idx = (r->t == XC_RESULT_STR) ? r->d.id.idx : num->rdx;
5603 str = *bc_program_str(idx); 5603 str = *bc_program_str(idx);
5604 5604
5605 if (inst == XC_INST_PRINT_STR) { 5605 if (inst == XC_INST_PRINT_STR) {
@@ -5635,7 +5635,7 @@ static BC_STATUS zbc_program_negate(void)
5635 bc_num_copy(&res.d.n, num); 5635 bc_num_copy(&res.d.n, num);
5636 if (res.d.n.len) res.d.n.neg = !res.d.n.neg; 5636 if (res.d.n.len) res.d.n.neg = !res.d.n.neg;
5637 5637
5638 bc_program_retire(&res, BC_RESULT_TEMP); 5638 bc_program_retire(&res, XC_RESULT_TEMP);
5639 5639
5640 RETURN_STATUS(s); 5640 RETURN_STATUS(s);
5641} 5641}
@@ -5698,7 +5698,7 @@ static BC_STATUS zdc_program_assignStr(BcResult *r, BcVec *v, bool push)
5698 5698
5699 memset(&n2, 0, sizeof(BcNum)); 5699 memset(&n2, 0, sizeof(BcNum));
5700 n2.rdx = res.d.id.idx = r->d.id.idx; 5700 n2.rdx = res.d.id.idx = r->d.id.idx;
5701 res.t = BC_RESULT_STR; 5701 res.t = XC_RESULT_STR;
5702 5702
5703 if (!push) { 5703 if (!push) {
5704 if (!STACK_HAS_MORE_THAN(&G.prog.results, 1)) 5704 if (!STACK_HAS_MORE_THAN(&G.prog.results, 1))
@@ -5726,14 +5726,14 @@ static BC_STATUS zbc_program_copyToVar(char *name, bool var)
5726 RETURN_STATUS(bc_error_stack_has_too_few_elements()); 5726 RETURN_STATUS(bc_error_stack_has_too_few_elements());
5727 5727
5728 ptr = bc_vec_top(&G.prog.results); 5728 ptr = bc_vec_top(&G.prog.results);
5729 if ((ptr->t == BC_RESULT_ARRAY) != !var) 5729 if ((ptr->t == XC_RESULT_ARRAY) != !var)
5730 RETURN_STATUS(bc_error_variable_is_wrong_type()); 5730 RETURN_STATUS(bc_error_variable_is_wrong_type());
5731 v = bc_program_search(name, var); 5731 v = bc_program_search(name, var);
5732 5732
5733#if ENABLE_DC 5733#if ENABLE_DC
5734 if (ptr->t == BC_RESULT_STR && !var) 5734 if (ptr->t == XC_RESULT_STR && !var)
5735 RETURN_STATUS(bc_error_variable_is_wrong_type()); 5735 RETURN_STATUS(bc_error_variable_is_wrong_type());
5736 if (ptr->t == BC_RESULT_STR) 5736 if (ptr->t == XC_RESULT_STR)
5737 RETURN_STATUS(zdc_program_assignStr(ptr, v, true)); 5737 RETURN_STATUS(zdc_program_assignStr(ptr, v, true));
5738#endif 5738#endif
5739 5739
@@ -5769,14 +5769,14 @@ static BC_STATUS zbc_program_assign(char inst)
5769 s = zbc_program_binOpPrep(&left, &l, &right, &r, assign); 5769 s = zbc_program_binOpPrep(&left, &l, &right, &r, assign);
5770 if (s) RETURN_STATUS(s); 5770 if (s) RETURN_STATUS(s);
5771 5771
5772 ib = left->t == BC_RESULT_IBASE; 5772 ib = left->t == XC_RESULT_IBASE;
5773 sc = left->t == BC_RESULT_SCALE; 5773 sc = left->t == XC_RESULT_SCALE;
5774 5774
5775#if ENABLE_DC 5775#if ENABLE_DC
5776 if (right->t == BC_RESULT_STR) { 5776 if (right->t == XC_RESULT_STR) {
5777 BcVec *v; 5777 BcVec *v;
5778 5778
5779 if (left->t != BC_RESULT_VAR) 5779 if (left->t != XC_RESULT_VAR)
5780 RETURN_STATUS(bc_error_variable_is_wrong_type()); 5780 RETURN_STATUS(bc_error_variable_is_wrong_type());
5781 v = bc_program_search(left->d.id.name, true); 5781 v = bc_program_search(left->d.id.name, true);
5782 5782
@@ -5784,7 +5784,7 @@ static BC_STATUS zbc_program_assign(char inst)
5784 } 5784 }
5785#endif 5785#endif
5786 5786
5787 if (left->t == BC_RESULT_CONSTANT || left->t == BC_RESULT_TEMP) 5787 if (left->t == XC_RESULT_CONSTANT || left->t == XC_RESULT_TEMP)
5788 RETURN_STATUS(bc_error("bad assignment:" 5788 RETURN_STATUS(bc_error("bad assignment:"
5789 " left side must be variable" 5789 " left side must be variable"
5790 " or array element" 5790 " or array element"
@@ -5805,11 +5805,11 @@ static BC_STATUS zbc_program_assign(char inst)
5805 bc_num_copy(l, r); 5805 bc_num_copy(l, r);
5806#endif 5806#endif
5807 5807
5808 if (ib || sc || left->t == BC_RESULT_OBASE) { 5808 if (ib || sc || left->t == XC_RESULT_OBASE) {
5809 static const char *const msg[] = { 5809 static const char *const msg[] = {
5810 "bad ibase; must be [2,16]", //BC_RESULT_IBASE 5810 "bad ibase; must be [2,16]", //XC_RESULT_IBASE
5811 "bad obase; must be [2,"BC_MAX_OBASE_STR"]", //BC_RESULT_OBASE 5811 "bad obase; must be [2,"BC_MAX_OBASE_STR"]", //XC_RESULT_OBASE
5812 "bad scale; must be [0,"BC_MAX_SCALE_STR"]", //BC_RESULT_SCALE 5812 "bad scale; must be [0,"BC_MAX_SCALE_STR"]", //XC_RESULT_SCALE
5813 }; 5813 };
5814 size_t *ptr; 5814 size_t *ptr;
5815 size_t max; 5815 size_t max;
@@ -5817,7 +5817,7 @@ static BC_STATUS zbc_program_assign(char inst)
5817 5817
5818 s = zbc_num_ulong(l, &val); 5818 s = zbc_num_ulong(l, &val);
5819 if (s) RETURN_STATUS(s); 5819 if (s) RETURN_STATUS(s);
5820 s = left->t - BC_RESULT_IBASE; 5820 s = left->t - XC_RESULT_IBASE;
5821 if (sc) { 5821 if (sc) {
5822 max = BC_MAX_SCALE; 5822 max = BC_MAX_SCALE;
5823 ptr = &G.prog.scale; 5823 ptr = &G.prog.scale;
@@ -5854,7 +5854,7 @@ static BC_STATUS bc_program_pushVar(char *code, size_t *bgn,
5854 BcResult r; 5854 BcResult r;
5855 char *name = bc_program_name(code, bgn); 5855 char *name = bc_program_name(code, bgn);
5856 5856
5857 r.t = BC_RESULT_VAR; 5857 r.t = XC_RESULT_VAR;
5858 r.d.id.name = name; 5858 r.d.id.name = name;
5859 5859
5860#if ENABLE_DC 5860#if ENABLE_DC
@@ -5868,11 +5868,11 @@ static BC_STATUS bc_program_pushVar(char *code, size_t *bgn,
5868 } 5868 }
5869 5869
5870 if (!BC_PROG_STR(num)) { 5870 if (!BC_PROG_STR(num)) {
5871 r.t = BC_RESULT_TEMP; 5871 r.t = XC_RESULT_TEMP;
5872 bc_num_init_DEF_SIZE(&r.d.n); 5872 bc_num_init_DEF_SIZE(&r.d.n);
5873 bc_num_copy(&r.d.n, num); 5873 bc_num_copy(&r.d.n, num);
5874 } else { 5874 } else {
5875 r.t = BC_RESULT_STR; 5875 r.t = XC_RESULT_STR;
5876 r.d.id.idx = num->rdx; 5876 r.d.id.idx = num->rdx;
5877 } 5877 }
5878 5878
@@ -5895,7 +5895,7 @@ static BC_STATUS zbc_program_pushArray(char *code, size_t *bgn, char inst)
5895 r.d.id.name = bc_program_name(code, bgn); 5895 r.d.id.name = bc_program_name(code, bgn);
5896 5896
5897 if (inst == XC_INST_ARRAY) { 5897 if (inst == XC_INST_ARRAY) {
5898 r.t = BC_RESULT_ARRAY; 5898 r.t = XC_RESULT_ARRAY;
5899 bc_vec_push(&G.prog.results, &r); 5899 bc_vec_push(&G.prog.results, &r);
5900 } else { 5900 } else {
5901 BcResult *operand; 5901 BcResult *operand;
@@ -5912,7 +5912,7 @@ static BC_STATUS zbc_program_pushArray(char *code, size_t *bgn, char inst)
5912 } 5912 }
5913 5913
5914 r.d.id.idx = (size_t) temp; 5914 r.d.id.idx = (size_t) temp;
5915 bc_program_retire(&r, BC_RESULT_ARRAY_ELEM); 5915 bc_program_retire(&r, XC_RESULT_ARRAY_ELEM);
5916 } 5916 }
5917 err: 5917 err:
5918 if (s) free(r.d.id.name); 5918 if (s) free(r.d.id.name);
@@ -5932,7 +5932,7 @@ static BC_STATUS zbc_program_incdec(char inst)
5932 if (s) RETURN_STATUS(s); 5932 if (s) RETURN_STATUS(s);
5933 5933
5934 if (inst == BC_INST_INC_POST || inst == BC_INST_DEC_POST) { 5934 if (inst == BC_INST_INC_POST || inst == BC_INST_DEC_POST) {
5935 copy.t = BC_RESULT_TEMP; 5935 copy.t = XC_RESULT_TEMP;
5936 bc_num_init(&copy.d.n, num->len); 5936 bc_num_init(&copy.d.n, num->len);
5937 bc_num_copy(&copy.d.n, num); 5937 bc_num_copy(&copy.d.n, num);
5938 } 5938 }
@@ -5981,7 +5981,7 @@ static BC_STATUS zbc_program_call(char *code, size_t *idx)
5981 a = bc_vec_item(&func->autos, nparams - 1 - i); 5981 a = bc_vec_item(&func->autos, nparams - 1 - i);
5982 arg = bc_vec_top(&G.prog.results); 5982 arg = bc_vec_top(&G.prog.results);
5983 5983
5984 if ((!a->idx) != (arg->t == BC_RESULT_ARRAY) || arg->t == BC_RESULT_STR) 5984 if ((!a->idx) != (arg->t == XC_RESULT_ARRAY) || arg->t == XC_RESULT_STR)
5985 RETURN_STATUS(bc_error_variable_is_wrong_type()); 5985 RETURN_STATUS(bc_error_variable_is_wrong_type());
5986 5986
5987 s = zbc_program_copyToVar(a->name, a->idx); 5987 s = zbc_program_copyToVar(a->name, a->idx);
@@ -6022,7 +6022,7 @@ static BC_STATUS zbc_program_return(char inst)
6022 RETURN_STATUS(bc_error_stack_has_too_few_elements()); 6022 RETURN_STATUS(bc_error_stack_has_too_few_elements());
6023 6023
6024 f = bc_program_func(ip->func); 6024 f = bc_program_func(ip->func);
6025 res.t = BC_RESULT_TEMP; 6025 res.t = XC_RESULT_TEMP;
6026 6026
6027 if (inst == XC_INST_RET) { 6027 if (inst == XC_INST_RET) {
6028 BcStatus s; 6028 BcStatus s;
@@ -6098,14 +6098,14 @@ static BC_STATUS zbc_program_builtin(char inst)
6098 if (inst == XC_INST_SQRT) 6098 if (inst == XC_INST_SQRT)
6099 s = zbc_num_sqrt(num, &res.d.n, G.prog.scale); 6099 s = zbc_num_sqrt(num, &res.d.n, G.prog.scale);
6100#if ENABLE_BC 6100#if ENABLE_BC
6101 else if (len != 0 && opnd->t == BC_RESULT_ARRAY) { 6101 else if (len != 0 && opnd->t == XC_RESULT_ARRAY) {
6102 bc_num_ulong2num(&res.d.n, (unsigned long) ((BcVec *) num)->len); 6102 bc_num_ulong2num(&res.d.n, (unsigned long) ((BcVec *) num)->len);
6103 } 6103 }
6104#endif 6104#endif
6105#if ENABLE_DC 6105#if ENABLE_DC
6106 else if (len != 0 && !BC_PROG_NUM(opnd, num)) { 6106 else if (len != 0 && !BC_PROG_NUM(opnd, num)) {
6107 char **str; 6107 char **str;
6108 size_t idx = opnd->t == BC_RESULT_STR ? opnd->d.id.idx : num->rdx; 6108 size_t idx = opnd->t == XC_RESULT_STR ? opnd->d.id.idx : num->rdx;
6109 6109
6110 str = bc_program_str(idx); 6110 str = bc_program_str(idx);
6111 bc_num_ulong2num(&res.d.n, strlen(*str)); 6111 bc_num_ulong2num(&res.d.n, strlen(*str));
@@ -6115,7 +6115,7 @@ static BC_STATUS zbc_program_builtin(char inst)
6115 bc_num_ulong2num(&res.d.n, len ? bc_program_len(num) : bc_program_scale(num)); 6115 bc_num_ulong2num(&res.d.n, len ? bc_program_len(num) : bc_program_scale(num));
6116 } 6116 }
6117 6117
6118 bc_program_retire(&res, BC_RESULT_TEMP); 6118 bc_program_retire(&res, XC_RESULT_TEMP);
6119 6119
6120 RETURN_STATUS(s); 6120 RETURN_STATUS(s);
6121} 6121}
@@ -6138,7 +6138,7 @@ static BC_STATUS zdc_program_divmod(void)
6138 if (s) goto err; 6138 if (s) goto err;
6139 6139
6140 bc_program_binOpRetire(&res2); 6140 bc_program_binOpRetire(&res2);
6141 res.t = BC_RESULT_TEMP; 6141 res.t = XC_RESULT_TEMP;
6142 bc_vec_push(&G.prog.results, &res); 6142 bc_vec_push(&G.prog.results, &res);
6143 6143
6144 RETURN_STATUS(s); 6144 RETURN_STATUS(s);
@@ -6167,7 +6167,7 @@ static BC_STATUS zdc_program_modexp(void)
6167 RETURN_STATUS(bc_error_variable_is_wrong_type()); 6167 RETURN_STATUS(bc_error_variable_is_wrong_type());
6168 6168
6169 // Make sure that the values have their pointers updated, if necessary. 6169 // Make sure that the values have their pointers updated, if necessary.
6170 if (r1->t == BC_RESULT_VAR || r1->t == BC_RESULT_ARRAY_ELEM) { 6170 if (r1->t == XC_RESULT_VAR || r1->t == XC_RESULT_ARRAY_ELEM) {
6171 if (r1->t == r2->t) { 6171 if (r1->t == r2->t) {
6172 s = zbc_program_num(r2, &n2, false); 6172 s = zbc_program_num(r2, &n2, false);
6173 if (s) RETURN_STATUS(s); 6173 if (s) RETURN_STATUS(s);
@@ -6197,7 +6197,7 @@ static void dc_program_stackLen(void)
6197 BcResult res; 6197 BcResult res;
6198 size_t len = G.prog.results.len; 6198 size_t len = G.prog.results.len;
6199 6199
6200 res.t = BC_RESULT_TEMP; 6200 res.t = XC_RESULT_TEMP;
6201 6201
6202 bc_num_init_DEF_SIZE(&res.d.n); 6202 bc_num_init_DEF_SIZE(&res.d.n);
6203 bc_num_ulong2num(&res.d.n, len); 6203 bc_num_ulong2num(&res.d.n, len);
@@ -6244,7 +6244,7 @@ static BC_STATUS zdc_program_asciify(void)
6244 bc_num_free(&n); 6244 bc_num_free(&n);
6245 } else { 6245 } else {
6246 char *sp; 6246 char *sp;
6247 idx = (r->t == BC_RESULT_STR) ? r->d.id.idx : num->rdx; 6247 idx = (r->t == XC_RESULT_STR) ? r->d.id.idx : num->rdx;
6248 sp = *bc_program_str(idx); 6248 sp = *bc_program_str(idx);
6249 c = sp[0]; 6249 c = sp[0];
6250 } 6250 }
@@ -6260,7 +6260,7 @@ static BC_STATUS zdc_program_asciify(void)
6260 //str[1] = '\0'; - already is 6260 //str[1] = '\0'; - already is
6261 bc_vec_push(&G.prog.strs, &str); 6261 bc_vec_push(&G.prog.strs, &str);
6262 dup: 6262 dup:
6263 res.t = BC_RESULT_STR; 6263 res.t = XC_RESULT_STR;
6264 res.d.id.idx = idx; 6264 res.d.id.idx = idx;
6265 bc_result_pop_and_push(&res); 6265 bc_result_pop_and_push(&res);
6266 6266
@@ -6289,7 +6289,7 @@ static BC_STATUS zdc_program_printStream(void)
6289 s = zbc_num_printNum(n, 0x100, 1, dc_num_printChar); 6289 s = zbc_num_printNum(n, 0x100, 1, dc_num_printChar);
6290 } else { 6290 } else {
6291 char *str; 6291 char *str;
6292 idx = (r->t == BC_RESULT_STR) ? r->d.id.idx : n->rdx; 6292 idx = (r->t == XC_RESULT_STR) ? r->d.id.idx : n->rdx;
6293 str = *bc_program_str(idx); 6293 str = *bc_program_str(idx);
6294 fputs(str, stdout); 6294 fputs(str, stdout);
6295 } 6295 }
@@ -6373,9 +6373,9 @@ static BC_STATUS zdc_program_execStr(char *code, size_t *bgn, bool cond)
6373 6373
6374 sidx = n->rdx; 6374 sidx = n->rdx;
6375 } else { 6375 } else {
6376 if (r->t == BC_RESULT_STR) { 6376 if (r->t == XC_RESULT_STR) {
6377 sidx = r->d.id.idx; 6377 sidx = r->d.id.idx;
6378 } else if (r->t == BC_RESULT_VAR) { 6378 } else if (r->t == XC_RESULT_VAR) {
6379 BcNum *n; 6379 BcNum *n;
6380 s = zbc_program_num(r, &n, false); 6380 s = zbc_program_num(r, &n, false);
6381 if (s || !BC_PROG_STR(n)) goto exit; 6381 if (s || !BC_PROG_STR(n)) goto exit;
@@ -6434,7 +6434,7 @@ static void bc_program_pushGlobal(char inst)
6434 BcResult res; 6434 BcResult res;
6435 unsigned long val; 6435 unsigned long val;
6436 6436
6437 res.t = inst - XC_INST_IBASE + BC_RESULT_IBASE; 6437 res.t = inst - XC_INST_IBASE + XC_RESULT_IBASE;
6438 if (inst == XC_INST_IBASE) 6438 if (inst == XC_INST_IBASE)
6439 val = (unsigned long) G.prog.ib_t; 6439 val = (unsigned long) G.prog.ib_t;
6440 else if (inst == XC_INST_SCALE) 6440 else if (inst == XC_INST_SCALE)
@@ -6550,7 +6550,7 @@ static BC_STATUS zbc_program_exec(void)
6550 break; 6550 break;
6551 case XC_INST_NUM: 6551 case XC_INST_NUM:
6552 dbg_exec("XC_INST_NUM:"); 6552 dbg_exec("XC_INST_NUM:");
6553 r.t = BC_RESULT_CONSTANT; 6553 r.t = XC_RESULT_CONSTANT;
6554 r.d.id.idx = bc_program_index(code, &ip->inst_idx); 6554 r.d.id.idx = bc_program_index(code, &ip->inst_idx);
6555 bc_vec_push(&G.prog.results, &r); 6555 bc_vec_push(&G.prog.results, &r);
6556 break; 6556 break;
@@ -6569,7 +6569,7 @@ static BC_STATUS zbc_program_exec(void)
6569 break; 6569 break;
6570 case XC_INST_STR: 6570 case XC_INST_STR:
6571 dbg_exec("XC_INST_STR:"); 6571 dbg_exec("XC_INST_STR:");
6572 r.t = BC_RESULT_STR; 6572 r.t = XC_RESULT_STR;
6573 r.d.id.idx = bc_program_index(code, &ip->inst_idx); 6573 r.d.id.idx = bc_program_index(code, &ip->inst_idx);
6574 bc_vec_push(&G.prog.results, &r); 6574 bc_vec_push(&G.prog.results, &r);
6575 break; 6575 break;
@@ -6591,7 +6591,7 @@ static BC_STATUS zbc_program_exec(void)
6591 if (bc_num_cmp(num, &G.prog.zero) == 0) 6591 if (bc_num_cmp(num, &G.prog.zero) == 0)
6592 bc_num_one(&r.d.n); 6592 bc_num_one(&r.d.n);
6593 //else bc_num_zero(&r.d.n); - already is 6593 //else bc_num_zero(&r.d.n); - already is
6594 bc_program_retire(&r, BC_RESULT_TEMP); 6594 bc_program_retire(&r, XC_RESULT_TEMP);
6595 break; 6595 break;
6596 } 6596 }
6597 case XC_INST_NEG: 6597 case XC_INST_NEG: