CAR: added stack operations, call, ret, jmp and some other random stuff

This commit is contained in:
2026-07-18 19:28:11 -05:00
parent 5902eae153
commit 1f11242762
10 changed files with 294 additions and 20 deletions

View File

@ -160,3 +160,58 @@ DEFINE_OP(stj)
OP_RETURN_NORMAL
}
DEFINE_OP(push)
{
ls_instruction_t i = convert_raw2ls(ri);
_push(state->gprs[i.reg], state);
OP_RETURN_NORMAL
}
DEFINE_OP(pushi)
{
ls_instruction_t i = convert_raw2ls(ri);
_push(i.imm, state);
OP_RETURN_NORMAL
}
DEFINE_OP(pop)
{
ls_instruction_t i = convert_raw2ls(ri);
uint32_t v;
_pop(&v, state);
state->gprs[i.reg] = v;
OP_RETURN_NORMAL
}
DEFINE_OP(sth)
{
ls_instruction_t i = convert_raw2ls(ri);
uint32_t addr = state->pc + state->gprs[i.reg];
uint32_t v = (i.imm >> 21) & 0x7ff;
memcpy(state->memory + addr, &v, sizeof(v));
OP_RETURN_NORMAL
}
DEFINE_OP(stk)
{
ls_instruction_t i = convert_raw2ls(ri);
uint32_t addr = state->sp + state->gprs[i.reg];
uint32_t v = (i.imm >> 21) & 0x7ff;
memcpy(state->memory + addr, &v, sizeof(v));
OP_RETURN_NORMAL
}