PowerPC instructions -------------------- // unconditional jumps b - branch (unconditional) (direct jump) bctr - branch (unconditional) to counter (indirect jump) // branch on condition code beq - branch when equal bne - branch when not equal blt - branch when less than bgt - branch when greater than ble - branch when less than or equal bge - branch when greater than or equal // register moves mr - move register // comparisons (sets condition codes for subsequent branches) cmpw - compare word (signed) cmplw - compare word (unsigned) // immediates li - load immediate (16-bit signed) lis - load immediate shifted (load 16-bit signed into upper halfword) // loading and storing lwz - load word lwzx - load word indexed la - load address (synonymous to addi) stw - store word stwx - store word indexed // arithmetic and logic addi - add immediate (16-bit signed) add - add subfic - subtract from immediate (generate carry, 16-bit signed) subf - subtract from andi - logical and with immediate (16-bit unsigned) and - logical and ori - logical or with immediate (16-bit unsigned) or - logical or slwi - shift left word immediate (5-bit unsigned) slw - shift left word srwi - shift right word immediate (5-bit unsigned) srw - shift right word srawi - shift right arithmetic word immediate (5-bit unsigned) sraw - shift right arithmetic word xori - exclusive or immediate (16-bit unsigned) xor - exclusive or mulli - multiply long immediate (16-bit signed) mullw - multiply long word divw - divide word // procedure prologues and epilogues mflr - move from LR mtlr - move to LR stwu - store word with update (store address into base register) lmw - load multiple words stmw - store multiple words // function calls and linkage bl - branch (uncodnitional) and link (direct function call) mtctr - move to counter bctrl - branch (unconditional) to counter and link (indirect function call) blr - branch to LR (function return)