mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-08-06 13:58:40 +00:00
initial pass of moving rdi definitions to metacode tables
This commit is contained in:
@@ -60,8 +60,8 @@ if "%msvc%"=="1" set EHsc=/EHsc
|
|||||||
if "%clang%"=="1" set EHsc=
|
if "%clang%"=="1" set EHsc=
|
||||||
if "%msvc%"=="1" set no_aslr=/DYNAMICBASE:NO
|
if "%msvc%"=="1" set no_aslr=/DYNAMICBASE:NO
|
||||||
if "%clang%"=="1" set no_aslr=
|
if "%clang%"=="1" set no_aslr=
|
||||||
if "%msvc%"=="1" set rc=call rc
|
if "%msvc%"=="1" set rc=call rc
|
||||||
if "%clang%"=="1" set rc=call llvm-rc
|
if "%clang%"=="1" set rc=call llvm-rc
|
||||||
|
|
||||||
:: --- Choose Compile/Link Lines ----------------------------------------------
|
:: --- Choose Compile/Link Lines ----------------------------------------------
|
||||||
if "%msvc%"=="1" set compile_debug=%cl_debug%
|
if "%msvc%"=="1" set compile_debug=%cl_debug%
|
||||||
|
|||||||
+1
-1
@@ -47,7 +47,7 @@ commands =
|
|||||||
{
|
{
|
||||||
.rjf_f1 =
|
.rjf_f1 =
|
||||||
{
|
{
|
||||||
.win = "build raddbg telemetry",
|
.win = "build only_meta",
|
||||||
.linux = "",
|
.linux = "",
|
||||||
.out = "*compilation*",
|
.out = "*compilation*",
|
||||||
.footer_panel = true,
|
.footer_panel = true,
|
||||||
|
|||||||
@@ -0,0 +1,8 @@
|
|||||||
|
// Copyright (c) 2024 Epic Games Tools
|
||||||
|
// Licensed under the MIT license (https://opensource.org/license/mit/)
|
||||||
|
|
||||||
|
//- GENERATED CODE
|
||||||
|
|
||||||
|
C_LINKAGE_BEGIN
|
||||||
|
C_LINKAGE_END
|
||||||
|
|
||||||
@@ -0,0 +1,253 @@
|
|||||||
|
// Copyright (c) 2024 Epic Games Tools
|
||||||
|
// Licensed under the MIT license (https://opensource.org/license/mit/)
|
||||||
|
|
||||||
|
//- GENERATED CODE
|
||||||
|
|
||||||
|
#ifndef RDI_FORMAT_META_H
|
||||||
|
#define RDI_FORMAT_META_H
|
||||||
|
|
||||||
|
typedef RDI_U32 RDI_DataSectionTag;
|
||||||
|
typedef enum RDI_DataSectionTagEnum
|
||||||
|
{
|
||||||
|
RDI_DataSectionTag_NULL = 0x0000,
|
||||||
|
RDI_DataSectionTag_TopLevelInfo = 0x0001,
|
||||||
|
RDI_DataSectionTag_StringData = 0x0002,
|
||||||
|
RDI_DataSectionTag_StringTable = 0x0003,
|
||||||
|
RDI_DataSectionTag_IndexRuns = 0x0004,
|
||||||
|
RDI_DataSectionTag_BinarySections = 0x0005,
|
||||||
|
RDI_DataSectionTag_FilePathNodes = 0x0006,
|
||||||
|
RDI_DataSectionTag_SourceFiles = 0x0007,
|
||||||
|
RDI_DataSectionTag_Units = 0x0008,
|
||||||
|
RDI_DataSectionTag_UnitVmap = 0x0009,
|
||||||
|
RDI_DataSectionTag_TypeNodes = 0x000A,
|
||||||
|
RDI_DataSectionTag_UDTs = 0x000B,
|
||||||
|
RDI_DataSectionTag_Members = 0x000C,
|
||||||
|
RDI_DataSectionTag_EnumMembers = 0x000D,
|
||||||
|
RDI_DataSectionTag_GlobalVariables = 0x000E,
|
||||||
|
RDI_DataSectionTag_GlobalVmap = 0x000F,
|
||||||
|
RDI_DataSectionTag_ThreadVariables = 0x0010,
|
||||||
|
RDI_DataSectionTag_Procedures = 0x0011,
|
||||||
|
RDI_DataSectionTag_Scopes = 0x0012,
|
||||||
|
RDI_DataSectionTag_ScopeVoffData = 0x0013,
|
||||||
|
RDI_DataSectionTag_ScopeVmap = 0x0014,
|
||||||
|
RDI_DataSectionTag_Locals = 0x0015,
|
||||||
|
RDI_DataSectionTag_LocationBlocks = 0x0016,
|
||||||
|
RDI_DataSectionTag_LocationData = 0x0017,
|
||||||
|
RDI_DataSectionTag_NameMaps = 0x0018,
|
||||||
|
RDI_DataSectionTag_PRIMARY_COUNT = 0x0019,
|
||||||
|
RDI_DataSectionTag_SKIP = RDI_DataSectionTag_SECONDARY|0x0000,
|
||||||
|
RDI_DataSectionTag_LineInfoVoffs = RDI_DataSectionTag_SECONDARY|0x0001,
|
||||||
|
RDI_DataSectionTag_LineInfoData = RDI_DataSectionTag_SECONDARY|0x0002,
|
||||||
|
RDI_DataSectionTag_LineInfoColumns = RDI_DataSectionTag_SECONDARY|0x0003,
|
||||||
|
RDI_DataSectionTag_LineMapNumbers = RDI_DataSectionTag_SECONDARY|0x0004,
|
||||||
|
RDI_DataSectionTag_LineMapRanges = RDI_DataSectionTag_SECONDARY|0x0005,
|
||||||
|
RDI_DataSectionTag_LineMapVoffs = RDI_DataSectionTag_SECONDARY|0x0006,
|
||||||
|
RDI_DataSectionTag_NameMapBuckets = RDI_DataSectionTag_SECONDARY|0x0007,
|
||||||
|
RDI_DataSectionTag_NameMapNodes = RDI_DataSectionTag_SECONDARY|0x0008,
|
||||||
|
} RDI_DataSectionTagEnum;
|
||||||
|
|
||||||
|
typedef RDI_U32 RDI_DataSectionEncoding;
|
||||||
|
typedef enum RDI_DataSectionEncodingEnum
|
||||||
|
{
|
||||||
|
RDI_DataSectionEncoding_Unpacked = 0,
|
||||||
|
RDI_DataSectionEncoding_LZB = 1,
|
||||||
|
} RDI_DataSectionEncodingEnum;
|
||||||
|
|
||||||
|
typedef RDI_U32 RDI_Arch;
|
||||||
|
typedef enum RDI_ArchEnum
|
||||||
|
{
|
||||||
|
RDI_Arch_NULL = 0,
|
||||||
|
RDI_Arch_X86 = 1,
|
||||||
|
RDI_Arch_X64 = 2,
|
||||||
|
} RDI_ArchEnum;
|
||||||
|
|
||||||
|
typedef enum RDI_RegCodeX86
|
||||||
|
{
|
||||||
|
RDI_RegCodeX86_nil = 0,
|
||||||
|
RDI_RegCodeX86_eax = 1,
|
||||||
|
RDI_RegCodeX86_ecx = 2,
|
||||||
|
RDI_RegCodeX86_edx = 3,
|
||||||
|
RDI_RegCodeX86_ebx = 4,
|
||||||
|
RDI_RegCodeX86_esp = 5,
|
||||||
|
RDI_RegCodeX86_ebp = 6,
|
||||||
|
RDI_RegCodeX86_esi = 7,
|
||||||
|
RDI_RegCodeX86_edi = 8,
|
||||||
|
RDI_RegCodeX86_fsbase = 9,
|
||||||
|
RDI_RegCodeX86_gsbase = 10,
|
||||||
|
RDI_RegCodeX86_eflags = 11,
|
||||||
|
RDI_RegCodeX86_eip = 12,
|
||||||
|
RDI_RegCodeX86_dr0 = 13,
|
||||||
|
RDI_RegCodeX86_dr1 = 14,
|
||||||
|
RDI_RegCodeX86_dr2 = 15,
|
||||||
|
RDI_RegCodeX86_dr3 = 16,
|
||||||
|
RDI_RegCodeX86_dr4 = 17,
|
||||||
|
RDI_RegCodeX86_dr5 = 18,
|
||||||
|
RDI_RegCodeX86_dr6 = 19,
|
||||||
|
RDI_RegCodeX86_dr7 = 20,
|
||||||
|
RDI_RegCodeX86_fpr0 = 21,
|
||||||
|
RDI_RegCodeX86_fpr1 = 22,
|
||||||
|
RDI_RegCodeX86_fpr2 = 23,
|
||||||
|
RDI_RegCodeX86_fpr3 = 24,
|
||||||
|
RDI_RegCodeX86_fpr4 = 25,
|
||||||
|
RDI_RegCodeX86_fpr5 = 26,
|
||||||
|
RDI_RegCodeX86_fpr6 = 27,
|
||||||
|
RDI_RegCodeX86_fpr7 = 28,
|
||||||
|
RDI_RegCodeX86_st0 = 29,
|
||||||
|
RDI_RegCodeX86_st1 = 30,
|
||||||
|
RDI_RegCodeX86_st2 = 31,
|
||||||
|
RDI_RegCodeX86_st3 = 32,
|
||||||
|
RDI_RegCodeX86_st4 = 33,
|
||||||
|
RDI_RegCodeX86_st5 = 34,
|
||||||
|
RDI_RegCodeX86_st6 = 35,
|
||||||
|
RDI_RegCodeX86_st7 = 36,
|
||||||
|
RDI_RegCodeX86_fcw = 37,
|
||||||
|
RDI_RegCodeX86_fsw = 38,
|
||||||
|
RDI_RegCodeX86_ftw = 39,
|
||||||
|
RDI_RegCodeX86_fop = 40,
|
||||||
|
RDI_RegCodeX86_fcs = 41,
|
||||||
|
RDI_RegCodeX86_fds = 42,
|
||||||
|
RDI_RegCodeX86_fip = 43,
|
||||||
|
RDI_RegCodeX86_fdp = 44,
|
||||||
|
RDI_RegCodeX86_mxcsr = 45,
|
||||||
|
RDI_RegCodeX86_mxcsr_mask = 46,
|
||||||
|
RDI_RegCodeX86_ss = 47,
|
||||||
|
RDI_RegCodeX86_cs = 48,
|
||||||
|
RDI_RegCodeX86_ds = 49,
|
||||||
|
RDI_RegCodeX86_es = 50,
|
||||||
|
RDI_RegCodeX86_fs = 51,
|
||||||
|
RDI_RegCodeX86_gs = 52,
|
||||||
|
RDI_RegCodeX86_ymm0 = 53,
|
||||||
|
RDI_RegCodeX86_ymm1 = 54,
|
||||||
|
RDI_RegCodeX86_ymm2 = 55,
|
||||||
|
RDI_RegCodeX86_ymm3 = 56,
|
||||||
|
RDI_RegCodeX86_ymm4 = 57,
|
||||||
|
RDI_RegCodeX86_ymm5 = 58,
|
||||||
|
RDI_RegCodeX86_ymm6 = 59,
|
||||||
|
RDI_RegCodeX86_ymm7 = 60,
|
||||||
|
} RDI_RegCodeX86;
|
||||||
|
|
||||||
|
typedef enum RDI_RegCodeX64
|
||||||
|
{
|
||||||
|
RDI_RegCodeX64_nil = 0,
|
||||||
|
RDI_RegCodeX64_rax = 1,
|
||||||
|
RDI_RegCodeX64_rcx = 2,
|
||||||
|
RDI_RegCodeX64_rdx = 3,
|
||||||
|
RDI_RegCodeX64_rbx = 4,
|
||||||
|
RDI_RegCodeX64_rsp = 5,
|
||||||
|
RDI_RegCodeX64_rbp = 6,
|
||||||
|
RDI_RegCodeX64_rsi = 7,
|
||||||
|
RDI_RegCodeX64_rdi = 8,
|
||||||
|
RDI_RegCodeX64_r8 = 9,
|
||||||
|
RDI_RegCodeX64_r9 = 10,
|
||||||
|
RDI_RegCodeX64_r10 = 11,
|
||||||
|
RDI_RegCodeX64_r11 = 12,
|
||||||
|
RDI_RegCodeX64_r12 = 13,
|
||||||
|
RDI_RegCodeX64_r13 = 14,
|
||||||
|
RDI_RegCodeX64_r14 = 15,
|
||||||
|
RDI_RegCodeX64_r15 = 16,
|
||||||
|
RDI_RegCodeX64_es = 17,
|
||||||
|
RDI_RegCodeX64_cs = 18,
|
||||||
|
RDI_RegCodeX64_ss = 19,
|
||||||
|
RDI_RegCodeX64_ds = 20,
|
||||||
|
RDI_RegCodeX64_fs = 21,
|
||||||
|
RDI_RegCodeX64_gs = 22,
|
||||||
|
RDI_RegCodeX64_rip = 23,
|
||||||
|
RDI_RegCodeX64_rflags = 24,
|
||||||
|
RDI_RegCodeX64_dr0 = 25,
|
||||||
|
RDI_RegCodeX64_dr1 = 26,
|
||||||
|
RDI_RegCodeX64_dr2 = 27,
|
||||||
|
RDI_RegCodeX64_dr3 = 28,
|
||||||
|
RDI_RegCodeX64_dr4 = 29,
|
||||||
|
RDI_RegCodeX64_dr5 = 30,
|
||||||
|
RDI_RegCodeX64_dr6 = 31,
|
||||||
|
RDI_RegCodeX64_dr7 = 32,
|
||||||
|
RDI_RegCodeX64_st0 = 33,
|
||||||
|
RDI_RegCodeX64_st1 = 34,
|
||||||
|
RDI_RegCodeX64_st2 = 35,
|
||||||
|
RDI_RegCodeX64_st3 = 36,
|
||||||
|
RDI_RegCodeX64_st4 = 37,
|
||||||
|
RDI_RegCodeX64_st5 = 38,
|
||||||
|
RDI_RegCodeX64_st6 = 39,
|
||||||
|
RDI_RegCodeX64_st7 = 40,
|
||||||
|
RDI_RegCodeX64_fpr0 = 41,
|
||||||
|
RDI_RegCodeX64_fpr1 = 42,
|
||||||
|
RDI_RegCodeX64_fpr2 = 43,
|
||||||
|
RDI_RegCodeX64_fpr3 = 44,
|
||||||
|
RDI_RegCodeX64_fpr4 = 45,
|
||||||
|
RDI_RegCodeX64_fpr5 = 46,
|
||||||
|
RDI_RegCodeX64_fpr6 = 47,
|
||||||
|
RDI_RegCodeX64_fpr7 = 48,
|
||||||
|
RDI_RegCodeX64_ymm0 = 49,
|
||||||
|
RDI_RegCodeX64_ymm1 = 50,
|
||||||
|
RDI_RegCodeX64_ymm2 = 51,
|
||||||
|
RDI_RegCodeX64_ymm3 = 52,
|
||||||
|
RDI_RegCodeX64_ymm4 = 53,
|
||||||
|
RDI_RegCodeX64_ymm5 = 54,
|
||||||
|
RDI_RegCodeX64_ymm6 = 55,
|
||||||
|
RDI_RegCodeX64_ymm7 = 56,
|
||||||
|
RDI_RegCodeX64_ymm8 = 57,
|
||||||
|
RDI_RegCodeX64_ymm9 = 58,
|
||||||
|
RDI_RegCodeX64_ymm10 = 59,
|
||||||
|
RDI_RegCodeX64_ymm11 = 60,
|
||||||
|
RDI_RegCodeX64_ymm12 = 61,
|
||||||
|
RDI_RegCodeX64_ymm13 = 62,
|
||||||
|
RDI_RegCodeX64_ymm14 = 63,
|
||||||
|
RDI_RegCodeX64_ymm15 = 64,
|
||||||
|
RDI_RegCodeX64_mxcsr = 65,
|
||||||
|
RDI_RegCodeX64_fsbase = 66,
|
||||||
|
RDI_RegCodeX64_gsbase = 67,
|
||||||
|
RDI_RegCodeX64_fcw = 68,
|
||||||
|
RDI_RegCodeX64_fsw = 69,
|
||||||
|
RDI_RegCodeX64_ftw = 70,
|
||||||
|
RDI_RegCodeX64_fop = 71,
|
||||||
|
RDI_RegCodeX64_fcs = 72,
|
||||||
|
RDI_RegCodeX64_fds = 73,
|
||||||
|
RDI_RegCodeX64_fip = 74,
|
||||||
|
RDI_RegCodeX64_fdp = 75,
|
||||||
|
RDI_RegCodeX64_mxcsr_mask = 76,
|
||||||
|
} RDI_RegCodeX64;
|
||||||
|
|
||||||
|
typedef RDI_U32 RDI_BinarySectionFlags;
|
||||||
|
typedef enum RDI_BinarySectionFlagsEnum
|
||||||
|
{
|
||||||
|
RDI_BinarySectionFlags_Read = 1<<0,
|
||||||
|
RDI_BinarySectionFlags_Write = 1<<1,
|
||||||
|
RDI_BinarySectionFlags_Execute = 1<<2,
|
||||||
|
} RDI_BinarySectionFlagsEnum;
|
||||||
|
|
||||||
|
typedef struct RDI_Header RDI_Header;
|
||||||
|
struct RDI_Header
|
||||||
|
{
|
||||||
|
RDI_U64 magic;
|
||||||
|
RDI_U32 encoding_version;
|
||||||
|
RDI_U32 data_section_off;
|
||||||
|
RDI_U32 data_section_count;
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct RDI_DataSection RDI_DataSection;
|
||||||
|
struct RDI_DataSection
|
||||||
|
{
|
||||||
|
RDI_DataSectionTag tag;
|
||||||
|
RDI_DataSectionEncoding encoding;
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct RDI_VMapEntry RDI_VMapEntry;
|
||||||
|
struct RDI_VMapEntry
|
||||||
|
{
|
||||||
|
RDI_U64 voff;
|
||||||
|
RDI_U64 idx;
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct RDI_TopLevelInfo RDI_TopLevelInfo;
|
||||||
|
struct RDI_TopLevelInfo
|
||||||
|
{
|
||||||
|
RDI_Arch arch;
|
||||||
|
RDI_U32 exe_name_string_idx;
|
||||||
|
RDI_U64 exe_hash;
|
||||||
|
RDI_U64 voff_max;
|
||||||
|
};
|
||||||
|
|
||||||
|
C_LINKAGE_BEGIN
|
||||||
|
C_LINKAGE_END
|
||||||
|
|
||||||
|
#endif // RDI_FORMAT_META_H
|
||||||
@@ -0,0 +1,766 @@
|
|||||||
|
// Copyright (c) 2024 Epic Games Tools
|
||||||
|
// Licensed under the MIT license (https://opensource.org/license/mit/)
|
||||||
|
|
||||||
|
////////////////////////////////
|
||||||
|
//~ rjf: Format Header Tables
|
||||||
|
|
||||||
|
@table(name type desc)
|
||||||
|
RDI_HeaderMemberTable:
|
||||||
|
{
|
||||||
|
{magic RDI_U64 ""}
|
||||||
|
{encoding_version RDI_U32 ""}
|
||||||
|
{data_section_off RDI_U32 ""}
|
||||||
|
{data_section_count RDI_U32 ""}
|
||||||
|
}
|
||||||
|
|
||||||
|
@struct RDI_Header:
|
||||||
|
{
|
||||||
|
@expand(RDI_HeaderMemberTable a) `$(a.type) $(a.name)`
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////
|
||||||
|
//~ rjf: Format Data Section Tables
|
||||||
|
|
||||||
|
@constant RDI_DataSectionTag_SECONDARY: 0x80000000
|
||||||
|
|
||||||
|
@table(name value desc)
|
||||||
|
RDI_DataSectionTable:
|
||||||
|
{
|
||||||
|
{NULL 0x0000 ""}
|
||||||
|
{TopLevelInfo 0x0001 ""}
|
||||||
|
{StringData 0x0002 ""}
|
||||||
|
{StringTable 0x0003 ""}
|
||||||
|
{IndexRuns 0x0004 ""}
|
||||||
|
{BinarySections 0x0005 ""}
|
||||||
|
{FilePathNodes 0x0006 ""}
|
||||||
|
{SourceFiles 0x0007 ""}
|
||||||
|
{Units 0x0008 ""}
|
||||||
|
{UnitVmap 0x0009 ""}
|
||||||
|
{TypeNodes 0x000A ""}
|
||||||
|
{UDTs 0x000B ""}
|
||||||
|
{Members 0x000C ""}
|
||||||
|
{EnumMembers 0x000D ""}
|
||||||
|
{GlobalVariables 0x000E ""}
|
||||||
|
{GlobalVmap 0x000F ""}
|
||||||
|
{ThreadVariables 0x0010 ""}
|
||||||
|
{Procedures 0x0011 ""}
|
||||||
|
{Scopes 0x0012 ""}
|
||||||
|
{ScopeVoffData 0x0013 ""}
|
||||||
|
{ScopeVmap 0x0014 ""}
|
||||||
|
{Locals 0x0015 ""}
|
||||||
|
{LocationBlocks 0x0016 ""}
|
||||||
|
{LocationData 0x0017 ""}
|
||||||
|
{NameMaps 0x0018 ""}
|
||||||
|
{PRIMARY_COUNT 0x0019 ""}
|
||||||
|
{SKIP `RDI_DataSectionTag_SECONDARY|0x0000` ""}
|
||||||
|
{LineInfoVoffs `RDI_DataSectionTag_SECONDARY|0x0001` ""}
|
||||||
|
{LineInfoData `RDI_DataSectionTag_SECONDARY|0x0002` ""}
|
||||||
|
{LineInfoColumns `RDI_DataSectionTag_SECONDARY|0x0003` ""}
|
||||||
|
{LineMapNumbers `RDI_DataSectionTag_SECONDARY|0x0004` ""}
|
||||||
|
{LineMapRanges `RDI_DataSectionTag_SECONDARY|0x0005` ""}
|
||||||
|
{LineMapVoffs `RDI_DataSectionTag_SECONDARY|0x0006` ""}
|
||||||
|
{NameMapBuckets `RDI_DataSectionTag_SECONDARY|0x0007` ""}
|
||||||
|
{NameMapNodes `RDI_DataSectionTag_SECONDARY|0x0008` ""}
|
||||||
|
}
|
||||||
|
|
||||||
|
@table(name value)
|
||||||
|
RDI_DataSectionEncodingTable:
|
||||||
|
{
|
||||||
|
{Unpacked 0}
|
||||||
|
{LZB 1}
|
||||||
|
}
|
||||||
|
|
||||||
|
@table(name type desc)
|
||||||
|
RDI_DataSectionMemberTable:
|
||||||
|
{
|
||||||
|
{tag RDI_DataSectionTag ""}
|
||||||
|
{encoding RDI_DataSectionEncoding ""}
|
||||||
|
}
|
||||||
|
|
||||||
|
@enum(RDI_U32) RDI_DataSectionTag:
|
||||||
|
{
|
||||||
|
@expand(RDI_DataSectionTable a) `$(a.name .. =>20) = $(a.value)`,
|
||||||
|
}
|
||||||
|
|
||||||
|
@enum(RDI_U32) RDI_DataSectionEncoding:
|
||||||
|
{
|
||||||
|
@expand(RDI_DataSectionEncodingTable a) `$(a.name .. =>10) = $(a.value)`,
|
||||||
|
}
|
||||||
|
|
||||||
|
@struct RDI_DataSection:
|
||||||
|
{
|
||||||
|
@expand(RDI_DataSectionMemberTable a) `$(a.type) $(a.name)`
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////
|
||||||
|
//~ rjf: Common Type Tables
|
||||||
|
|
||||||
|
@table(name type desc)
|
||||||
|
RDI_VMapEntryMemberTable:
|
||||||
|
{
|
||||||
|
{voff RDI_U64 ""}
|
||||||
|
{idx RDI_U64 ""}
|
||||||
|
}
|
||||||
|
|
||||||
|
@struct RDI_VMapEntry:
|
||||||
|
{
|
||||||
|
@expand(RDI_VMapEntryMemberTable a) `$(a.type) $(a.name)`
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////
|
||||||
|
//~ rjf: Architecture Info Tables
|
||||||
|
|
||||||
|
@table(name value addr_size)
|
||||||
|
RDI_ArchTable:
|
||||||
|
{
|
||||||
|
{NULL 0 0}
|
||||||
|
{X86 1 4}
|
||||||
|
{X64 2 8}
|
||||||
|
}
|
||||||
|
|
||||||
|
@table(name value)
|
||||||
|
RDI_RegCodeX86Table:
|
||||||
|
{
|
||||||
|
{nil 0}
|
||||||
|
{eax 1}
|
||||||
|
{ecx 2}
|
||||||
|
{edx 3}
|
||||||
|
{ebx 4}
|
||||||
|
{esp 5}
|
||||||
|
{ebp 6}
|
||||||
|
{esi 7}
|
||||||
|
{edi 8}
|
||||||
|
{fsbase 9}
|
||||||
|
{gsbase 10}
|
||||||
|
{eflags 11}
|
||||||
|
{eip 12}
|
||||||
|
{dr0 13}
|
||||||
|
{dr1 14}
|
||||||
|
{dr2 15}
|
||||||
|
{dr3 16}
|
||||||
|
{dr4 17}
|
||||||
|
{dr5 18}
|
||||||
|
{dr6 19}
|
||||||
|
{dr7 20}
|
||||||
|
{fpr0 21}
|
||||||
|
{fpr1 22}
|
||||||
|
{fpr2 23}
|
||||||
|
{fpr3 24}
|
||||||
|
{fpr4 25}
|
||||||
|
{fpr5 26}
|
||||||
|
{fpr6 27}
|
||||||
|
{fpr7 28}
|
||||||
|
{st0 29}
|
||||||
|
{st1 30}
|
||||||
|
{st2 31}
|
||||||
|
{st3 32}
|
||||||
|
{st4 33}
|
||||||
|
{st5 34}
|
||||||
|
{st6 35}
|
||||||
|
{st7 36}
|
||||||
|
{fcw 37}
|
||||||
|
{fsw 38}
|
||||||
|
{ftw 39}
|
||||||
|
{fop 40}
|
||||||
|
{fcs 41}
|
||||||
|
{fds 42}
|
||||||
|
{fip 43}
|
||||||
|
{fdp 44}
|
||||||
|
{mxcsr 45}
|
||||||
|
{mxcsr_mask 46}
|
||||||
|
{ss 47}
|
||||||
|
{cs 48}
|
||||||
|
{ds 49}
|
||||||
|
{es 50}
|
||||||
|
{fs 51}
|
||||||
|
{gs 52}
|
||||||
|
{ymm0 53}
|
||||||
|
{ymm1 54}
|
||||||
|
{ymm2 55}
|
||||||
|
{ymm3 56}
|
||||||
|
{ymm4 57}
|
||||||
|
{ymm5 58}
|
||||||
|
{ymm6 59}
|
||||||
|
{ymm7 60}
|
||||||
|
}
|
||||||
|
|
||||||
|
@table(name value)
|
||||||
|
RDI_RegCodeX64Table:
|
||||||
|
{
|
||||||
|
{nil 0}
|
||||||
|
{rax 1}
|
||||||
|
{rcx 2}
|
||||||
|
{rdx 3}
|
||||||
|
{rbx 4}
|
||||||
|
{rsp 5}
|
||||||
|
{rbp 6}
|
||||||
|
{rsi 7}
|
||||||
|
{rdi 8}
|
||||||
|
{r8 9}
|
||||||
|
{r9 10}
|
||||||
|
{r10 11}
|
||||||
|
{r11 12}
|
||||||
|
{r12 13}
|
||||||
|
{r13 14}
|
||||||
|
{r14 15}
|
||||||
|
{r15 16}
|
||||||
|
{es 17}
|
||||||
|
{cs 18}
|
||||||
|
{ss 19}
|
||||||
|
{ds 20}
|
||||||
|
{fs 21}
|
||||||
|
{gs 22}
|
||||||
|
{rip 23}
|
||||||
|
{rflags 24}
|
||||||
|
{dr0 25}
|
||||||
|
{dr1 26}
|
||||||
|
{dr2 27}
|
||||||
|
{dr3 28}
|
||||||
|
{dr4 29}
|
||||||
|
{dr5 30}
|
||||||
|
{dr6 31}
|
||||||
|
{dr7 32}
|
||||||
|
{st0 33}
|
||||||
|
{st1 34}
|
||||||
|
{st2 35}
|
||||||
|
{st3 36}
|
||||||
|
{st4 37}
|
||||||
|
{st5 38}
|
||||||
|
{st6 39}
|
||||||
|
{st7 40}
|
||||||
|
{fpr0 41}
|
||||||
|
{fpr1 42}
|
||||||
|
{fpr2 43}
|
||||||
|
{fpr3 44}
|
||||||
|
{fpr4 45}
|
||||||
|
{fpr5 46}
|
||||||
|
{fpr6 47}
|
||||||
|
{fpr7 48}
|
||||||
|
{ymm0 49}
|
||||||
|
{ymm1 50}
|
||||||
|
{ymm2 51}
|
||||||
|
{ymm3 52}
|
||||||
|
{ymm4 53}
|
||||||
|
{ymm5 54}
|
||||||
|
{ymm6 55}
|
||||||
|
{ymm7 56}
|
||||||
|
{ymm8 57}
|
||||||
|
{ymm9 58}
|
||||||
|
{ymm10 59}
|
||||||
|
{ymm11 60}
|
||||||
|
{ymm12 61}
|
||||||
|
{ymm13 62}
|
||||||
|
{ymm14 63}
|
||||||
|
{ymm15 64}
|
||||||
|
{mxcsr 65}
|
||||||
|
{fsbase 66}
|
||||||
|
{gsbase 67}
|
||||||
|
{fcw 68}
|
||||||
|
{fsw 69}
|
||||||
|
{ftw 70}
|
||||||
|
{fop 71}
|
||||||
|
{fcs 72}
|
||||||
|
{fds 73}
|
||||||
|
{fip 74}
|
||||||
|
{fdp 75}
|
||||||
|
{mxcsr_mask 76}
|
||||||
|
}
|
||||||
|
|
||||||
|
@enum(RDI_U32) RDI_Arch:
|
||||||
|
{
|
||||||
|
@expand(RDI_ArchTable a) `$(a.name .. =>10) = $(a.value)`
|
||||||
|
}
|
||||||
|
|
||||||
|
@enum RDI_RegCodeX86:
|
||||||
|
{
|
||||||
|
@expand(RDI_RegCodeX86Table a) `$(a.name .. =>10) = $(a.value)`
|
||||||
|
}
|
||||||
|
|
||||||
|
@enum RDI_RegCodeX64:
|
||||||
|
{
|
||||||
|
@expand(RDI_RegCodeX64Table a) `$(a.name .. =>10) = $(a.value)`
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////
|
||||||
|
//~ rjf: Top-Level Info Type Tables
|
||||||
|
|
||||||
|
@table(name type desc)
|
||||||
|
RDI_TopLevelInfoMemberTable:
|
||||||
|
{
|
||||||
|
{arch RDI_Arch ""}
|
||||||
|
{exe_name_string_idx RDI_U32 ""}
|
||||||
|
{exe_hash RDI_U64 ""}
|
||||||
|
{voff_max RDI_U64 ""}
|
||||||
|
}
|
||||||
|
|
||||||
|
@struct RDI_TopLevelInfo:
|
||||||
|
{
|
||||||
|
@expand(RDI_TopLevelInfoMemberTable a) `$(a.type) $(a.name)`
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////
|
||||||
|
//~ rjf: Binary Section Info Type Tables
|
||||||
|
|
||||||
|
@table(name value)
|
||||||
|
RDI_BinarySectionFlagTable:
|
||||||
|
{
|
||||||
|
{Read `1<<0`}
|
||||||
|
{Write `1<<1`}
|
||||||
|
{Execute `1<<2`}
|
||||||
|
}
|
||||||
|
|
||||||
|
@table(name type desc)
|
||||||
|
RDI_BinarySectionMemberTable:
|
||||||
|
{
|
||||||
|
{name_string_idx RDI_U32 ""}
|
||||||
|
{flags RDI_BinarySectionFlags ""}
|
||||||
|
{voff_first RDI_U64 ""}
|
||||||
|
{voff_opl RDI_U64 ""}
|
||||||
|
{foff_first RDI_U64 ""}
|
||||||
|
{foff_opl RDI_U64 ""}
|
||||||
|
}
|
||||||
|
|
||||||
|
@enum(RDI_U32) RDI_BinarySectionFlags:
|
||||||
|
{
|
||||||
|
@expand(RDI_BinarySectionFlagTable a) `$(a.name .. =>10) = $(a.value)`;
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////
|
||||||
|
//~ rjf: File Path Tree Info Type Tables
|
||||||
|
|
||||||
|
@table(name type desc)
|
||||||
|
RDI_FilePathNodeMemberTable:
|
||||||
|
{
|
||||||
|
{name_string_idx RDI_U32 ""}
|
||||||
|
{parent_path_node RDI_U32 ""}
|
||||||
|
{first_child RDI_U32 ""}
|
||||||
|
{next_sibling RDI_U32 ""}
|
||||||
|
{source_file_idx RDI_U32 ""}
|
||||||
|
}
|
||||||
|
|
||||||
|
@table(name type desc)
|
||||||
|
RDI_SourceFileMemberTable:
|
||||||
|
{
|
||||||
|
{file_path_node_idx RDI_U32 ""}
|
||||||
|
{normal_full_path_string_idx RDI_U32 ""}
|
||||||
|
// usage of line map to go from a line number to an array of voffs
|
||||||
|
// (line_map_nums * line_number) -> (nil | index)
|
||||||
|
// (line_map_data * index) -> (range)
|
||||||
|
// (line_map_voff_data * range) -> (array(voff))
|
||||||
|
{line_map_count RDI_U32 ""}
|
||||||
|
{line_map_nums_data_idx RDI_U32 ""} // U32[line_map_count] (sorted - not closed ranges)
|
||||||
|
{line_map_range_data_idx RDI_U32 ""} // U32[line_map_count + 1] (pairs form ranges)
|
||||||
|
{line_map_voff_data_idx RDI_U32 ""} // U64[...] (idx by line_map_range_data)
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////
|
||||||
|
//~ rjf: Unit Info Type Tables
|
||||||
|
|
||||||
|
@table(name type desc)
|
||||||
|
RDI_UnitMemberTable:
|
||||||
|
{
|
||||||
|
{unit_name_string_idx RDI_U32 ""}
|
||||||
|
{compiler_name_string_idx RDI_U32 ""}
|
||||||
|
{source_file_path_node RDI_U32 ""}
|
||||||
|
{object_file_path_node RDI_U32 ""}
|
||||||
|
{archive_file_path_node RDI_U32 ""}
|
||||||
|
{build_path_node RDI_U32 ""}
|
||||||
|
{language RDI_Language ""}
|
||||||
|
// usage of line info to go from voff to file & line number:
|
||||||
|
// (line_info_voffs * voff) -> (nil + index)
|
||||||
|
// (line_info_data * index) -> (RDI_Line = (file_idx * line_number))
|
||||||
|
{line_info_voffs_data_idx RDI_U32 ""} // U64[line_info_count + 1] (sorted ranges)
|
||||||
|
{line_info_data_idx RDI_U32 ""} // RDI_Line[line_info_count]
|
||||||
|
{line_info_col_data_idx RDI_U32 ""} // RDI_Col[line_info_count]
|
||||||
|
{line_info_count RDI_U32 ""}
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////
|
||||||
|
//~ rjf: Line Info Type Tables
|
||||||
|
|
||||||
|
@table(name type desc)
|
||||||
|
RDI_LineMemberTable:
|
||||||
|
{
|
||||||
|
{file_idx RDI_U32 ""}
|
||||||
|
{line_num RDI_U32 ""}
|
||||||
|
}
|
||||||
|
|
||||||
|
@table(name type desc)
|
||||||
|
RDI_ColumnMemberTable:
|
||||||
|
{
|
||||||
|
{col_first RDI_U16 ""}
|
||||||
|
{col_opl RDI_U16 ""}
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////
|
||||||
|
//~ rjf: Language Info Tables
|
||||||
|
|
||||||
|
@table(name value)
|
||||||
|
RDI_LanguageTable:
|
||||||
|
{
|
||||||
|
{NULL 0}
|
||||||
|
{C 1}
|
||||||
|
{CPlusPlus 2}
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////
|
||||||
|
//~ rjf: Type Info Tables
|
||||||
|
|
||||||
|
@table(name value size bookend1 bookend2)
|
||||||
|
RDI_TypeKindTable:
|
||||||
|
{
|
||||||
|
{NULL 0x0000 0 }
|
||||||
|
//-
|
||||||
|
{Void 0x0001 0 FirstBuiltIn }
|
||||||
|
{Handle 0x0002 0xFFFFFFFF }
|
||||||
|
{Char8 0x0003 1 }
|
||||||
|
{Char16 0x0004 2 }
|
||||||
|
{Char32 0x0005 4 }
|
||||||
|
{UChar8 0x0006 1 }
|
||||||
|
{UChar16 0x0007 2 }
|
||||||
|
{UChar32 0x0008 4 }
|
||||||
|
{U8 0x0009 1 }
|
||||||
|
{U16 0x000A 2 }
|
||||||
|
{U32 0x000B 4 }
|
||||||
|
{U64 0x000C 8 }
|
||||||
|
{U128 0x000D 16 }
|
||||||
|
{U256 0x000E 32 }
|
||||||
|
{U512 0x000F 64 }
|
||||||
|
{S8 0x0010 1 }
|
||||||
|
{S16 0x0011 2 }
|
||||||
|
{S32 0x0012 4 }
|
||||||
|
{S64 0x0013 8 }
|
||||||
|
{S128 0x0014 16 }
|
||||||
|
{S256 0x0015 32 }
|
||||||
|
{S512 0x0016 64 }
|
||||||
|
{Bool 0x0017 1 }
|
||||||
|
{F16 0x0018 2 }
|
||||||
|
{F32 0x0019 4 }
|
||||||
|
{F32PP 0x001A 4 }
|
||||||
|
{F48 0x001B 6 }
|
||||||
|
{F64 0x001C 8 }
|
||||||
|
{F80 0x001D 10 }
|
||||||
|
{F128 0x001E 16 }
|
||||||
|
{ComplexF32 0x001F 8 }
|
||||||
|
{ComplexF64 0x0020 16 }
|
||||||
|
{ComplexF80 0x0021 20 }
|
||||||
|
{ComplexF128 0x0022 32 LastBuiltIn }
|
||||||
|
//-
|
||||||
|
{Modifier 0x1000 0 FirstConstructed }
|
||||||
|
{Ptr 0x1001 0 }
|
||||||
|
{LRef 0x1002 0 }
|
||||||
|
{RRef 0x1003 0 }
|
||||||
|
{Array 0x1004 0 }
|
||||||
|
{Function 0x1005 0 }
|
||||||
|
{Method 0x1006 0 }
|
||||||
|
{MemberPtr 0x1007 0 LastConstructed }
|
||||||
|
//-
|
||||||
|
{Struct 0x2000 0 FirstUserDefined FirstRecord }
|
||||||
|
{Class 0x2001 0 }
|
||||||
|
{Union 0x2002 0 LastRecord }
|
||||||
|
{Enum 0x2003 0 }
|
||||||
|
{Alias 0x2004 0 }
|
||||||
|
{IncompleteStruct 0x2005 0 FirstIncomplete }
|
||||||
|
{IncompleteUnion 0x2006 0 }
|
||||||
|
{IncompleteClass 0x2007 0 }
|
||||||
|
{IncompleteEnum 0x2008 0 LastIncomplete LastUserDefined}
|
||||||
|
//-
|
||||||
|
{Bitfield 0xF000 0 }
|
||||||
|
{Variadic 0xF001 0 }
|
||||||
|
}
|
||||||
|
|
||||||
|
@table(name val)
|
||||||
|
RDI_TypeModifierFlagTable:
|
||||||
|
{
|
||||||
|
{Const `1<<0`}
|
||||||
|
{Volatile `1<<1`}
|
||||||
|
}
|
||||||
|
|
||||||
|
@table(name type desc)
|
||||||
|
RDI_TypeNodeMemberTable:
|
||||||
|
{
|
||||||
|
{kind RDI_TypeKind ""}
|
||||||
|
{byte_size RDI_U32 ""}
|
||||||
|
{kind_info `RDI_U32[3]` ""}
|
||||||
|
}
|
||||||
|
|
||||||
|
@table(name val)
|
||||||
|
RDI_UDTFlagTable:
|
||||||
|
{
|
||||||
|
{EnumMembers `1<<0`}
|
||||||
|
}
|
||||||
|
|
||||||
|
@table(name type desc)
|
||||||
|
RDI_UDTMemberTable:
|
||||||
|
{
|
||||||
|
{self_type_idx RDI_U32 ""}
|
||||||
|
{flags RDI_UDTFlags ""}
|
||||||
|
{member_first RDI_U32 ""}
|
||||||
|
{member_count RDI_U32 ""}
|
||||||
|
{file_idx RDI_U32 ""}
|
||||||
|
{line RDI_U32 ""}
|
||||||
|
{col RDI_U32 ""}
|
||||||
|
}
|
||||||
|
|
||||||
|
@table(name val)
|
||||||
|
RDI_MemberKindTable:
|
||||||
|
{
|
||||||
|
{NULL 0x0000}
|
||||||
|
{DataField 0x0001}
|
||||||
|
{StaticData 0x0002}
|
||||||
|
{Method 0x0100}
|
||||||
|
{StaticMethod 0x0101}
|
||||||
|
{VirtualMethod 0x0102}
|
||||||
|
{VTablePtr 0x0200}
|
||||||
|
{Base 0x0201}
|
||||||
|
{VirtualBase 0x0202}
|
||||||
|
{NestedType 0x0300}
|
||||||
|
}
|
||||||
|
|
||||||
|
@table(name type desc)
|
||||||
|
RDI_MemberMemberTable:
|
||||||
|
{
|
||||||
|
{kind RDI_MemberKind ""}
|
||||||
|
{pad RDI_U16 ""}
|
||||||
|
{name_string_idx RDI_U32 ""}
|
||||||
|
{type_idx RDI_U32 ""}
|
||||||
|
{off RDI_U32 ""}
|
||||||
|
}
|
||||||
|
|
||||||
|
@table(name type desc)
|
||||||
|
RDI_EnumMemberTable:
|
||||||
|
{
|
||||||
|
{name_string_idx RDI_U32 ""}
|
||||||
|
{pad RDI_U32 ""}
|
||||||
|
{val RDI_U64 ""}
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////
|
||||||
|
//~ rjf: Symbol Info Tables
|
||||||
|
|
||||||
|
@table(name val)
|
||||||
|
RDI_LinkFlagTable:
|
||||||
|
{
|
||||||
|
{External `1<<0`}
|
||||||
|
{TypeScoped `1<<1`}
|
||||||
|
{ProcScoped `1<<2`}
|
||||||
|
}
|
||||||
|
|
||||||
|
@table(name val)
|
||||||
|
RDI_LocalKindTable:
|
||||||
|
{
|
||||||
|
{NULL 0x0}
|
||||||
|
{Parameter 0x1}
|
||||||
|
{Variable 0x2}
|
||||||
|
}
|
||||||
|
|
||||||
|
@table(name val)
|
||||||
|
RDI_LocationKindTable:
|
||||||
|
{
|
||||||
|
{NULL 0x0}
|
||||||
|
{AddrBytecodeStream 0x1}
|
||||||
|
{ValBytecodeStream 0x2}
|
||||||
|
{AddrRegisterPlusU16 0x3}
|
||||||
|
{AddrAddrRegisterPlusU16 0x4}
|
||||||
|
{ValRegister 0x5}
|
||||||
|
}
|
||||||
|
|
||||||
|
@table(name type desc)
|
||||||
|
RDI_GlobalVariableMemberTable:
|
||||||
|
{
|
||||||
|
{name_string_idx RDI_U32 ""}
|
||||||
|
{link_flags RDI_LinkFlags ""}
|
||||||
|
{voff RDI_U64 ""}
|
||||||
|
{type_idx RDI_U32 ""}
|
||||||
|
{container_idx RDI_U32 ""}
|
||||||
|
}
|
||||||
|
|
||||||
|
@table(name type desc)
|
||||||
|
RDI_ThreadVariableMemberTable:
|
||||||
|
{
|
||||||
|
{name_string_idx RDI_U32 ""}
|
||||||
|
{link_flags RDI_LinkFlags ""}
|
||||||
|
{tls_off RDI_U32 ""}
|
||||||
|
{type_idx RDI_U32 ""}
|
||||||
|
{container_idx RDI_U32 ""}
|
||||||
|
}
|
||||||
|
|
||||||
|
@table(name type desc)
|
||||||
|
RDI_ProcedureMemberTable:
|
||||||
|
{
|
||||||
|
{name_string_idx RDI_U32 ""}
|
||||||
|
{link_name_string_idx RDI_U32 ""}
|
||||||
|
{link_flags RDI_LinkFlags ""}
|
||||||
|
{type_idx RDI_U32 ""}
|
||||||
|
{root_scope_idx RDI_U32 ""}
|
||||||
|
{container_idx RDI_U32 ""}
|
||||||
|
}
|
||||||
|
|
||||||
|
@table(name type desc)
|
||||||
|
RDI_ScopeMemberTable:
|
||||||
|
{
|
||||||
|
{proc_idx RDI_U32 ""}
|
||||||
|
{parent_scope_idx RDI_U32 ""}
|
||||||
|
{first_child_scope_idx RDI_U32 ""}
|
||||||
|
{next_sibling_scope_idx RDI_U32 ""}
|
||||||
|
{voff_range_first RDI_U32 ""}
|
||||||
|
{voff_range_opl RDI_U32 ""}
|
||||||
|
{local_first RDI_U32 ""}
|
||||||
|
{local_count RDI_U32 ""}
|
||||||
|
{static_local_idx_run_first RDI_U32 ""}
|
||||||
|
{static_local_count RDI_U32 ""}
|
||||||
|
}
|
||||||
|
|
||||||
|
@table(name type desc)
|
||||||
|
RDI_LocalMemberTable:
|
||||||
|
{
|
||||||
|
{kind RDI_LocalKind ""}
|
||||||
|
{name_string_idx RDI_U32 ""}
|
||||||
|
{type_idx RDI_U32 ""}
|
||||||
|
{pad RDI_U32 ""}
|
||||||
|
{location_first RDI_U32 ""}
|
||||||
|
{location_opl RDI_U32 ""}
|
||||||
|
}
|
||||||
|
|
||||||
|
@table(name type desc)
|
||||||
|
RDI_LocationBlockMemberTable:
|
||||||
|
{
|
||||||
|
{scope_off_first RDI_U32}
|
||||||
|
{scope_off_opl RDI_U32}
|
||||||
|
{location_data_off RDI_U32}
|
||||||
|
}
|
||||||
|
|
||||||
|
@table(name type desc)
|
||||||
|
RDI_LocationBytecodeStreamMemberTable:
|
||||||
|
{
|
||||||
|
{kind RDI_LocationKind ""}
|
||||||
|
// [... 0] null terminated byte sequence RDI_EvalBytecodeStream
|
||||||
|
}
|
||||||
|
|
||||||
|
@table(name type desc)
|
||||||
|
RDI_LocationRegisterPlusU16MemberTable:
|
||||||
|
{
|
||||||
|
{kind RDI_LocationKind }
|
||||||
|
{register_code RDI_RegisterCode }
|
||||||
|
{offset RDI_U16 }
|
||||||
|
}
|
||||||
|
|
||||||
|
@table(name type desc)
|
||||||
|
RDI_LocationRegister:
|
||||||
|
{
|
||||||
|
{kind RDI_LocationKind }
|
||||||
|
{register_code RDI_RegisterCode }
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////
|
||||||
|
//~ rjf: Evaluation Bytecode Tables
|
||||||
|
|
||||||
|
@table(name num_decodes num_pops num_pushes)
|
||||||
|
RDI_EvalOpTable:
|
||||||
|
{
|
||||||
|
{Stop 0 0 0}
|
||||||
|
{Noop 0 0 0}
|
||||||
|
{Cond 1 1 0}
|
||||||
|
{Skip 1 0 0}
|
||||||
|
{MemRead 1 1 1}
|
||||||
|
{RegRead 4 0 1}
|
||||||
|
{RegReadDyn 0 1 1}
|
||||||
|
{FrameOff 1 0 1}
|
||||||
|
{ModuleOff 4 0 1}
|
||||||
|
{TLSOff 4 0 1}
|
||||||
|
{ObjectOff 0 0 0}
|
||||||
|
{CFA 0 0 0}
|
||||||
|
{ConstU8 1 0 1}
|
||||||
|
{ConstU16 2 0 1}
|
||||||
|
{ConstU32 4 0 1}
|
||||||
|
{ConstU64 8 0 1}
|
||||||
|
{Abs 1 1 1}
|
||||||
|
{Neg 1 1 1}
|
||||||
|
{Add 1 2 1}
|
||||||
|
{Sub 1 2 1}
|
||||||
|
{Mul 1 2 1}
|
||||||
|
{Div 1 2 1}
|
||||||
|
{Mod 1 2 1}
|
||||||
|
{LShift 1 2 1}
|
||||||
|
{RShift 1 2 1}
|
||||||
|
{BitAnd 1 2 1}
|
||||||
|
{BitOr 1 2 1}
|
||||||
|
{BitXor 1 2 1}
|
||||||
|
{BitNot 1 1 1}
|
||||||
|
{LogAnd 1 2 1}
|
||||||
|
{LogOr 1 2 1}
|
||||||
|
{LogNot 1 1 1}
|
||||||
|
{EqEq 1 2 1}
|
||||||
|
{NtEq 1 2 1}
|
||||||
|
{LsEq 1 2 1}
|
||||||
|
{GrEq 1 2 1}
|
||||||
|
{Less 1 2 1}
|
||||||
|
{Grtr 1 2 1}
|
||||||
|
{Trunc 1 1 1}
|
||||||
|
{TruncSigned 1 1 1}
|
||||||
|
{Convert 2 1 1}
|
||||||
|
{Pick 1 0 1}
|
||||||
|
{Pop 0 1 0}
|
||||||
|
{Insert 1 0 0}
|
||||||
|
}
|
||||||
|
|
||||||
|
@table(name val)
|
||||||
|
RDI_EvalTypeGroupTable:
|
||||||
|
{
|
||||||
|
{Other 0}
|
||||||
|
{U 1}
|
||||||
|
{S 2}
|
||||||
|
{F32 3}
|
||||||
|
{F64 4}
|
||||||
|
}
|
||||||
|
|
||||||
|
@table(name val error_string)
|
||||||
|
RDI_EvalConversionKindTable:
|
||||||
|
{
|
||||||
|
{Noop 0 "" }
|
||||||
|
{Legal 1 "" }
|
||||||
|
{OtherToOther 2 "Cannot convert between these types."}
|
||||||
|
{ToOther 3 "Cannot convert to this type." }
|
||||||
|
{FromOther 4 "Cannot convert this type." }
|
||||||
|
}
|
||||||
|
|
||||||
|
////////////////////////////////
|
||||||
|
//~ rjf: Name Map Tables
|
||||||
|
|
||||||
|
@table(name val)
|
||||||
|
RDI_NameMapKindTable:
|
||||||
|
{
|
||||||
|
{NULL 0}
|
||||||
|
{GlobalVariables 1}
|
||||||
|
{ThreadVariables 2}
|
||||||
|
{Procedures 3}
|
||||||
|
{Types 4}
|
||||||
|
{LinkNameProcedures 5}
|
||||||
|
{NormalSourcePaths 6}
|
||||||
|
}
|
||||||
|
|
||||||
|
@table(name type desc)
|
||||||
|
RDI_NameMapMemberTable:
|
||||||
|
{
|
||||||
|
{kind RDI_NameMapKind ""}
|
||||||
|
{bucket_data_idx RDI_U32 ""}
|
||||||
|
{node_data_idx RDI_U32 ""}
|
||||||
|
}
|
||||||
|
|
||||||
|
@table(name type desc)
|
||||||
|
RDI_NameMapBucketMemberTable:
|
||||||
|
{
|
||||||
|
{first_node RDI_U32 ""}
|
||||||
|
{node_count RDI_U32 ""}
|
||||||
|
}
|
||||||
|
|
||||||
|
@table(name type desc)
|
||||||
|
RDI_NameMapNodeMemberTable:
|
||||||
|
{
|
||||||
|
{string_idx RDI_U32 ""}
|
||||||
|
{match_count RDI_U32 ""}
|
||||||
|
// NOTE: if (match_count == 1) then this is the index of the matching item
|
||||||
|
// if (match_count > 1) then this is the first for an index run of all the matches
|
||||||
|
{match_idx_or_idx_run_first RDI_U32 ""}
|
||||||
|
}
|
||||||
|
|
||||||
Reference in New Issue
Block a user