Commit Graph

96 Commits

Author SHA1 Message Date
Richard Patel e57fa2c659 dol: fix missing derives 2021-08-24 02:42:52 +02:00
Richard Patel 25f82bc26b isa.yaml: correct uses or rA zero special case 2021-08-24 02:40:58 +02:00
Richard Patel a6a47156a3 add isa.yaml 2021-08-24 02:19:12 +02:00
Richard Patel 8c5ddf4057 Read from DOL 2021-08-22 04:09:51 +02:00
Richard Patel 7b63bfa533 Restructure, implement naive data ref detection 2021-08-22 03:09:49 +02:00
Richard Patel 7ddae6e170
add dol crate 2021-08-22 01:25:01 +02:00
Richard Patel e7a257ac64
Implement control-flow graph detection (#12)
Closes #9
Closes #10

* add flow graph crate
* update authors
* implement control flow graph analysis
* detect if program flow falls through the end of a block
* relax itertools version constraint
2021-08-20 13:09:04 -04:00
Richard Patel 4fc2d32e02 zero-copy bytes passing 2021-08-19 01:13:19 +02:00
Richard Patel 57a317a6b2 add offset, size arguments to disasm_iter 2021-08-19 00:56:39 +02:00
Richard Patel e55398cd01 Fix Doldecomp formatter 2021-08-17 01:21:26 +02:00
Richard Patel a15c909240 Fix CI 2021-08-17 01:21:08 +02:00
Richard Patel 25cdef4d34 add Python module instructions 2021-08-17 00:53:29 +02:00
Richard Patel 66b8d92934 add Python module 2021-08-17 00:40:13 +02:00
Richard Patel ea6545f7e3 rename ./lib to ./disasm 2021-08-16 22:54:20 +02:00
Richard Patel 169b206a05 formatting 2021-08-16 22:51:42 +02:00
Richard Patel 2382625a5f add unit tests 2021-08-16 22:26:41 +02:00
Richard Patel 4bb6a5d488 Fix clippy 2021-08-15 19:42:26 +02:00
Richard Patel 5052f260e2 Minor fix 2021-08-15 19:34:17 +02:00
Richard Patel 43cb808c14 Accuracy improvements 2021-08-15 19:25:43 +02:00
Richard Patel 32394a4905 macros/writer: relax syntax 2021-08-15 10:58:55 +02:00
Richard Patel 4853c12054 macros/writer: add mnemonic suffixes 2021-08-15 10:42:27 +02:00
Richard Patel 67efa31bbd create write_asm macro 2021-08-15 10:32:46 +02:00
Richard Patel 0c65617c69 macros: cleanup 2021-08-15 07:06:31 +02:00
Richard Patel fb7bf08a06
Pluggable formatting engine (#8) 2021-08-15 03:53:38 +02:00
Richard Patel 9e5fa58e3e auto-generate mnemonics function 2021-08-14 11:02:10 +02:00
Richard Patel fca4e052a6 add info to Cargo.tomls 2021-08-14 10:31:21 +02:00
Richard Patel 18e0d430df
Create LICENSE 2021-08-14 10:18:38 +02:00
Richard Patel d8e951befc
lib: use opcode masks (#7)
Implements a procedural macro for defining the ISA.
Moves validity checks to bitmasks instead of spaghetti code patterns.

Solves #1
2021-08-14 10:17:10 +02:00
Richard Patel 3971f22b11 macros: Generate Opcode::is_valid() 2021-08-14 09:05:30 +02:00
Richard Patel f3aa97b365 Opcode table via procedural macro 2021-08-14 08:40:36 +02:00
Richard Patel ecd06bf524 random instruction generator, use std::io::Write 2021-08-14 03:28:16 +02:00
Richard Patel 8b8bb66031 use fmt::Write instead of String, support stable toolchain 2021-08-14 03:01:19 +02:00
Richard Patel 0f5a439725 fix broken opcode decoding 2021-08-14 02:37:03 +02:00
Richard Patel 31d06e1373 mfspr, mtspr, bclr simplified mnemonics 2021-08-14 02:26:10 +02:00
Richard Patel c953299b93 more unit tests 2021-08-14 02:12:20 +02:00
Richard Patel 4d29089e6e more readable unit tests 2021-08-14 01:52:20 +02:00
Richard Patel ec82c013cf cleanup Ins struct 2021-08-14 01:45:59 +02:00
Richard Patel 9959cf2e7d linting 2021-08-14 01:13:20 +02:00
Richard Patel a94ee22d14 use write instead of format
Decreases fuzz time from 183s to 72s.
2021-08-14 01:10:52 +02:00
Richard Patel 7d2b8c16ca cargo workspace layout, multithreaded fuzzer 2021-08-14 00:33:10 +02:00
Richard Patel 3fb8a76a2f
Add CI for cargo clippy, test (#5) 2021-08-13 23:07:47 +02:00
Richard Patel 0701bc7457 Simplify code 2021-08-13 22:42:31 +02:00
Richard Patel ae8503b217 Implement all print instructions 2021-08-13 22:25:43 +02:00
Richard Patel a08ef23ab6 remove unused print instruction 2021-08-08 18:55:05 +02:00
Richard Patel cdd8088511 WIP printing 2021-08-08 18:54:37 +02:00
Richard Patel a8de638aaf Initial commit 2021-08-08 02:59:07 +02:00