default:
// must be calling a defined subroutine
state.pushr(state.ip);
- state.ip = index - sizeof(Cell);
- break;
+ state.ip = index;
+ return;
case 0: // _lit
state.push(state.beyondip());
break;
}
[[fallthrough]];
case 28: // _jmp
- state.ip = state.beyondip() - sizeof(Cell);
- break;
+ state.ip = state.beyondip();
+ return;
case 29: // depth
state.push(state.size());
break;
Dictionary::InputCells - cell));
break;
}
+
+ state.ip += sizeof(Cell);
}
int CoreWords::findi(const char *word)
if (!stat) {
if (addr < CoreWords::WordCount) {
CoreWords::run(addr, *this);
+ ip = 0;
} else {
auto ins = addr;
for (;;) {
CoreWords::run(ins, *this);
- ip += sizeof(Cell);
ins = dict.read(ip);
}
}