Luke Street
0de65eb1b6
Reduce binary size using const arrays
...
Before, the mnemonic arrays would be generated
on the stack at runtime in each parse function.
This ensures that the arrays themselves are
treated as const data.
2024-09-26 23:20:49 -06:00
Luke Street
c8026715f0
impl From<u8> for Opcode
2024-09-26 23:18:47 -06:00
Luke Street
d161deca50
Add badges to README.md & add documentation keys
2024-09-09 19:28:14 -06:00
Luke Street
c131108802
Add readme key to Cargo.toml
2024-09-09 19:19:58 -06:00
Luke Street
dbd66fae3b
Use workspace.package fields & update deps
2024-09-09 19:13:44 -06:00
Luke Street
6cbd7d888c
Resolve clippy::missing_transmute_annotations
2024-04-30 19:46:54 -06:00
Luke Street
d63c94c3e2
Add InsIter
2024-04-30 19:44:46 -06:00
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
3a9be32f66
Fix mcrf, mcrfs, mcrxr, twi, twui
2023-01-14 13:25:40 -05: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
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
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
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