mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-10-15 13:29:41 -07:00
checkpoint on revised eval system; first pass on interpretation; eliminating all callbacks / eval involvement in contexts/spaces/identifier-resolution/etc.
This commit is contained in:
1 parent
ac0c7d9441
commit
2b20760386
12 files changed
+1173
-54
No files matched your search
@@ -1050,13 +1050,6 @@ struct E_CacheNode
|
||||
E_CacheBundle bundle;
|
||||
};
|
||||
|
||||
typedef struct E_CacheLookup E_CacheLookup;
|
||||
struct E_CacheLookup
|
||||
{
|
||||
E_CacheNode *node;
|
||||
U64 hash;
|
||||
};
|
||||
|
||||
typedef struct E_CacheSlot E_CacheSlot;
|
||||
struct E_CacheSlot
|
||||
{
|
||||
|
||||
@@ -360,18 +360,6 @@ e_interpret(String8 bytecode)
|
||||
}
|
||||
}break;
|
||||
|
||||
case RDI_EvalOp_RegReadDyn:
|
||||
{
|
||||
U64 off = svals[0].u64;
|
||||
U64 size = bit_size_from_arch(e_interpret_ctx->reg_arch)/8;
|
||||
B32 good_read = e_space_read(e_interpret_ctx->reg_space, &nval, 0, r1u64(off, off+size));
|
||||
if(!good_read)
|
||||
{
|
||||
result.code = E_InterpretationCode_BadRegRead;
|
||||
goto done;
|
||||
}
|
||||
}break;
|
||||
|
||||
case RDI_EvalOp_FrameOff:
|
||||
{
|
||||
if(e_interpret_ctx->frame_base != 0)
|
||||
@@ -949,26 +937,6 @@ e_interpret(String8 bytecode)
|
||||
// do nothing - the pop is handled by the control bits
|
||||
}break;
|
||||
|
||||
case RDI_EvalOp_Insert:
|
||||
{
|
||||
if(stack_count > imm.u64)
|
||||
{
|
||||
if(imm.u64 > 0)
|
||||
{
|
||||
E_Value tval = stack[stack_count - 1];
|
||||
E_Value *dst = stack + stack_count - 1 - imm.u64;
|
||||
E_Value *shift = dst + 1;
|
||||
MemoryCopy(shift, dst, imm.u64*sizeof(E_Value));
|
||||
*dst = tval;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
result.code = E_InterpretationCode_BadOp;
|
||||
goto done;
|
||||
}
|
||||
}break;
|
||||
|
||||
case RDI_EvalOp_ValueRead:
|
||||
{
|
||||
U64 bytes_to_read = imm.u64;
|
||||
|
||||
Reference in new issue
Block a user