riscii

An emulator for the RISC II
Log | Files | Refs | LICENSE

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:
Msrc/decode.rs | 4++--
Msrc/decode_test.rs | 4++--
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(()) }