Rust tools for PowerPC 750CL
Go to file
Richard Patel b8199e678c fix signed fields 2022-04-07 04:07:15 +02:00
.github/workflows Fix CI 2021-08-17 01:21:08 +02:00
disasm fix signed fields 2022-04-07 04:07:15 +02:00
disasm-py switch from macro to ahead-of-time generated code 2022-04-06 15:13:55 +02:00
dol switch from macro to ahead-of-time generated code 2022-04-06 15:13:55 +02:00
flow-graph fix signed fields 2022-04-07 04:07:15 +02:00
fuzz switch from macro to ahead-of-time generated code 2022-04-06 15:13:55 +02:00
genisa fix signed fields 2022-04-07 04:07:15 +02:00
rand update deps 2022-04-07 02:51:17 +02:00
.gitignore Read from DOL 2021-08-22 04:09:51 +02:00
Cargo.lock update deps 2022-04-07 02:51:17 +02:00
Cargo.toml temporarily disable broken crates 2022-04-07 01:29:45 +02:00
LICENSE Create LICENSE 2021-08-14 10:18:38 +02:00
README.md update README.md 2022-04-07 01:48:21 +02:00
isa.yaml fix signed fields 2022-04-07 04:07:15 +02:00

README.md

ppc750cl

Rust tools for working with the PowerPC 750CL family of processors.

Rust crates

rustup components add rustfmt
cargo run --package ppc750cl-genisa
cargo build --release

Python module

python -m venv env
source ./env/bin/activate
pip install maturin
maturin build -m ./disasm-py/Cargo.toml

Instruction Set

For those unfamiliar with PowerPC, here are some basics.

  • PowerPC 7xx is a family of RISC CPUs produced from 1997 to 2012.
    • They operate with 32-bit words and every instruction is 32-bits wide.
  • This project focuses (only) on compatibility with the PowerPC 750CL.
    • This chip is famously packaged as codename "Broadway" for the Nintendo Wii.
    • Its predecessor PowerPC 750CXe is used in the Nintendo GameCube.
    • It adds a "paired-singles" SIMD unit and a bunch of other instructions.

isa.yaml

The file isa.yaml contains a full definition of the PowerPC 750CL instruction set.

It powers the disassembler, assembler, and Rust/Python bindings code analysis tools.

Similarly to LLVM TableGen, the program ppc750cl-genisa generates a Rust file implementing an instruction decoder.