mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-08-03 20:38:40 +00:00
initial upload
This commit is contained in:
+115
@@ -0,0 +1,115 @@
|
||||
// Copyright (c) 2024 Epic Games Tools
|
||||
// Licensed under the MIT license (https://opensource.org/license/mit/)
|
||||
|
||||
#ifndef REGS_H
|
||||
#define REGS_H
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Register Usage Kinds
|
||||
|
||||
typedef enum REGS_UsageKind
|
||||
{
|
||||
REGS_UsageKind_Normal,
|
||||
REGS_UsageKind_Vector,
|
||||
}
|
||||
REGS_UsageKind;
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Register Types
|
||||
|
||||
typedef U8 REGS_RegCode;
|
||||
typedef U8 REGS_AliasCode;
|
||||
|
||||
typedef union REGS_Reg16 REGS_Reg16;
|
||||
union REGS_Reg16
|
||||
{
|
||||
U8 v[2];
|
||||
U16 u16;
|
||||
};
|
||||
|
||||
typedef union REGS_Reg32 REGS_Reg32;
|
||||
union REGS_Reg32
|
||||
{
|
||||
U8 v[4];
|
||||
U32 u32;
|
||||
F32 f32;
|
||||
};
|
||||
|
||||
typedef union REGS_Reg64 REGS_Reg64;
|
||||
union REGS_Reg64
|
||||
{
|
||||
U8 v[8];
|
||||
U64 u64;
|
||||
F64 f64;
|
||||
};
|
||||
|
||||
#pragma pack(push, 1)
|
||||
typedef struct REGS_Reg80 REGS_Reg80;
|
||||
struct REGS_Reg80
|
||||
{
|
||||
U64 int1_frac63;
|
||||
U16 sign1_exp15;
|
||||
};
|
||||
#pragma pack(pop)
|
||||
|
||||
typedef union REGS_Reg128 REGS_Reg128;
|
||||
union REGS_Reg128
|
||||
{
|
||||
U8 v[16];
|
||||
U32 u32[4];
|
||||
F32 f32[4];
|
||||
U64 u64[2];
|
||||
F64 f64[2];
|
||||
};
|
||||
|
||||
typedef union REGS_Reg256 REGS_Reg256;
|
||||
union REGS_Reg256
|
||||
{
|
||||
U8 v[32];
|
||||
U32 u32[8];
|
||||
F32 f32[8];
|
||||
U64 u64[4];
|
||||
F64 f64[4];
|
||||
};
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Register Slicing Types
|
||||
|
||||
typedef struct REGS_Rng REGS_Rng;
|
||||
struct REGS_Rng
|
||||
{
|
||||
U16 byte_off;
|
||||
U16 byte_size;
|
||||
};
|
||||
|
||||
typedef struct REGS_Slice REGS_Slice;
|
||||
struct REGS_Slice
|
||||
{
|
||||
U16 code;
|
||||
U8 byte_off;
|
||||
U8 byte_size;
|
||||
};
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Generated Code
|
||||
|
||||
#include "regs/generated/regs.meta.h"
|
||||
|
||||
////////////////////////////////
|
||||
//~ rjf: Helpers
|
||||
|
||||
internal U64 regs_block_size_from_architecture(Architecture arch);
|
||||
internal U64 regs_reg_code_count_from_architecture(Architecture arch);
|
||||
internal U64 regs_alias_code_count_from_architecture(Architecture arch);
|
||||
internal String8 *regs_reg_code_string_table_from_architecture(Architecture arch);
|
||||
internal String8 *regs_alias_code_string_table_from_architecture(Architecture arch);
|
||||
internal REGS_Rng *regs_reg_code_rng_table_from_architecture(Architecture arch);
|
||||
internal REGS_Slice *regs_alias_code_slice_table_from_architecture(Architecture arch);
|
||||
internal REGS_UsageKind *regs_reg_code_usage_kind_table_from_architecture(Architecture arch);
|
||||
internal REGS_UsageKind *regs_alias_code_usage_kind_table_from_architecture(Architecture arch);
|
||||
internal U64 regs_rip_from_arch_block(Architecture arch, void *block);
|
||||
internal U64 regs_rsp_from_arch_block(Architecture arch, void *block);
|
||||
internal void regs_arch_block_write_rip(Architecture arch, void *block, U64 rip);
|
||||
internal void regs_arch_block_write_rsp(Architecture arch, void *block, U64 rsp);
|
||||
|
||||
#endif // REGS_H
|
||||
Reference in New Issue
Block a user