Trait minidump::CpuContext
source · [−]pub trait CpuContext {
type Register: LowerHex;
const REGISTERS: &'static [&'static str];
fn get_register_always(&self, reg: &str) -> Self::Register;
fn set_register(&mut self, reg: &str, val: Self::Register) -> Option<()>;
fn stack_pointer_register_name(&self) -> &'static str;
fn instruction_pointer_register_name(&self) -> &'static str;
fn register_is_valid(
&self,
reg: &str,
valid: &MinidumpContextValidity
) -> bool { ... }
fn get_register(
&self,
reg: &str,
valid: &MinidumpContextValidity
) -> Option<Self::Register> { ... }
fn memoize_register(&self, reg: &str) -> Option<&'static str> { ... }
fn format_register(&self, reg: &str) -> String { ... }
fn registers(&self) -> CpuRegisters<'_, Self>ⓘNotable traits for CpuRegisters<'a, T>impl<'a, T> Iterator for CpuRegisters<'a, T> where
T: CpuContext, type Item = (&'static str, T::Register);
{ ... }
fn valid_registers<'a>(
&'a self,
valid: &'a MinidumpContextValidity
) -> CpuRegisters<'a, Self>ⓘNotable traits for CpuRegisters<'a, T>impl<'a, T> Iterator for CpuRegisters<'a, T> where
T: CpuContext, type Item = (&'static str, T::Register);
{ ... }
}
Expand description
Generic over the specifics of a CPU context.
Associated Types
Associated Constants
const REGISTERS: &'static [&'static str]
const REGISTERS: &'static [&'static str]
General purpose registers in this context type.
Required methods
fn get_register_always(&self, reg: &str) -> Self::Register
fn get_register_always(&self, reg: &str) -> Self::Register
Get a register value regardless of whether it is valid.
Set a register value, if that register name it exists.
Returns None if the register name isn’t supported.
fn stack_pointer_register_name(&self) -> &'static str
fn stack_pointer_register_name(&self) -> &'static str
Gets the name of the stack pointer register (for use with get_register/set_register).
fn instruction_pointer_register_name(&self) -> &'static str
fn instruction_pointer_register_name(&self) -> &'static str
Gets the name of the instruction pointer register (for use with get_register/set_register).
Provided methods
fn register_is_valid(&self, reg: &str, valid: &MinidumpContextValidity) -> bool
fn register_is_valid(&self, reg: &str, valid: &MinidumpContextValidity) -> bool
Gets whether the given register is valid
This is exposed so that the context can map aliases. For instance “lr” and “x30” are aliases in ARM64.
fn get_register(
&self,
reg: &str,
valid: &MinidumpContextValidity
) -> Option<Self::Register>
fn get_register(
&self,
reg: &str,
valid: &MinidumpContextValidity
) -> Option<Self::Register>
Get a register value if it is valid.
Get the value of the register named reg
from this CPU context
if valid
indicates that it has a valid value, otherwise return
None
.
fn memoize_register(&self, reg: &str) -> Option<&'static str>
fn memoize_register(&self, reg: &str) -> Option<&'static str>
Gets a static version of the given register name, if possible.
Returns the default name of the register for register name aliases.
fn format_register(&self, reg: &str) -> String
fn format_register(&self, reg: &str) -> String
Return a String containing the value of reg
formatted to its natural width.
fn registers(&self) -> CpuRegisters<'_, Self>ⓘNotable traits for CpuRegisters<'a, T>impl<'a, T> Iterator for CpuRegisters<'a, T> where
T: CpuContext, type Item = (&'static str, T::Register);
fn registers(&self) -> CpuRegisters<'_, Self>ⓘNotable traits for CpuRegisters<'a, T>impl<'a, T> Iterator for CpuRegisters<'a, T> where
T: CpuContext, type Item = (&'static str, T::Register);
T: CpuContext, type Item = (&'static str, T::Register);
An iterator over all registers in this context.
This iterator yields registers and values regardless of whether the register is valid. To
get valid values, use valid_registers
, instead.
fn valid_registers<'a>(
&'a self,
valid: &'a MinidumpContextValidity
) -> CpuRegisters<'a, Self>ⓘNotable traits for CpuRegisters<'a, T>impl<'a, T> Iterator for CpuRegisters<'a, T> where
T: CpuContext, type Item = (&'static str, T::Register);
fn valid_registers<'a>(
&'a self,
valid: &'a MinidumpContextValidity
) -> CpuRegisters<'a, Self>ⓘNotable traits for CpuRegisters<'a, T>impl<'a, T> Iterator for CpuRegisters<'a, T> where
T: CpuContext, type Item = (&'static str, T::Register);
T: CpuContext, type Item = (&'static str, T::Register);
An iterator over valid registers in this context.
This iterator yields valid registers and their values.