Commit Graph

122 Commits

Author SHA1 Message Date
Luke Street d31bf75009 API updates and cleanup 2024-03-21 21:32:06 -06:00
Luke Street c4af15ddc2 Rewrite the entire crate, add assembler
- 10x faster disassembly performance
- Nearly feature-complete assembler
- `no_std` compatible
- Relicense to MIT/Apache-2.0
- Remove old crates (dol, flow-graph, etc)
- Remove Python bindings (for now, at least)
2024-03-14 00:55:08 -06:00
Luke Street f6e15052b1 Various bitmask and modifier fixes 2024-03-08 22:50:42 -07:00
Luke Street 4a2bbbc6f8 Derive PartialEq for Argument, pub SimplifiedIns::basic_form 2023-10-06 01:10:41 -04:00
Luke Street 87fe934548 Add subi mnemonics & use capstone-style CR bits 2023-10-06 01:06:50 -04:00
Luke Street 9ae36eef34 cargo fmt 2023-01-14 13:30:08 -05:00
Luke Street 5b022f12f1 Always build CI on push 2023-01-14 13:27:34 -05:00
Luke Street 3a9be32f66 Fix mcrf, mcrfs, mcrxr, twi, twui 2023-01-14 13:25:40 -05:00
Richard Patel fa42bb6c9a
Merge pull request #42 from encounter/updates
Sync @encounter's improvements
2022-11-15 03:15:35 +01:00
Richard Patel 2be94b3ced
Merge pull request #41 from encounter/branch_offset
Ignore bcctr, bclr in branch_offset
2022-11-15 03:08:10 +01:00
Luke Street aa631a33de Fix clrlslwi decoding 2022-10-16 14:21:50 -04:00
Luke Street 4d8e473331 Support branch prediction bits, more bd mnemonics, more rlwinm mnemonics 2022-10-10 17:53:24 -04:00
Luke Street 20abce13e4 SPR names & mfspr/mtspr simplified mnemonics 2022-10-09 22:57:13 -04:00
Luke Street ca92a30920 Improve CRBit display 2022-10-09 21:41:34 -04:00
Luke Street 94c87b0912 Ignore bcctr, bclr in branch_offset 2022-09-27 17:50:59 -04:00
Richard Patel 6a3476639a
Merge pull request #40 from InusualZ/dol-improv
Dol Library Improvement by @InusualZ
2022-06-09 07:30:46 +02:00
Richard Patel 65a68166b6 cargo fmt 2022-06-09 07:30:08 +02:00
InusualZ d23fb912b8 disasm: fix failing tests 2022-06-08 21:33:36 -04:00
InusualZ 2de9ecc844 dol: add and use new `DolSectionType::Text` 2022-06-08 21:33:36 -04:00
InusualZ fd5ac733d7 dol: implement helpers for virtual reads into the dol
Co-authored-by: Richard Patel <me@terorie.dev>
2022-06-08 21:33:33 -04:00
Richard Patel 619c935dc4
Merge pull request #39 from InusualZ/improv
General ISA Improvement
2022-06-01 18:21:07 +02:00
InusualZ d1c809b3f6 isa: fix `ps_mr` having `frA` as argument 2022-05-31 20:25:19 -04:00
InusualZ 3c0656ee3c isa: remove `mfspr`'s `mftdu` and `mttdu` mnemonics since there are not recognized by the metrowerks assembler 2022-05-31 20:25:19 -04:00
InusualZ 86e081fdb2 isa: fix `rlwinm`'s mnemonic `slwi` using `ME` instead of `SH` as arg 2022-05-31 20:25:19 -04:00
InusualZ a9ae0cb8a1 isa: add `RC` modifier to the `xor` instruction 2022-05-31 20:25:15 -04:00
InusualZ 49673468fc isa: fix `srw` argument order 2022-05-31 20:25:08 -04:00
InusualZ 2364d17751 isa: remove `RC` modifier from a bunch of instruction
This modifier is not part of those instruction
2022-05-31 20:25:01 -04:00
InusualZ 7167807402 isa: fix `mfcr` argument 2022-05-31 20:24:54 -04:00
InusualZ 65b0966a97 isa: `b` and `bc` change modifiers order
Previously they were `modifiers: [ AA, LK ]` and this caused problems,
because the modifiers add a char to the instruction mnemonics, but this
char is position dependant.
2022-05-31 20:24:54 -04:00
InusualZ f4389e5edd isa: add missing `L` arg to the `cmp` instruction family
Also fix the mnemonics for said instruction family
2022-05-31 20:24:36 -04:00
InusualZ ad1ec7aaa9 isa: fix paired single instruction arguments
Argument specific to this instruction were re/named to a more dolphin
aligned name
2022-05-31 20:24:29 -04:00
InusualZ b90b46ef8e isa: Add missing argument to `bcctr` and `bclr` 2022-05-31 20:24:29 -04:00
InusualZ d03a713a2b genisa: cast unmasked signed value
Co-authored-by: Richard Patel <me@terorie.dev>
2022-05-31 20:24:29 -04:00
InusualZ 9fd7546916 disasm: improve branch ins helpers
`branch_dest`: Support absolute destinations
`is_branch`: Use `matches!` to improve readability
`is_direct_branch`: Added helper to better match direct branches

Co-authored-by: Richard Patel <me@terorie.dev>
2022-05-31 20:24:20 -04:00
Richard Patel a80372c1b6 disasm: branch helpers, fix split fields 2022-04-11 00:08:39 +02:00
Richard Patel 5c4a3d01e5 add analysis/cfa.md 2022-04-11 00:07:16 +02:00
Richard Patel 4c2f5119f5 update README.md 2022-04-09 17:19:50 +02:00
Richard Patel 9dab42c364 disasm-py: add fields() method 2022-04-09 17:19:05 +02:00
Richard Patel 88c6a478e2 disasm-py: support fields 2022-04-09 16:30:48 +02:00
Richard Patel 9d5b73c0dc fix condition register logical instructions 2022-04-09 15:33:40 +02:00
Richard Patel 70192c75a4 fix psq_st disasm 2022-04-09 02:09:44 +02:00
Richard Patel da869222d0 update README.md 2022-04-07 06:20:53 +02:00
Richard Patel fd94a6c493 fuzz: add threads flag 2022-04-07 06:11:03 +02:00
Richard Patel 9c433919fc disasm-py: add opcode getter 2022-04-07 06:01:25 +02:00
Richard Patel fcad8da86b document Python module 2022-04-07 05:58:09 +02:00
Richard Patel fb65bc8e7d
Merge pull request #17 from terorie/auto-gen-isa
Auto-generate opcode detection, fields and printing
2022-04-07 05:45:28 +02:00
Richard Patel 6548c6ec5d bump version to 0.2.0 2022-04-07 05:45:01 +02:00
Richard Patel d845d6c067 bump pyo3 to 0.16 2022-04-07 05:42:55 +02:00
Richard Patel e667999a3d disasm-py: temporarily remove field accessors 2022-04-07 05:40:22 +02:00
Richard Patel 6391c87797 flow-graph: fix deprecated clap_app macro 2022-04-07 05:37:32 +02:00