commit 5589e06adafcf33c598ec69026f45ef643350c3f
parent 47fc305a8771aa792198aecddf538c9b79576ac8
Author: Ryan Jeffrey <ryan@ryanmj.xyz>
Date: Sat, 11 Jun 2022 16:36:09 -0700
First unit test, fix decoder bugs
Diffstat:
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/src/decode.rs b/src/decode.rs
@@ -293,9 +293,9 @@ pub fn decode(opcode: u32) -> Result<Instruction, DecodeError> {
// SCC flag (<24>).
let scc = opcode & 0x1000000 != 0;
// Destination bits (<23-19>).
- let dest = ((opcode & 0xF80000) >> 18) as u8;
+ let dest = ((opcode & 0x00F80000) >> 19) as u8;
// Short-immediate RS1 value (<18-14>).
- let rs1 = ((opcode & 0x7C000) >> 13) as u8;
+ let rs1 = ((opcode & 0x7c000) >> 14) as u8;
// Immediate-mode bottom 19 bits <18-0>.
let imm19 = opcode & 0x7FFFF;
// Short source immediate-mode bottom 13 bits <12-0> or rs1 <4-0>.
diff --git a/src/decode_test.rs b/src/decode_test.rs
@@ -27,8 +27,8 @@ mod test {
#[test]
fn decode_calli() -> Result<(), DecodeError> {
assert_eq!(
- decode(0x02D00000)?,
- I::Calli(ShortInstruction::new(true, 5, 0, SS::Reg(0)))
+ decode(0x0329f00f)?,
+ I::Calli(ShortInstruction::new(true, 5, 7, SS::UImm13(4111)))
);
Ok(())
}