mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-08-14 17:28:07 +00:00
add CFA op to the bytecode
This commit is contained in:
+2
-1
@@ -58,7 +58,7 @@ sizeof(RDI_NameMapNode),
|
|||||||
sizeof(RDI_U8),
|
sizeof(RDI_U8),
|
||||||
};
|
};
|
||||||
|
|
||||||
RDI_U16 rdi_eval_op_ctrlbits_table[53] =
|
RDI_U16 rdi_eval_op_ctrlbits_table[54] =
|
||||||
{
|
{
|
||||||
RDI_EVAL_CTRLBITS(0, 0, 0),
|
RDI_EVAL_CTRLBITS(0, 0, 0),
|
||||||
RDI_EVAL_CTRLBITS(0, 0, 0),
|
RDI_EVAL_CTRLBITS(0, 0, 0),
|
||||||
@@ -112,6 +112,7 @@ RDI_EVAL_CTRLBITS(4, 0, 0),
|
|||||||
RDI_EVAL_CTRLBITS(4, 0, 0),
|
RDI_EVAL_CTRLBITS(4, 0, 0),
|
||||||
RDI_EVAL_CTRLBITS(8, 0, 0),
|
RDI_EVAL_CTRLBITS(8, 0, 0),
|
||||||
RDI_EVAL_CTRLBITS(0, 2, 2),
|
RDI_EVAL_CTRLBITS(0, 2, 2),
|
||||||
|
RDI_EVAL_CTRLBITS(0, 0, 1),
|
||||||
RDI_EVAL_CTRLBITS(0, 0, 0),
|
RDI_EVAL_CTRLBITS(0, 0, 0),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
+4
-2
@@ -531,7 +531,8 @@ RDI_EvalOp_CallSiteValue = 48,
|
|||||||
RDI_EvalOp_PartialValue = 49,
|
RDI_EvalOp_PartialValue = 49,
|
||||||
RDI_EvalOp_PartialValueBit = 50,
|
RDI_EvalOp_PartialValueBit = 50,
|
||||||
RDI_EvalOp_Swap = 51,
|
RDI_EvalOp_Swap = 51,
|
||||||
RDI_EvalOp_COUNT = 52,
|
RDI_EvalOp_PushCfa = 52,
|
||||||
|
RDI_EvalOp_COUNT = 53,
|
||||||
} RDI_EvalOpEnum;
|
} RDI_EvalOpEnum;
|
||||||
|
|
||||||
typedef RDI_U8 RDI_EvalTypeGroup;
|
typedef RDI_U8 RDI_EvalTypeGroup;
|
||||||
@@ -1136,6 +1137,7 @@ X(CallSiteValue)\
|
|||||||
X(PartialValue)\
|
X(PartialValue)\
|
||||||
X(PartialValueBit)\
|
X(PartialValueBit)\
|
||||||
X(Swap)\
|
X(Swap)\
|
||||||
|
X(PushCfa)\
|
||||||
|
|
||||||
#define RDI_EvalTypeGroup_XList \
|
#define RDI_EvalTypeGroup_XList \
|
||||||
X(Other)\
|
X(Other)\
|
||||||
@@ -1638,6 +1640,6 @@ RDI_PROC RDI_S32 rdi_eval_op_typegroup_are_compatible(RDI_EvalOp op, RDI_EvalTyp
|
|||||||
RDI_PROC RDI_U8 *rdi_explanation_string_from_eval_conversion_kind(RDI_EvalConversionKind kind, RDI_U64 *size_out);
|
RDI_PROC RDI_U8 *rdi_explanation_string_from_eval_conversion_kind(RDI_EvalConversionKind kind, RDI_U64 *size_out);
|
||||||
|
|
||||||
extern RDI_U16 rdi_section_element_size_table[44];
|
extern RDI_U16 rdi_section_element_size_table[44];
|
||||||
extern RDI_U16 rdi_eval_op_ctrlbits_table[53];
|
extern RDI_U16 rdi_eval_op_ctrlbits_table[54];
|
||||||
|
|
||||||
#endif // RDI_H
|
#endif // RDI_H
|
||||||
|
|||||||
+2
-1
@@ -1358,7 +1358,8 @@ RDI_EvalOpTable:
|
|||||||
{PartialValue 49 4 0 0}
|
{PartialValue 49 4 0 0}
|
||||||
{PartialValueBit 50 8 0 0}
|
{PartialValueBit 50 8 0 0}
|
||||||
{Swap 51 0 2 2} // swaps the top two entries on the stack
|
{Swap 51 0 2 2} // swaps the top two entries on the stack
|
||||||
{COUNT 52 0 0 0}
|
{PushCfa 52 0 0 1} // push canonical frame address on the stack
|
||||||
|
{COUNT 53 0 0 0}
|
||||||
}
|
}
|
||||||
|
|
||||||
// NOTE(rjf): "ck" -> "conversion kind, when converted to type group", used in square matrix form
|
// NOTE(rjf): "ck" -> "conversion kind, when converted to type group", used in square matrix form
|
||||||
|
|||||||
@@ -1261,7 +1261,7 @@ d2r_bytecode_from_expression(Arena *arena,
|
|||||||
}
|
}
|
||||||
} break;
|
} break;
|
||||||
case DW_ExprOp_CallFrameCfa: {
|
case DW_ExprOp_CallFrameCfa: {
|
||||||
rdim_bytecode_push_op(arena, &bc, RDI_EvalOp_FrameOff, 0);
|
rdim_bytecode_push_op(arena, &bc, RDI_EvalOp_PushCfa, 0);
|
||||||
d2r_value_type_stack_push(scratch.arena, stack, D2R_ValueType_Address);
|
d2r_value_type_stack_push(scratch.arena, stack, D2R_ValueType_Address);
|
||||||
} break;
|
} break;
|
||||||
case DW_ExprOp_PushObjectAddress: {
|
case DW_ExprOp_PushObjectAddress: {
|
||||||
|
|||||||
Reference in New Issue
Block a user