Commit Graph

43 Commits

Author SHA1 Message Date
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 9dab42c364 disasm-py: add fields() method 2022-04-09 17:19:05 +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 6548c6ec5d bump version to 0.2.0 2022-04-07 05:45:01 +02:00
Richard Patel 4c5735e403 more flexible modifier handling 2022-04-07 05:33:38 +02:00
Richard Patel 99c7f252f8 fix bcctr and bclr 2022-04-07 04:44:38 +02:00
Richard Patel 16f955947e fix bc opcode 2022-04-07 04:23:12 +02:00
Richard Patel b8199e678c fix signed fields 2022-04-07 04:07:15 +02:00
Richard Patel 8a57bd9eb2 more tests 2022-04-07 02:36:49 +02:00
Richard Patel b6ad3f4f2c make clippy happy 2022-04-07 02:14:11 +02:00
Richard Patel 1f5fec522a genisa: improve codegen 2022-04-07 01:55:07 +02:00
Richard Patel 5207876164 temporarily disable broken crates 2022-04-07 01:29:45 +02:00
Richard Patel e9041072e9 support simplified mnemonic conditions 2022-04-07 01:17:31 +02:00
Richard Patel c8c1daaa64 progress mnemonics 2022-04-06 17:41:13 +02:00
Richard Patel eb39f9fa47 add generated code 2022-04-06 15:14:03 +02:00
Richard Patel 5431836376 switch from macro to ahead-of-time generated code 2022-04-06 15:13:55 +02:00
Richard Patel 171666e6fc progress 2022-04-06 14:07:57 +02:00
Richard Patel 40142dcd9b support mnemonic suffixes 2021-08-29 09:02:31 +02:00
Richard Patel 756e23f240 fix fuzz and rand crates 2021-08-29 06:29:49 +02:00
Richard Patel f04c68578b re-implement formatting 2021-08-29 06:06:08 +02:00
Richard Patel 5833e81236 generate def/use information 2021-08-29 04:25:39 +02:00
Richard Patel d0409f599b cleanup, remove stale codegen defs 2021-08-25 03:37:02 +02:00
Richard Patel 7a6b4df8d4 big rewrite, everything half broken 2021-08-25 03:23:57 +02:00
Richard Patel ec727af8dd isa.yaml: add fields 2021-08-24 03:30:03 +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 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 e55398cd01 Fix Doldecomp formatter 2021-08-17 01:21:26 +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