From 97447561496921f2a086ebeb993464012a560570 Mon Sep 17 00:00:00 2001 From: iximeow Date: Sat, 17 Jul 2021 21:33:58 -0700 Subject: implement an lc87 decoder --- test/test.rs | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 test/test.rs (limited to 'test') diff --git a/test/test.rs b/test/test.rs new file mode 100644 index 0000000..3fe9dbe --- /dev/null +++ b/test/test.rs @@ -0,0 +1,31 @@ +use yaxpeax_arch::Decoder; + +fn test_display(data: &[u8], expected: &'static str) { + let mut reader = yaxpeax_arch::U8Reader::new(data); + match yaxpeax_lc87::InstDecoder::default().decode(&mut reader) { + Ok(instr) => { + let displayed = instr.to_string(); + assert_eq!(&displayed, expected); + assert_eq!(data.len() as u8, instr.len()); + } + Err(e) => { + panic!("failed to decode {:02x?}: {}", data, e); + } + } +} + +#[test] +fn test_disassembly() { +// test_display(&[0x43, 0x0a, 0x1f], "mov #13h, spl"); + test_display(&[0x43, 0x0a, 0x1f], "mov #1fh, fe0ah"); +// test_display(&[0x43, 0x0b, 0x00], "mov #00h, sph"); + test_display(&[0x43, 0x0b, 0x00], "mov #00h, fe0bh"); + test_display(&[0x47, 0x34, 0x12], "ldw #1234h"); + test_display(&[0x47, 0x78, 0x56], "ldw #5678h"); + test_display(&[0x97, 0x12, 0xfe], "stw fe12h"); + test_display(&[0x97, 0xc0, 0x00], "stw 00c0h"); + test_display(&[0x49, 0x00], "rcall $+0x100"); + test_display(&[0x59, 0x00], "rcall $+0x900"); + test_display(&[0x08, 0x10, 0x3f], "bp 0010h, 0, $+0x3f"); + test_display(&[0x0a, 0x10, 0x3f], "bp 0010h, 2, $+0x3f"); +} -- cgit v1.1