Read actual register values
This commit is contained in:
+24
-11
@@ -1,5 +1,7 @@
|
||||
use crate::emulator::VBRegister;
|
||||
|
||||
pub struct RegisterInfo {
|
||||
index: usize,
|
||||
dwarf: u32,
|
||||
name: &'static str,
|
||||
set: &'static str,
|
||||
alt_name: Option<&'static str>,
|
||||
@@ -14,48 +16,59 @@ impl RegisterInfo {
|
||||
}
|
||||
string.push_str(&format!(
|
||||
";bitsize:32;offset:{};encoding:uint;format:hex;set:{};dwarf:{}",
|
||||
self.index * 4,
|
||||
self.dwarf * 4,
|
||||
self.set,
|
||||
self.index
|
||||
self.dwarf
|
||||
));
|
||||
if let Some(generic) = self.generic {
|
||||
string.push_str(&format!(";generic:{}", generic));
|
||||
}
|
||||
string
|
||||
}
|
||||
|
||||
pub fn to_vb_register(&self) -> VBRegister {
|
||||
match self.dwarf {
|
||||
0..32 => VBRegister::Program(self.dwarf),
|
||||
32..40 => VBRegister::System(self.dwarf - 32),
|
||||
40..42 => VBRegister::System(self.dwarf - 16),
|
||||
42..45 => VBRegister::System(self.dwarf - 13),
|
||||
45 => VBRegister::PC,
|
||||
other => panic!("unexpected DWARF register {other}"),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
macro_rules! register {
|
||||
($set:expr, $index:expr, $name:expr) => {
|
||||
($set:expr, $dwarf:expr, $name:expr) => {
|
||||
RegisterInfo {
|
||||
index: $index,
|
||||
dwarf: $dwarf,
|
||||
name: $name,
|
||||
set: $set,
|
||||
alt_name: None,
|
||||
generic: None,
|
||||
}
|
||||
};
|
||||
($set:expr, $index:expr, $name:expr, alt: $alt:expr) => {
|
||||
($set:expr, $dwarf:expr, $name:expr, alt: $alt:expr) => {
|
||||
RegisterInfo {
|
||||
index: $index,
|
||||
dwarf: $dwarf,
|
||||
name: $name,
|
||||
set: $set,
|
||||
alt_name: Some($alt),
|
||||
generic: None,
|
||||
}
|
||||
};
|
||||
($set:expr, $index:expr, $name:expr, generic: $generic:expr) => {
|
||||
($set:expr, $dwarf:expr, $name:expr, generic: $generic:expr) => {
|
||||
RegisterInfo {
|
||||
index: $index,
|
||||
dwarf: $dwarf,
|
||||
name: $name,
|
||||
set: $set,
|
||||
alt_name: None,
|
||||
generic: Some($generic),
|
||||
}
|
||||
};
|
||||
($set:expr, $index:expr, $name:expr, alt: $alt:expr, generic: $generic:expr) => {
|
||||
($set:expr, $dwarf:expr, $name:expr, alt: $alt:expr, generic: $generic:expr) => {
|
||||
RegisterInfo {
|
||||
index: $index,
|
||||
dwarf: $dwarf,
|
||||
name: $name,
|
||||
set: $set,
|
||||
alt_name: Some($alt),
|
||||
|
||||
Reference in New Issue
Block a user