mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-10-15 05:19:41 -07:00
initial upload
This commit is contained in:
commit
a42ec6aeff
308 files changed
+162362
No files matched your search
@@ -0,0 +1,97 @@
|
||||
// Copyright (c) 2024 Epic Games Tools
|
||||
// Licensed under the MIT license (https://opensource.org/license/mit/)
|
||||
|
||||
////////////////////////////////
|
||||
// Functions
|
||||
|
||||
RADDBG_PROC RADDBG_U64
|
||||
raddbg_hash(RADDBG_U8 *ptr, RADDBG_U64 size){
|
||||
RADDBG_U64 result = 5381;
|
||||
RADDBG_U8 *opl = ptr + size;
|
||||
for (; ptr < opl; ptr += 1){
|
||||
result = ((result << 5) + result) + *ptr;
|
||||
}
|
||||
return(result);
|
||||
}
|
||||
|
||||
RADDBG_PROC RADDBG_U32
|
||||
raddbg_size_from_basic_type_kind(RADDBG_TypeKind kind){
|
||||
RADDBG_U32 result = 0;
|
||||
switch (kind){
|
||||
#define X(N,C)
|
||||
#define XZ(N,C,Z) case C: result = Z; break;
|
||||
#define Y(A,N)
|
||||
RADDBG_TypeKindXList(X,XZ,Y)
|
||||
#undef X
|
||||
#undef XZ
|
||||
#undef Y
|
||||
}
|
||||
return(result);
|
||||
}
|
||||
|
||||
RADDBG_PROC RADDBG_U32
|
||||
raddbg_addr_size_from_arch(RADDBG_Arch arch){
|
||||
RADDBG_U32 result = 0;
|
||||
switch (arch){
|
||||
#define X(N,C,Z) case C: result = Z; break;
|
||||
RADDBG_ArchXList(X)
|
||||
#undef X
|
||||
}
|
||||
return(result);
|
||||
}
|
||||
|
||||
//- eval helpers
|
||||
|
||||
RADDBG_PROC RADDBG_EvalConversionKind
|
||||
raddbg_eval_conversion_rule(RADDBG_EvalTypeGroup in, RADDBG_EvalTypeGroup out){
|
||||
RADDBG_EvalConversionKind result = 0;
|
||||
switch (in + (out << 8)){
|
||||
#define Y(i,o) case ((RADDBG_EvalTypeGroup_##i) + ((RADDBG_EvalTypeGroup_##o) << 8)):
|
||||
#define Xb(c)
|
||||
#define Xe(c) result = RADDBG_EvalConversionKind_##c; break;
|
||||
RADDBG_EvalConversionKindFromTypeGroupPairMap(Y,Xb,Xe)
|
||||
#undef Xe
|
||||
#undef Xb
|
||||
#undef Y
|
||||
}
|
||||
return(result);
|
||||
}
|
||||
|
||||
RADDBG_PROC RADDBG_U8*
|
||||
raddbg_eval_conversion_message(RADDBG_EvalConversionKind conversion_kind, RADDBG_U64 *lenout){
|
||||
RADDBG_U8 *result = 0;
|
||||
switch (conversion_kind){
|
||||
#define X(N,msg) \
|
||||
case RADDBG_EvalConversionKind_##N: result = (RADDBG_U8*)msg; *lenout = sizeof(msg) - 1; break;
|
||||
RADDBG_EvalConversionKindXList(X)
|
||||
#undef X
|
||||
}
|
||||
return(result);
|
||||
}
|
||||
|
||||
RADDBG_PROC RADDBG_S32
|
||||
raddbg_eval_opcode_type_compatible(RADDBG_EvalOp op, RADDBG_EvalTypeGroup group){
|
||||
RADDBG_S32 result = 0;
|
||||
switch (op){
|
||||
case RADDBG_EvalOp_Neg: case RADDBG_EvalOp_Add: case RADDBG_EvalOp_Sub:
|
||||
case RADDBG_EvalOp_Mul: case RADDBG_EvalOp_Div:
|
||||
case RADDBG_EvalOp_EqEq:case RADDBG_EvalOp_NtEq:
|
||||
case RADDBG_EvalOp_LsEq:case RADDBG_EvalOp_GrEq:
|
||||
case RADDBG_EvalOp_Less:case RADDBG_EvalOp_Grtr:
|
||||
{
|
||||
if (group != RADDBG_EvalTypeGroup_Other){
|
||||
result = 1;
|
||||
}
|
||||
}break;
|
||||
case RADDBG_EvalOp_Mod:case RADDBG_EvalOp_LShift:case RADDBG_EvalOp_RShift:
|
||||
case RADDBG_EvalOp_BitNot:case RADDBG_EvalOp_BitAnd:case RADDBG_EvalOp_BitXor:
|
||||
case RADDBG_EvalOp_BitOr:case RADDBG_EvalOp_LogNot:case RADDBG_EvalOp_LogAnd:
|
||||
case RADDBG_EvalOp_LogOr:
|
||||
{
|
||||
if (group == RADDBG_EvalTypeGroup_S || group == RADDBG_EvalTypeGroup_U){
|
||||
result = 1;
|
||||
}
|
||||
}break;
|
||||
}
|
||||
return(result);
|
||||
}
|
||||
Reference in new issue
Block a user