reader for STAP arguments

This commit is contained in:
Nikita Smith
2025-11-07 14:39:46 -08:00
committed by Ryan Fleury
parent bda3a71379
commit e1a46f7d21
4 changed files with 139 additions and 6 deletions
+48
View File
@@ -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)
{
+3
View File
@@ -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);