Decompilation glossary

The PowerPC, ABI, and compiler vocabulary you run into while learning to decompile GameCube games. Every term here is also auto-linked, with a hover definition, throughout the Decomp Academy lessons.

AABBAxis-Aligned Bounding Box
A box aligned to the coordinate axes, used for cheap collision tests.
ABIApplication Binary Interface
The machine-level contract for how functions pass arguments, return values, and share registers.
CSECommon Subexpression Elimination
A compiler optimisation that computes a repeated expression once and reuses the result.
CTRCount Register
A special register used for loop counts and indirect branches.
DAGDirected Acyclic Graph
The graph form a compiler uses to represent and optimise an expression.
DMADirect Memory Access
Hardware that copies memory without the CPU performing each transfer.
EABIEmbedded Application Binary Interface
The ABI variant the GameCube PowerPC toolchain targets.
FPRFloating-Point Register
One of the 32 registers (f0–f31) that hold float and double values.
GCCGNU Compiler Collection
The open-source C/C++ compiler, used here for tooling rather than to match game code.
GPRGeneral-Purpose Register
One of the 32 integer registers (r0–r31) used for integer and pointer maths.
IDAInteractive Disassembler
A widely used tool for reverse-engineering compiled binaries.
LRLink Register
Holds the return address for the current function call.
LSBLeast Significant Bit
The lowest-value bit (or lowest byte) of a value.
MSBMost Significant Bit
The highest-value bit of a value — the sign bit for signed types.
MWCCMetrowerks CodeWarrior Compiler
The compiler (mwcceppc.exe) that built the original game; lessons match its exact output.
PPCPowerPC
The RISC CPU architecture the GameCube uses — specifically the Gekko, a customised PowerPC 750.
SDASmall Data Area
Memory addressed relative to r2/r13 so a global can be loaded in a single instruction.
SDKSoftware Development Kit
The libraries and tools a platform ships for building software against it.