mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-10-09 01:15:41 +00:00
reader for STAP arguments
This commit is contained in:
committed by
Ryan Fleury
parent
bda3a71379
commit
e1a46f7d21
@@ -9,6 +9,54 @@
|
||||
////////////////////////////////
|
||||
//~ rjf: Helpers
|
||||
|
||||
internal REGS_RegCode
|
||||
regs_reg_code_from_name(Arch arch, String8 name)
|
||||
{
|
||||
String8 *name_table = regs_reg_code_string_table_from_arch(arch);
|
||||
U64 name_count = regs_reg_code_count_from_arch(arch);
|
||||
for EachIndex(i, name_count)
|
||||
{
|
||||
if(str8_match(name_table[i], name, StringMatchFlag_CaseInsensitive))
|
||||
{
|
||||
return (REGS_RegCode)i;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
internal REGS_AliasCode
|
||||
regs_alias_code_from_name(Arch arch, String8 name)
|
||||
{
|
||||
String8 *alias_table = regs_alias_code_string_table_from_arch(arch);
|
||||
U64 alias_count = regs_alias_code_count_from_arch(arch);
|
||||
for EachIndex(i, alias_count)
|
||||
{
|
||||
if(str8_match(alias_table[i], name, StringMatchFlag_CaseInsensitive))
|
||||
{
|
||||
return (REGS_RegCode)i;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
internal Rng1U64
|
||||
regs_range_from_code(Arch arch, B32 is_alias, U64 reg_code)
|
||||
{
|
||||
Rng1U64 range = {0};
|
||||
if(is_alias)
|
||||
{
|
||||
REGS_Slice slice = regs_alias_code_slice_table_from_arch(arch)[reg_code];
|
||||
REGS_Rng rng = regs_reg_code_rng_table_from_arch(arch)[reg_code];
|
||||
range = r1u64(rng.byte_off + slice.byte_off, rng.byte_off + slice.byte_off + slice.byte_size);
|
||||
}
|
||||
else
|
||||
{
|
||||
REGS_Rng rng = regs_reg_code_rng_table_from_arch(arch)[reg_code];
|
||||
range = r1u64(rng.byte_off, rng.byte_off + rng.byte_size);
|
||||
}
|
||||
return range;
|
||||
}
|
||||
|
||||
internal U64
|
||||
regs_rip_from_arch_block(Arch arch, void *block)
|
||||
{
|
||||
|
||||
@@ -108,6 +108,9 @@ struct REGS_Slice
|
||||
////////////////////////////////
|
||||
//~ rjf: Helpers
|
||||
|
||||
internal REGS_RegCode regs_reg_code_from_name(Arch arch, String8 name);
|
||||
internal REGS_AliasCode regs_alias_code_from_name(Arch arch, String8 name);
|
||||
internal Rng1U64 regs_range_from_code(Arch arch, B32 is_alias, U64 reg_code);
|
||||
internal U64 regs_block_size_from_arch(Arch arch);
|
||||
internal U64 regs_reg_code_count_from_arch(Arch arch);
|
||||
internal U64 regs_alias_code_count_from_arch(Arch arch);
|
||||
|
||||
Reference in New Issue
Block a user