implemented until and do..until loop
This commit is contained in:
@ -4480,22 +4480,6 @@ int moo_execute (moo_t* moo)
|
||||
moo->ip -= (bcode & 0x3); /* low 2 bits */
|
||||
break;
|
||||
|
||||
case BCODE_JUMP_FORWARD_IF_FALSE_X:
|
||||
FETCH_PARAM_CODE_TO (moo, b1);
|
||||
LOG_INST_1 (moo, "jump_forward_if_false %zu", b1);
|
||||
if (MOO_STACK_GETTOP(moo) == moo->_false) moo->ip += b1;
|
||||
MOO_STACK_POP (moo);
|
||||
break;
|
||||
|
||||
case BCODE_JUMP_FORWARD_IF_FALSE_0:
|
||||
case BCODE_JUMP_FORWARD_IF_FALSE_1:
|
||||
case BCODE_JUMP_FORWARD_IF_FALSE_2:
|
||||
case BCODE_JUMP_FORWARD_IF_FALSE_3:
|
||||
LOG_INST_1 (moo, "jump_forward_if_false %zu", (moo_oow_t)(bcode & 0x3));
|
||||
if (MOO_STACK_GETTOP(moo) == moo->_false) moo->ip += (bcode & 0x3); /* low 2 bits */
|
||||
MOO_STACK_POP (moo);
|
||||
break;
|
||||
|
||||
case BCODE_JUMP_BACKWARD_IF_FALSE_X:
|
||||
FETCH_PARAM_CODE_TO (moo, b1);
|
||||
LOG_INST_1 (moo, "jump_backward_if_false %zu", b1);
|
||||
@ -4530,6 +4514,21 @@ int moo_execute (moo_t* moo)
|
||||
MOO_STACK_POP (moo);
|
||||
break;
|
||||
|
||||
case BCODE_JUMP_FORWARD_IF_FALSE:
|
||||
FETCH_PARAM_CODE_TO (moo, b1);
|
||||
LOG_INST_1 (moo, "jump_forward_if_false %zu", b1);
|
||||
if (MOO_STACK_GETTOP(moo) == moo->_false) moo->ip += b1;
|
||||
MOO_STACK_POP (moo);
|
||||
break;
|
||||
|
||||
case BCODE_JUMP_FORWARD_IF_TRUE:
|
||||
FETCH_PARAM_CODE_TO (moo, b1);
|
||||
LOG_INST_1 (moo, "jump_forward_if_true %zu", b1);
|
||||
/*if (MOO_STACK_GETTOP(moo) == moo->_true) moo->ip += b1;*/
|
||||
if (MOO_STACK_GETTOP(moo) != moo->_false) moo->ip += b1;
|
||||
MOO_STACK_POP (moo);
|
||||
break;
|
||||
|
||||
case BCODE_JUMP2_FORWARD:
|
||||
FETCH_PARAM_CODE_TO (moo, b1);
|
||||
LOG_INST_1 (moo, "jump2_forward %zu", b1);
|
||||
@ -4549,6 +4548,14 @@ int moo_execute (moo_t* moo)
|
||||
MOO_STACK_POP (moo);
|
||||
break;
|
||||
|
||||
case BCODE_JUMP2_FORWARD_IF_TRUE:
|
||||
FETCH_PARAM_CODE_TO (moo, b1);
|
||||
LOG_INST_1 (moo, "jump2_forward_if_true %zu", b1);
|
||||
/*if (MOO_STACK_GETTOP(moo) == moo->_true) moo->ip += MAX_CODE_JUMP + b1;*/
|
||||
if (MOO_STACK_GETTOP(moo) != moo->_false) moo->ip += MAX_CODE_JUMP + b1;
|
||||
MOO_STACK_POP (moo);
|
||||
break;
|
||||
|
||||
case BCODE_JUMP2_BACKWARD_IF_FALSE:
|
||||
FETCH_PARAM_CODE_TO (moo, b1);
|
||||
LOG_INST_1 (moo, "jump2_backward_if_false %zu", b1);
|
||||
|
Reference in New Issue
Block a user