Lines Matching defs:bmachine
41 struct bmachine {
55 static struct bmachine bmachine;
228 bmachine.interrupted = true;
236 bmachine.extended_regs = extended_registers;
237 bmachine.reg_array_size = bmachine.extended_regs ?
240 bmachine.reg = calloc(bmachine.reg_array_size,
241 sizeof(bmachine.reg[0]));
242 if (bmachine.reg == NULL)
250 stack_init(&bmachine.stack);
252 for (i = 0; i < bmachine.reg_array_size; i++)
253 stack_init(&bmachine.reg[i]);
255 bmachine.readstack_sz = READSTACK_SIZE;
256 bmachine.readstack = calloc(sizeof(struct source),
257 bmachine.readstack_sz);
258 if (bmachine.readstack == NULL)
260 bmachine.obase = bmachine.ibase = 10;
267 return bmachine.scale;
274 bmachine.readsp = 0;
275 bmachine.readstack[0] = *src;
281 struct source *src = &bmachine.readstack[bmachine.readsp];
289 struct source *src = &bmachine.readstack[bmachine.readsp];
297 struct source *src = &bmachine.readstack[bmachine.readsp];
305 struct source *src = &bmachine.readstack[bmachine.readsp];
442 stack_pushnumber(&bmachine.stack, n);
448 stack_pushstring(&bmachine.stack, string);
454 stack_push(&bmachine.stack, v);
460 return stack_tos(&bmachine.stack);
466 return stack_pop(&bmachine.stack);
472 return stack_popnumber(&bmachine.stack);
478 return stack_popstring(&bmachine.stack);
484 stack_clear(&bmachine.stack);
490 stack_print(stdout, &bmachine.stack, "", bmachine.obase);
498 print_value(stdout, value, "", bmachine.obase);
510 print_value(stderr, value, "", bmachine.obase);
546 print_value(stdout, value, "", bmachine.obase);
555 stack_dup(&bmachine.stack);
561 stack_swap(&bmachine.stack);
578 bn_check(BN_set_word(n->number, bmachine.scale));
595 bmachine.scale = (u_int)scale;
609 bn_check(BN_set_word(n->number, bmachine.obase));
623 bmachine.obase = (u_int)base;
636 bn_check(BN_set_word(n->number, bmachine.ibase));
650 bmachine.ibase = (u_int)base;
664 i = stack_size(&bmachine.stack);
783 if (idx == 0xff && bmachine.extended_regs) {
792 if (idx < 0 || (size_t)idx >= bmachine.reg_array_size) {
808 v = stack_tos(&bmachine.reg[idx]);
830 stack_set_tos(&bmachine.reg[idx], val);
843 stack = &bmachine.reg[idx];
867 stack_push(&bmachine.reg[idx], value);
891 stack = &bmachine.reg[reg];
932 stack = &bmachine.reg[reg];
942 push_string(read_string(&bmachine.readstack[bmachine.readsp]));
1022 if (rscale > bmachine.scale && rscale > ascale && rscale > bscale)
1042 bmul_number(r, a, b, bmachine.scale);
1067 r->scale = bmachine.scale;
1105 r->scale = max(b->scale, a->scale + bmachine.scale);
1111 normalize(b, scale + bmachine.scale);
1142 rdiv->scale = bmachine.scale;
1143 rmod->scale = max(b->scale, a->scale + bmachine.scale);
1150 normalize(b, scale + bmachine.scale);
1200 rscale = bmachine.scale;
1207 m = max(a->scale, bmachine.scale);
1304 scale = max(bmachine.scale, n->scale);
1523 v = stack_tos(&bmachine.reg[idx]);
1551 if (bmachine.readsp < 2)
1554 bmachine.readsp--;
1556 bmachine.readsp--;
1572 else if (bmachine.readsp < i)
1577 bmachine.readsp--;
1594 else if (i > 0 && bmachine.readsp < i)
1599 bmachine.readsp--;
1634 free(read_string(&bmachine.readstack[bmachine.readsp]));
1662 push_number(readnumber(&bmachine.readstack[bmachine.readsp],
1663 bmachine.ibase));
1669 int ch = bmachine.readstack[bmachine.readsp].lastchar;
1678 if (bmachine.readsp > 0) {
1683 src_setstring(&bmachine.readstack[bmachine.readsp], p);
1688 if (bmachine.readsp == bmachine.readstack_sz - 1) {
1689 size_t newsz = bmachine.readstack_sz * 2;
1690 struct source *stack = bmachine.readstack;
1694 bmachine.readstack_sz = newsz;
1695 bmachine.readstack = stack;
1697 src_setstring(&bmachine.readstack[++bmachine.readsp], p);
1731 if (bmachine.readsp == 0)
1734 bmachine.readsp--;
1737 if (bmachine.interrupted) {
1738 if (bmachine.readsp > 0) {
1740 bmachine.readsp--;
1743 bmachine.interrupted = false;
1747 stack_print(stderr, &bmachine.stack, "* ",
1748 bmachine.obase);
1749 (void)fprintf(stderr, "%zd =>\n", bmachine.readsp);
1758 stack_print(stderr, &bmachine.stack, "* ",
1759 bmachine.obase);
1760 (void)fprintf(stderr, "%zd ==\n", bmachine.readsp);