Removed existing Addr{Hi, Lo} and renamed AddrSigned{Hi, Lo} to Addr{Hi, Lo}, as all addresses are siged when obtaining their lo and hi.

This commit is contained in:
Filipe Rodrigues 2021-04-28 20:13:04 +01:00
parent bff47fad58
commit b572f1d922
3 changed files with 75 additions and 86 deletions

View File

@ -76,10 +76,8 @@ pub trait ParseCtx {
let value = match func {
// For address, first get the value as a position to make sure it's within range
LineLabelFunc::AddrLo => i64::from(to_pos(value)?.0 & 0xFFFF),
LineLabelFunc::AddrHi => i64::from(to_pos(value)?.0 >> 16u32),
LineLabelFunc::AddrSignedLo => i64::from(signed_addr_lo_hi(to_pos(value)?).0),
LineLabelFunc::AddrSignedHi => i64::from(signed_addr_lo_hi(to_pos(value)?).1),
LineLabelFunc::AddrLo => i64::from(signed_addr_lo_hi(to_pos(value)?).0),
LineLabelFunc::AddrHi => i64::from(signed_addr_lo_hi(to_pos(value)?).1),
};
Ok(value)

View File

@ -173,12 +173,6 @@ pub enum LineLabelFunc {
/// Address higher 16-bits
AddrHi,
/// Address lower signed 16-bits
AddrSignedLo,
/// Address higher signed 16-bits
AddrSignedHi,
}
/// Reads a name
@ -313,12 +307,9 @@ fn read_reg(s: &str) -> Result<(Register, &str), ReadArgError> {
}
/// Reads a func
#[rustfmt::skip]
fn read_func(s: &str) -> Result<(LineLabelFunc, &str), ReadFuncError> {
None.or_else(|| s.strip_prefix("addr_hi" ).map(|rest| (LineLabelFunc::AddrHi , rest)))
.or_else(|| s.strip_prefix("addr_lo" ).map(|rest| (LineLabelFunc::AddrLo , rest)))
.or_else(|| s.strip_prefix("signed_addr_hi").map(|rest| (LineLabelFunc::AddrSignedHi, rest)))
.or_else(|| s.strip_prefix("signed_addr_lo").map(|rest| (LineLabelFunc::AddrSignedLo, rest)))
None.or_else(|| s.strip_prefix("addr_hi").map(|rest| (LineLabelFunc::AddrHi, rest)))
.or_else(|| s.strip_prefix("addr_lo").map(|rest| (LineLabelFunc::AddrLo, rest)))
.ok_or(ReadFuncError::Unknown)
}

View File

@ -1,245 +1,245 @@
? pos: 0x8001414c
arg: 1
: "something10@signed_addr_hi"
: "something10@addr_hi"
? pos: 0x80014154
arg: 1
: "something10@signed_addr_lo"
: "something10@addr_lo"
? pos: 0x80013f1c
arg: 1
: "ZeroStart@signed_addr_hi"
: "ZeroStart@addr_hi"
? pos: 0x80013f20
arg: 1
: "ZeroStart@signed_addr_lo"
: "ZeroStart@addr_lo"
? pos: 0x80013f30
arg: 1
: "ZeroStart@signed_addr_lo"
: "ZeroStart@addr_lo"
? pos: 0x80013f34
arg: 1
: "unknown3@signed_addr_hi"
: "unknown3@addr_hi"
? pos: 0x80013f38
arg: 2
: "unknown3@signed_addr_lo"
: "unknown3@addr_lo"
? pos: 0x80013f3c
arg: 1
: "unknown3@signed_addr_lo"
: "unknown3@addr_lo"
? pos: 0x80013f60
arg: 1
: "main_loop_data1@signed_addr_hi"
: "main_loop_data1@addr_hi"
? pos: 0x80013f68
arg: 1
: "main_loop_data1@signed_addr_lo"
: "main_loop_data1@addr_lo"
? pos: 0x80013f6c
arg: 1
: "ZeroStart@signed_addr_lo"
: "ZeroStart@addr_lo"
? pos: 0x80013f7c
arg: 1
: "ZeroStart@signed_addr_lo"
: "ZeroStart@addr_lo"
? pos: 0x80013f78
arg: 1
: "unknown3@signed_addr_hi"
: "unknown3@addr_hi"
? pos: 0x80013f84
arg: 1
: "unknown3@signed_addr_lo"
: "unknown3@addr_lo"
? pos: 0x80013f80
arg: 1
: "main_loop_data1@signed_addr_hi"
: "main_loop_data1@addr_hi"
? pos: 0x80013f88
arg: 1
: "main_loop_data1@signed_addr_lo"
: "main_loop_data1@addr_lo"
? pos: 0x80013fd0
arg: 1
: "ZeroStart@signed_addr_hi"
: "ZeroStart@addr_hi"
? pos: 0x80013fd4
arg: 1
: "ZeroStart@signed_addr_lo"
: "ZeroStart@addr_lo"
? pos: 0x80013ff4
arg: 1
: "something11_data6@signed_addr_hi"
: "something11_data6@addr_hi"
? pos: 0x8001400c
arg: 1
: "something11_data6@signed_addr_lo"
: "something11_data6@addr_lo"
? pos: 0x80013ff8
arg: 1
: "something11_data1@signed_addr_hi"
: "something11_data1@addr_hi"
? pos: 0x80014008
arg: 1
: "something11_data1@signed_addr_lo"
: "something11_data1@addr_lo"
? pos: 0x80013ffc
arg: 1
: "something11_data3@signed_addr_hi"
: "something11_data3@addr_hi"
? pos: 0x80014004
arg: 1
: "something11_data3@signed_addr_lo"
: "something11_data3@addr_lo"
? pos: 0x80014010
arg: 1
: "something11_data5@signed_addr_hi"
: "something11_data5@addr_hi"
? pos: 0x8001401c
arg: 1
: "something11_data5@signed_addr_lo"
: "something11_data5@addr_lo"
? pos: 0x80014020
arg: 1
: "unknown4@signed_addr_hi"
: "unknown4@addr_hi"
? pos: 0x80014024
arg: 2
: "unknown4@signed_addr_lo"
: "unknown4@addr_lo"
? pos: 0x80014030
arg: 1
: "unknown4@signed_addr_lo"
: "unknown4@addr_lo"
? pos: 0x8001404c
arg: 1
: "main_loop_data1@signed_addr_hi"
: "main_loop_data1@addr_hi"
? pos: 0x80014060
arg: 1
: "main_loop_data1@signed_addr_lo"
: "main_loop_data1@addr_lo"
? pos: 0x80014064
arg: 1
: "unknown1@signed_addr_hi"
: "unknown1@addr_hi"
? pos: 0x8001406c
arg: 1
: "unknown1@signed_addr_lo"
: "unknown1@addr_lo"
? pos: 0x80014074
arg: 1
: "unknown5@signed_addr_hi"
: "unknown5@addr_hi"
? pos: 0x80014080
arg: 1
: "unknown5@signed_addr_lo"
: "unknown5@addr_lo"
? pos: 0x80014088
arg: 1
: "unknown2@signed_addr_hi"
: "unknown2@addr_hi"
? pos: 0x8001408c
arg: 2
: "unknown2@signed_addr_lo"
: "unknown2@addr_lo"
? pos: 0x800140b0
arg: 1
: "unknown3@signed_addr_hi"
: "unknown3@addr_hi"
? pos: 0x800140b4
arg: 2
: "unknown3@signed_addr_lo"
: "unknown3@addr_lo"
? pos: 0x800140bc
arg: 1
: "unknown3@signed_addr_lo"
: "unknown3@addr_lo"
? pos: 0x80014184
arg: 1
: "unknown6@signed_addr_hi"
: "unknown6@addr_hi"
? pos: 0x8001418c
arg: 1
: "unknown6@signed_addr_lo"
: "unknown6@addr_lo"
? pos: 0x800141c4
arg: 1
: "something11_data5@signed_addr_hi"
: "something11_data5@addr_hi"
? pos: 0x800141c8
arg: 1
: "something11_data5@signed_addr_lo"
: "something11_data5@addr_lo"
? pos: 0x80014218
arg: 1
: "something11_data1@signed_addr_hi"
: "something11_data1@addr_hi"
? pos: 0x80014228
arg: 1
: "something11_data1@signed_addr_lo"
: "something11_data1@addr_lo"
? pos: 0x80014234
arg: 1
: "something11_data4@signed_addr_hi"
: "something11_data4@addr_hi"
? pos: 0x80014268
arg: 1
: "something11_data4@signed_addr_lo"
: "something11_data4@addr_lo"
? pos: 0x8001424c
arg: 1
: "something11_data2@signed_addr_hi"
: "something11_data2@addr_hi"
? pos: 0x80014258
arg: 1
: "something11_data2@signed_addr_lo"
: "something11_data2@addr_lo"
? pos: 0x8001425c
arg: 1
: "something11_data3@signed_addr_hi"
: "something11_data3@addr_hi"
? pos: 0x80014264
arg: 1
: "something11_data3@signed_addr_lo"
: "something11_data3@addr_lo"
? pos: 0x8001426c
arg: 1
: "unknown3@signed_addr_hi"
: "unknown3@addr_hi"
? pos: 0x80014270
arg: 2
: "unknown3@signed_addr_lo"
: "unknown3@addr_lo"
? pos: 0x80014280
arg: 1
: "unknown3@signed_addr_lo"
: "unknown3@addr_lo"
? pos: 0x80014274
arg: 1
: "something11_data5@signed_addr_hi"
: "something11_data5@addr_hi"
? pos: 0x80014278
arg: 1
: "something11_data5@signed_addr_lo"
: "something11_data5@addr_lo"
? pos: 0x8001427c
arg: 1
: "something11_data6@signed_addr_hi"
: "something11_data6@addr_hi"
? pos: 0x80014288
arg: 1
: "something11_data6@signed_addr_lo"
: "something11_data6@addr_lo"
? pos: 0x8005a88c
arg: 1
: "something39@signed_addr_hi"
: "something39@addr_hi"
? pos: 0x8005a894
arg: 1
: "something39@signed_addr_lo"
: "something39@addr_lo"
? pos: 0x8005aa20
arg: 1
: "something40@signed_addr_hi"
: "something40@addr_hi"
? pos: 0x8005aa28
arg: 1
: "something40@signed_addr_lo"
: "something40@addr_lo"
? pos: 0x8005ab04
arg: 1
: "something40@signed_addr_hi"
: "something40@addr_hi"
? pos: 0x8005ab0c
arg: 1
: "something40@signed_addr_lo"
: "something40@addr_lo"
? pos: 0x8005ace4
arg: 1
: "something39@signed_addr_hi"
: "something39@addr_hi"
? pos: 0x8005acec
arg: 1
: "something39@signed_addr_lo"
: "something39@addr_lo"
? pos: 0x8005ae48
arg: 1
: "something40@signed_addr_hi"
: "something40@addr_hi"
? pos: 0x8005ae50
arg: 1
: "something40@signed_addr_lo"
: "something40@addr_lo"
? pos: 0x8004a208
arg: 1
: "something41@signed_addr_hi"
: "something41@addr_hi"
? pos: 0x8004a210
arg: 1
: "something41@signed_addr_lo"
: "something41@addr_lo"