mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-06-18 18:12:23 -07:00
raddbg -> raddbgi
This commit is contained in:
+113
-113
@@ -22,18 +22,18 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode)
|
||||
|
||||
for (;ptr < opl;){
|
||||
// consume opcode
|
||||
RADDBG_EvalOp op = (RADDBG_EvalOp)*ptr;
|
||||
if (op >= RADDBG_EvalOp_COUNT){
|
||||
RADDBGI_EvalOp op = (RADDBGI_EvalOp)*ptr;
|
||||
if (op >= RADDBGI_EvalOp_COUNT){
|
||||
result.code = EVAL_ResultCode_BadOp;
|
||||
goto done;
|
||||
}
|
||||
U8 ctrlbits = raddbg_eval_opcode_ctrlbits[op];
|
||||
U8 ctrlbits = raddbgi_eval_opcode_ctrlbits[op];
|
||||
ptr += 1;
|
||||
|
||||
// decode
|
||||
U64 imm = 0;
|
||||
{
|
||||
U32 decode_size = RADDBG_DECODEN_FROM_CTRLBITS(ctrlbits);
|
||||
U32 decode_size = RADDBGI_DECODEN_FROM_CTRLBITS(ctrlbits);
|
||||
U8 *next_ptr = ptr + decode_size;
|
||||
if (next_ptr > opl){
|
||||
result.code = EVAL_ResultCode_BadOp;
|
||||
@@ -54,7 +54,7 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode)
|
||||
// pop
|
||||
EVAL_Slot *svals = 0;
|
||||
{
|
||||
U32 pop_count = RADDBG_POPN_FROM_CTRLBITS(ctrlbits);
|
||||
U32 pop_count = RADDBGI_POPN_FROM_CTRLBITS(ctrlbits);
|
||||
if (pop_count > stack_count){
|
||||
result.code = EVAL_ResultCode_BadOp;
|
||||
goto done;
|
||||
@@ -68,29 +68,29 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode)
|
||||
// interpret
|
||||
EVAL_Slot nval = {0};
|
||||
switch (op){
|
||||
case RADDBG_EvalOp_Stop:
|
||||
case RADDBGI_EvalOp_Stop:
|
||||
{
|
||||
goto done;
|
||||
}break;
|
||||
|
||||
case RADDBG_EvalOp_Noop:
|
||||
case RADDBGI_EvalOp_Noop:
|
||||
{
|
||||
// do nothing
|
||||
}break;
|
||||
|
||||
case RADDBG_EvalOp_Cond:
|
||||
case RADDBGI_EvalOp_Cond:
|
||||
{
|
||||
if (svals[0].u64){
|
||||
ptr += imm;
|
||||
}
|
||||
}break;
|
||||
|
||||
case RADDBG_EvalOp_Skip:
|
||||
case RADDBGI_EvalOp_Skip:
|
||||
{
|
||||
ptr += imm;
|
||||
}break;
|
||||
|
||||
case RADDBG_EvalOp_MemRead:
|
||||
case RADDBGI_EvalOp_MemRead:
|
||||
{
|
||||
U64 addr = svals[0].u64;
|
||||
U64 size = imm;
|
||||
@@ -105,12 +105,12 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode)
|
||||
}
|
||||
}break;
|
||||
|
||||
case RADDBG_EvalOp_RegRead:
|
||||
case RADDBGI_EvalOp_RegRead:
|
||||
{
|
||||
U8 raddbg_reg_code = (imm&0x0000FF)>>0;
|
||||
U8 byte_size = (imm&0x00FF00)>>8;
|
||||
U8 byte_off = (imm&0xFF0000)>>16;
|
||||
REGS_RegCode base_reg_code = regs_reg_code_from_arch_raddbg_code(machine->arch, raddbg_reg_code);
|
||||
U8 raddbgi_reg_code = (imm&0x0000FF)>>0;
|
||||
U8 byte_size = (imm&0x00FF00)>>8;
|
||||
U8 byte_off = (imm&0xFF0000)>>16;
|
||||
REGS_RegCode base_reg_code = regs_reg_code_from_arch_raddbgi_code(machine->arch, raddbgi_reg_code);
|
||||
REGS_Rng rng = regs_reg_code_rng_table_from_architecture(machine->arch)[base_reg_code];
|
||||
U64 off = (U64)rng.byte_off + byte_off;
|
||||
U64 size = (U64)byte_size;
|
||||
@@ -123,7 +123,7 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode)
|
||||
}
|
||||
}break;
|
||||
|
||||
case RADDBG_EvalOp_RegReadDyn:
|
||||
case RADDBGI_EvalOp_RegReadDyn:
|
||||
{
|
||||
U64 off = svals[0].u64;
|
||||
U64 size = bit_size_from_arch(machine->arch)/8;
|
||||
@@ -136,7 +136,7 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode)
|
||||
}
|
||||
}break;
|
||||
|
||||
case RADDBG_EvalOp_FrameOff:
|
||||
case RADDBGI_EvalOp_FrameOff:
|
||||
{
|
||||
if (machine->frame_base != 0){
|
||||
nval.u64 = *machine->frame_base + imm;
|
||||
@@ -147,7 +147,7 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode)
|
||||
}
|
||||
}break;
|
||||
|
||||
case RADDBG_EvalOp_ModuleOff:
|
||||
case RADDBGI_EvalOp_ModuleOff:
|
||||
{
|
||||
if (machine->module_base != 0){
|
||||
nval.u64 = *machine->module_base + imm;
|
||||
@@ -158,7 +158,7 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode)
|
||||
}
|
||||
}break;
|
||||
|
||||
case RADDBG_EvalOp_TLSOff:
|
||||
case RADDBGI_EvalOp_TLSOff:
|
||||
{
|
||||
if (machine->tls_base != 0){
|
||||
nval.u64 = *machine->tls_base + imm;
|
||||
@@ -169,23 +169,23 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode)
|
||||
}
|
||||
}break;
|
||||
|
||||
case RADDBG_EvalOp_ConstU8:
|
||||
case RADDBG_EvalOp_ConstU16:
|
||||
case RADDBG_EvalOp_ConstU32:
|
||||
case RADDBG_EvalOp_ConstU64:
|
||||
case RADDBGI_EvalOp_ConstU8:
|
||||
case RADDBGI_EvalOp_ConstU16:
|
||||
case RADDBGI_EvalOp_ConstU32:
|
||||
case RADDBGI_EvalOp_ConstU64:
|
||||
{
|
||||
nval.u64 = imm;
|
||||
}break;
|
||||
|
||||
case RADDBG_EvalOp_Abs:
|
||||
case RADDBGI_EvalOp_Abs:
|
||||
{
|
||||
if (imm == RADDBG_EvalTypeGroup_F32){
|
||||
if (imm == RADDBGI_EvalTypeGroup_F32){
|
||||
nval.f32 = svals[0].f32;
|
||||
if (svals[0].f32 < 0){
|
||||
nval.f32 = -svals[0].f32;
|
||||
}
|
||||
}
|
||||
else if (imm == RADDBG_EvalTypeGroup_F64){
|
||||
else if (imm == RADDBGI_EvalTypeGroup_F64){
|
||||
nval.f64 = svals[0].f64;
|
||||
if (svals[0].f64 < 0){
|
||||
nval.f64 = -svals[0].f64;
|
||||
@@ -199,12 +199,12 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode)
|
||||
}
|
||||
}break;
|
||||
|
||||
case RADDBG_EvalOp_Neg:
|
||||
case RADDBGI_EvalOp_Neg:
|
||||
{
|
||||
if (imm == RADDBG_EvalTypeGroup_F32){
|
||||
if (imm == RADDBGI_EvalTypeGroup_F32){
|
||||
nval.f32 = -svals[0].f32;
|
||||
}
|
||||
else if (imm == RADDBG_EvalTypeGroup_F64){
|
||||
else if (imm == RADDBGI_EvalTypeGroup_F64){
|
||||
nval.f64 = -svals[0].f64;
|
||||
}
|
||||
else{
|
||||
@@ -212,12 +212,12 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode)
|
||||
}
|
||||
}break;
|
||||
|
||||
case RADDBG_EvalOp_Add:
|
||||
case RADDBGI_EvalOp_Add:
|
||||
{
|
||||
if (imm == RADDBG_EvalTypeGroup_F32){
|
||||
if (imm == RADDBGI_EvalTypeGroup_F32){
|
||||
nval.f32 = svals[0].f32 + svals[1].f32;
|
||||
}
|
||||
else if (imm == RADDBG_EvalTypeGroup_F64){
|
||||
else if (imm == RADDBGI_EvalTypeGroup_F64){
|
||||
nval.f64 = svals[0].f64 + svals[1].f64;
|
||||
}
|
||||
else{
|
||||
@@ -225,12 +225,12 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode)
|
||||
}
|
||||
}break;
|
||||
|
||||
case RADDBG_EvalOp_Sub:
|
||||
case RADDBGI_EvalOp_Sub:
|
||||
{
|
||||
if (imm == RADDBG_EvalTypeGroup_F32){
|
||||
if (imm == RADDBGI_EvalTypeGroup_F32){
|
||||
nval.f32 = svals[0].f32 - svals[1].f32;
|
||||
}
|
||||
else if (imm == RADDBG_EvalTypeGroup_F64){
|
||||
else if (imm == RADDBGI_EvalTypeGroup_F64){
|
||||
nval.f64 = svals[0].f64 - svals[1].f64;
|
||||
}
|
||||
else{
|
||||
@@ -238,12 +238,12 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode)
|
||||
}
|
||||
}break;
|
||||
|
||||
case RADDBG_EvalOp_Mul:
|
||||
case RADDBGI_EvalOp_Mul:
|
||||
{
|
||||
if (imm == RADDBG_EvalTypeGroup_F32){
|
||||
if (imm == RADDBGI_EvalTypeGroup_F32){
|
||||
nval.f32 = svals[0].f32*svals[1].f32;
|
||||
}
|
||||
else if (imm == RADDBG_EvalTypeGroup_F64){
|
||||
else if (imm == RADDBGI_EvalTypeGroup_F64){
|
||||
nval.f64 = svals[0].f64*svals[1].f64;
|
||||
}
|
||||
else{
|
||||
@@ -251,9 +251,9 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode)
|
||||
}
|
||||
}break;
|
||||
|
||||
case RADDBG_EvalOp_Div:
|
||||
case RADDBGI_EvalOp_Div:
|
||||
{
|
||||
if (imm == RADDBG_EvalTypeGroup_F32){
|
||||
if (imm == RADDBGI_EvalTypeGroup_F32){
|
||||
if (svals[1].f32 != 0.f){
|
||||
nval.f32 = svals[0].f32/svals[1].f32;
|
||||
}
|
||||
@@ -263,7 +263,7 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode)
|
||||
goto done;
|
||||
}
|
||||
}
|
||||
else if (imm == RADDBG_EvalTypeGroup_F64){
|
||||
else if (imm == RADDBGI_EvalTypeGroup_F64){
|
||||
if (svals[1].f64 != 0.){
|
||||
nval.f64 = svals[0].f64/svals[1].f64;
|
||||
}
|
||||
@@ -273,8 +273,8 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode)
|
||||
goto done;
|
||||
}
|
||||
}
|
||||
else if (imm == RADDBG_EvalTypeGroup_U ||
|
||||
imm == RADDBG_EvalTypeGroup_S){
|
||||
else if (imm == RADDBGI_EvalTypeGroup_U ||
|
||||
imm == RADDBGI_EvalTypeGroup_S){
|
||||
if (svals[1].u64 != 0){
|
||||
nval.u64 = svals[0].u64/svals[1].u64;
|
||||
}
|
||||
@@ -290,10 +290,10 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode)
|
||||
}
|
||||
}break;
|
||||
|
||||
case RADDBG_EvalOp_Mod:
|
||||
case RADDBGI_EvalOp_Mod:
|
||||
{
|
||||
if (imm == RADDBG_EvalTypeGroup_U ||
|
||||
imm == RADDBG_EvalTypeGroup_S){
|
||||
if (imm == RADDBGI_EvalTypeGroup_U ||
|
||||
imm == RADDBGI_EvalTypeGroup_S){
|
||||
if (svals[1].u64 != 0){
|
||||
nval.u64 = svals[0].u64%svals[1].u64;
|
||||
}
|
||||
@@ -304,10 +304,10 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode)
|
||||
}
|
||||
}break;
|
||||
|
||||
case RADDBG_EvalOp_LShift:
|
||||
case RADDBGI_EvalOp_LShift:
|
||||
{
|
||||
if (imm == RADDBG_EvalTypeGroup_U ||
|
||||
imm == RADDBG_EvalTypeGroup_S){
|
||||
if (imm == RADDBGI_EvalTypeGroup_U ||
|
||||
imm == RADDBGI_EvalTypeGroup_S){
|
||||
nval.u64 = svals[0].u64 << svals[1].u64;
|
||||
}
|
||||
else{
|
||||
@@ -316,12 +316,12 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode)
|
||||
}
|
||||
}break;
|
||||
|
||||
case RADDBG_EvalOp_RShift:
|
||||
case RADDBGI_EvalOp_RShift:
|
||||
{
|
||||
if (imm == RADDBG_EvalTypeGroup_U){
|
||||
if (imm == RADDBGI_EvalTypeGroup_U){
|
||||
nval.u64 = svals[0].u64 >> svals[1].u64;
|
||||
}
|
||||
else if (imm == RADDBG_EvalTypeGroup_S){
|
||||
else if (imm == RADDBGI_EvalTypeGroup_S){
|
||||
nval.u64 = svals[0].s64 >> svals[1].u64;
|
||||
}
|
||||
else{
|
||||
@@ -330,10 +330,10 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode)
|
||||
}
|
||||
}break;
|
||||
|
||||
case RADDBG_EvalOp_BitAnd:
|
||||
case RADDBGI_EvalOp_BitAnd:
|
||||
{
|
||||
if (imm == RADDBG_EvalTypeGroup_U ||
|
||||
imm == RADDBG_EvalTypeGroup_S){
|
||||
if (imm == RADDBGI_EvalTypeGroup_U ||
|
||||
imm == RADDBGI_EvalTypeGroup_S){
|
||||
nval.u64 = svals[0].u64&svals[1].u64;
|
||||
}
|
||||
else{
|
||||
@@ -342,10 +342,10 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode)
|
||||
}
|
||||
}break;
|
||||
|
||||
case RADDBG_EvalOp_BitOr:
|
||||
case RADDBGI_EvalOp_BitOr:
|
||||
{
|
||||
if (imm == RADDBG_EvalTypeGroup_U ||
|
||||
imm == RADDBG_EvalTypeGroup_S){
|
||||
if (imm == RADDBGI_EvalTypeGroup_U ||
|
||||
imm == RADDBGI_EvalTypeGroup_S){
|
||||
nval.u64 = svals[0].u64|svals[1].u64;
|
||||
}
|
||||
else{
|
||||
@@ -354,10 +354,10 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode)
|
||||
}
|
||||
}break;
|
||||
|
||||
case RADDBG_EvalOp_BitXor:
|
||||
case RADDBGI_EvalOp_BitXor:
|
||||
{
|
||||
if (imm == RADDBG_EvalTypeGroup_U ||
|
||||
imm == RADDBG_EvalTypeGroup_S){
|
||||
if (imm == RADDBGI_EvalTypeGroup_U ||
|
||||
imm == RADDBGI_EvalTypeGroup_S){
|
||||
nval.u64 = svals[0].u64^svals[1].u64;
|
||||
}
|
||||
else{
|
||||
@@ -366,10 +366,10 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode)
|
||||
}
|
||||
}break;
|
||||
|
||||
case RADDBG_EvalOp_BitNot:
|
||||
case RADDBGI_EvalOp_BitNot:
|
||||
{
|
||||
if (imm == RADDBG_EvalTypeGroup_U ||
|
||||
imm == RADDBG_EvalTypeGroup_S){
|
||||
if (imm == RADDBGI_EvalTypeGroup_U ||
|
||||
imm == RADDBGI_EvalTypeGroup_S){
|
||||
nval.u64 = ~svals[0].u64;
|
||||
}
|
||||
else{
|
||||
@@ -378,10 +378,10 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode)
|
||||
}
|
||||
}break;
|
||||
|
||||
case RADDBG_EvalOp_LogAnd:
|
||||
case RADDBGI_EvalOp_LogAnd:
|
||||
{
|
||||
if (imm == RADDBG_EvalTypeGroup_U ||
|
||||
imm == RADDBG_EvalTypeGroup_S){
|
||||
if (imm == RADDBGI_EvalTypeGroup_U ||
|
||||
imm == RADDBGI_EvalTypeGroup_S){
|
||||
nval.u64 = (svals[0].u64 && svals[1].u64);
|
||||
}
|
||||
else{
|
||||
@@ -390,10 +390,10 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode)
|
||||
}
|
||||
}break;
|
||||
|
||||
case RADDBG_EvalOp_LogOr:
|
||||
case RADDBGI_EvalOp_LogOr:
|
||||
{
|
||||
if (imm == RADDBG_EvalTypeGroup_U ||
|
||||
imm == RADDBG_EvalTypeGroup_S){
|
||||
if (imm == RADDBGI_EvalTypeGroup_U ||
|
||||
imm == RADDBGI_EvalTypeGroup_S){
|
||||
nval.u64 = (svals[0].u64 || svals[1].u64);
|
||||
}
|
||||
else{
|
||||
@@ -402,10 +402,10 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode)
|
||||
}
|
||||
}break;
|
||||
|
||||
case RADDBG_EvalOp_LogNot:
|
||||
case RADDBGI_EvalOp_LogNot:
|
||||
{
|
||||
if (imm == RADDBG_EvalTypeGroup_U ||
|
||||
imm == RADDBG_EvalTypeGroup_S){
|
||||
if (imm == RADDBGI_EvalTypeGroup_U ||
|
||||
imm == RADDBGI_EvalTypeGroup_S){
|
||||
nval.u64 = (!svals[0].u64);
|
||||
}
|
||||
else{
|
||||
@@ -414,28 +414,28 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode)
|
||||
}
|
||||
}break;
|
||||
|
||||
case RADDBG_EvalOp_EqEq:
|
||||
case RADDBGI_EvalOp_EqEq:
|
||||
{
|
||||
nval.u64 = (svals[0].u64 == svals[1].u64);
|
||||
}break;
|
||||
|
||||
case RADDBG_EvalOp_NtEq:
|
||||
case RADDBGI_EvalOp_NtEq:
|
||||
{
|
||||
nval.u64 = (svals[0].u64 != svals[1].u64);
|
||||
}break;
|
||||
|
||||
case RADDBG_EvalOp_LsEq:
|
||||
case RADDBGI_EvalOp_LsEq:
|
||||
{
|
||||
if (imm == RADDBG_EvalTypeGroup_F32){
|
||||
if (imm == RADDBGI_EvalTypeGroup_F32){
|
||||
nval.u64 = (svals[0].f32 <= svals[1].f32);
|
||||
}
|
||||
else if (imm == RADDBG_EvalTypeGroup_F64){
|
||||
else if (imm == RADDBGI_EvalTypeGroup_F64){
|
||||
nval.u64 = (svals[0].f64 <= svals[1].f64);
|
||||
}
|
||||
else if (imm == RADDBG_EvalTypeGroup_U){
|
||||
else if (imm == RADDBGI_EvalTypeGroup_U){
|
||||
nval.u64 = (svals[0].u64 <= svals[1].u64);
|
||||
}
|
||||
else if (imm == RADDBG_EvalTypeGroup_S){
|
||||
else if (imm == RADDBGI_EvalTypeGroup_S){
|
||||
nval.u64 = (svals[0].s64 <= svals[1].s64);
|
||||
}
|
||||
else{
|
||||
@@ -444,18 +444,18 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode)
|
||||
}
|
||||
}break;
|
||||
|
||||
case RADDBG_EvalOp_GrEq:
|
||||
case RADDBGI_EvalOp_GrEq:
|
||||
{
|
||||
if (imm == RADDBG_EvalTypeGroup_F32){
|
||||
if (imm == RADDBGI_EvalTypeGroup_F32){
|
||||
nval.u64 = (svals[0].f32 >= svals[1].f32);
|
||||
}
|
||||
else if (imm == RADDBG_EvalTypeGroup_F64){
|
||||
else if (imm == RADDBGI_EvalTypeGroup_F64){
|
||||
nval.u64 = (svals[0].f64 >= svals[1].f64);
|
||||
}
|
||||
else if (imm == RADDBG_EvalTypeGroup_U){
|
||||
else if (imm == RADDBGI_EvalTypeGroup_U){
|
||||
nval.u64 = (svals[0].u64 >= svals[1].u64);
|
||||
}
|
||||
else if (imm == RADDBG_EvalTypeGroup_S){
|
||||
else if (imm == RADDBGI_EvalTypeGroup_S){
|
||||
nval.u64 = (svals[0].s64 >= svals[1].s64);
|
||||
}
|
||||
else{
|
||||
@@ -464,18 +464,18 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode)
|
||||
}
|
||||
}break;
|
||||
|
||||
case RADDBG_EvalOp_Less:
|
||||
case RADDBGI_EvalOp_Less:
|
||||
{
|
||||
if (imm == RADDBG_EvalTypeGroup_F32){
|
||||
if (imm == RADDBGI_EvalTypeGroup_F32){
|
||||
nval.u64 = (svals[0].f32 < svals[1].f32);
|
||||
}
|
||||
else if (imm == RADDBG_EvalTypeGroup_F64){
|
||||
else if (imm == RADDBGI_EvalTypeGroup_F64){
|
||||
nval.u64 = (svals[0].f64 < svals[1].f64);
|
||||
}
|
||||
else if (imm == RADDBG_EvalTypeGroup_U){
|
||||
else if (imm == RADDBGI_EvalTypeGroup_U){
|
||||
nval.u64 = (svals[0].u64 < svals[1].u64);
|
||||
}
|
||||
else if (imm == RADDBG_EvalTypeGroup_S){
|
||||
else if (imm == RADDBGI_EvalTypeGroup_S){
|
||||
nval.u64 = (svals[0].s64 < svals[1].s64);
|
||||
}
|
||||
else{
|
||||
@@ -484,18 +484,18 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode)
|
||||
}
|
||||
}break;
|
||||
|
||||
case RADDBG_EvalOp_Grtr:
|
||||
case RADDBGI_EvalOp_Grtr:
|
||||
{
|
||||
if (imm == RADDBG_EvalTypeGroup_F32){
|
||||
if (imm == RADDBGI_EvalTypeGroup_F32){
|
||||
nval.u64 = (svals[0].f32 > svals[1].f32);
|
||||
}
|
||||
else if (imm == RADDBG_EvalTypeGroup_F64){
|
||||
else if (imm == RADDBGI_EvalTypeGroup_F64){
|
||||
nval.u64 = (svals[0].f64 > svals[1].f64);
|
||||
}
|
||||
else if (imm == RADDBG_EvalTypeGroup_U){
|
||||
else if (imm == RADDBGI_EvalTypeGroup_U){
|
||||
nval.u64 = (svals[0].u64 > svals[1].u64);
|
||||
}
|
||||
else if (imm == RADDBG_EvalTypeGroup_S){
|
||||
else if (imm == RADDBGI_EvalTypeGroup_S){
|
||||
nval.u64 = (svals[0].s64 > svals[1].s64);
|
||||
}
|
||||
else{
|
||||
@@ -504,7 +504,7 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode)
|
||||
}
|
||||
}break;
|
||||
|
||||
case RADDBG_EvalOp_Trunc:
|
||||
case RADDBGI_EvalOp_Trunc:
|
||||
{
|
||||
if (0 < imm){
|
||||
U64 mask = 0;
|
||||
@@ -515,7 +515,7 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode)
|
||||
}
|
||||
}break;
|
||||
|
||||
case RADDBG_EvalOp_TruncSigned:
|
||||
case RADDBGI_EvalOp_TruncSigned:
|
||||
{
|
||||
if (0 < imm){
|
||||
U64 mask = 0;
|
||||
@@ -530,52 +530,52 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode)
|
||||
}
|
||||
}break;
|
||||
|
||||
case RADDBG_EvalOp_Convert:
|
||||
case RADDBGI_EvalOp_Convert:
|
||||
{
|
||||
U32 in = imm&0xFF;
|
||||
U32 out = (imm >> 8)&0xFF;
|
||||
if (in != out){
|
||||
switch (in + out*RADDBG_EvalTypeGroup_COUNT){
|
||||
case RADDBG_EvalTypeGroup_F32 + RADDBG_EvalTypeGroup_U*RADDBG_EvalTypeGroup_COUNT:
|
||||
switch (in + out*RADDBGI_EvalTypeGroup_COUNT){
|
||||
case RADDBGI_EvalTypeGroup_F32 + RADDBGI_EvalTypeGroup_U*RADDBGI_EvalTypeGroup_COUNT:
|
||||
{
|
||||
nval.u64 = (U64)svals[0].f32;
|
||||
}break;
|
||||
case RADDBG_EvalTypeGroup_F64 + RADDBG_EvalTypeGroup_U*RADDBG_EvalTypeGroup_COUNT:
|
||||
case RADDBGI_EvalTypeGroup_F64 + RADDBGI_EvalTypeGroup_U*RADDBGI_EvalTypeGroup_COUNT:
|
||||
{
|
||||
nval.u64 = (U64)svals[0].f64;
|
||||
}break;
|
||||
|
||||
case RADDBG_EvalTypeGroup_F32 + RADDBG_EvalTypeGroup_S*RADDBG_EvalTypeGroup_COUNT:
|
||||
case RADDBGI_EvalTypeGroup_F32 + RADDBGI_EvalTypeGroup_S*RADDBGI_EvalTypeGroup_COUNT:
|
||||
{
|
||||
nval.s64 = (S64)svals[0].f32;
|
||||
}break;
|
||||
case RADDBG_EvalTypeGroup_F64 + RADDBG_EvalTypeGroup_S*RADDBG_EvalTypeGroup_COUNT:
|
||||
case RADDBGI_EvalTypeGroup_F64 + RADDBGI_EvalTypeGroup_S*RADDBGI_EvalTypeGroup_COUNT:
|
||||
{
|
||||
nval.s64 = (S64)svals[0].f64;
|
||||
}break;
|
||||
|
||||
case RADDBG_EvalTypeGroup_U + RADDBG_EvalTypeGroup_F32*RADDBG_EvalTypeGroup_COUNT:
|
||||
case RADDBGI_EvalTypeGroup_U + RADDBGI_EvalTypeGroup_F32*RADDBGI_EvalTypeGroup_COUNT:
|
||||
{
|
||||
nval.f32 = (F32)svals[0].u64;
|
||||
}break;
|
||||
case RADDBG_EvalTypeGroup_S + RADDBG_EvalTypeGroup_F32*RADDBG_EvalTypeGroup_COUNT:
|
||||
case RADDBGI_EvalTypeGroup_S + RADDBGI_EvalTypeGroup_F32*RADDBGI_EvalTypeGroup_COUNT:
|
||||
{
|
||||
nval.f32 = (F32)svals[0].s64;
|
||||
}break;
|
||||
case RADDBG_EvalTypeGroup_F64 + RADDBG_EvalTypeGroup_F32*RADDBG_EvalTypeGroup_COUNT:
|
||||
case RADDBGI_EvalTypeGroup_F64 + RADDBGI_EvalTypeGroup_F32*RADDBGI_EvalTypeGroup_COUNT:
|
||||
{
|
||||
nval.f32 = (F32)svals[0].f64;
|
||||
}break;
|
||||
|
||||
case RADDBG_EvalTypeGroup_U + RADDBG_EvalTypeGroup_F64*RADDBG_EvalTypeGroup_COUNT:
|
||||
case RADDBGI_EvalTypeGroup_U + RADDBGI_EvalTypeGroup_F64*RADDBGI_EvalTypeGroup_COUNT:
|
||||
{
|
||||
nval.f64 = (F64)svals[0].u64;
|
||||
}break;
|
||||
case RADDBG_EvalTypeGroup_S + RADDBG_EvalTypeGroup_F64*RADDBG_EvalTypeGroup_COUNT:
|
||||
case RADDBGI_EvalTypeGroup_S + RADDBGI_EvalTypeGroup_F64*RADDBGI_EvalTypeGroup_COUNT:
|
||||
{
|
||||
nval.f64 = (F64)svals[0].s64;
|
||||
}break;
|
||||
case RADDBG_EvalTypeGroup_F32 + RADDBG_EvalTypeGroup_F64*RADDBG_EvalTypeGroup_COUNT:
|
||||
case RADDBGI_EvalTypeGroup_F32 + RADDBGI_EvalTypeGroup_F64*RADDBGI_EvalTypeGroup_COUNT:
|
||||
{
|
||||
nval.f64 = (F64)svals[0].f32;
|
||||
}break;
|
||||
@@ -583,7 +583,7 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode)
|
||||
}
|
||||
}break;
|
||||
|
||||
case RADDBG_EvalOp_Pick:
|
||||
case RADDBGI_EvalOp_Pick:
|
||||
{
|
||||
if (stack_count > imm){
|
||||
nval = stack[stack_count - imm - 1];
|
||||
@@ -594,12 +594,12 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode)
|
||||
}
|
||||
}break;
|
||||
|
||||
case RADDBG_EvalOp_Pop:
|
||||
case RADDBGI_EvalOp_Pop:
|
||||
{
|
||||
// do nothing - the pop is handled by the control bits
|
||||
}break;
|
||||
|
||||
case RADDBG_EvalOp_Insert:
|
||||
case RADDBGI_EvalOp_Insert:
|
||||
{
|
||||
if (stack_count > imm){
|
||||
if (imm > 0){
|
||||
@@ -619,7 +619,7 @@ eval_interpret(EVAL_Machine *machine, String8 bytecode)
|
||||
|
||||
// push
|
||||
{
|
||||
U64 push_count = RADDBG_PUSHN_FROM_CTRLBITS(ctrlbits);
|
||||
U64 push_count = RADDBGI_PUSHN_FROM_CTRLBITS(ctrlbits);
|
||||
if (push_count == 1){
|
||||
if (stack_count < stack_cap){
|
||||
stack[stack_count] = nval;
|
||||
|
||||
Reference in New Issue
Block a user