Since I haven’t found a reference card that is easy to print and easy to use, I wrote my own. I’ve been using it myself, but I am publishing it here in the hope that it might be helpful to someone else.

The reference card contains everything you need for general-purpose user-level code on 32-bit PowerPCs. It can be printed on two double-sided Letter or A4 pages. I printed my version on card stock.

Sections

Registers description

Label suffixes

Load and store instructions

ALU instructions

Addition, subtraction, negation

Bitwise logical operations and shifts

Multiplication

Division

Rotate and Mask, with examples and details (rlwimi, rlwinm, rlwm)

Comparison instructions

Condition register manipulation instructions

Branch instructions (including simplified mnemonics)

SPR operations

Trap and System Call instructions

Condensed alphabetical instructions list

Voluntary omissions

In the interest of keeping it handy and to concentrate on the essential, I voluntarily omitted the following categories of instructions:

Floating-point

String loads and stores

Altivec

Book-E Extensions

Cache and TLB

Supervisor-level operations

These instructions are very seldom used, so I don’t think it’s a problem that they are absent. When I use them, I usually need to refer to the complete instruction set manual anyway, because of their complex semantics.

Downloads

The current version of this page can always be found at the following address: http://www.tentech.ca/ppc-assembly-card. Even though I have thoroughly reviewed the information contained in the card, I may include corrections if they are found. If you find inaccurate information on the reference card, please contact me.

Acknowledgements

I learned PowerPC assembly initially from Bill Karsh’s series on the PowerPC in MacTech magazine (see Links section). Although these two articles are extremely old, covering the PowerPC 601 and 603, they are still available and I found them much more informative than anything else I have consulted on the subject. They are aimed at people with an existing knowledge of other assembly languages, but are very approachable. The instructions grouping on the card is strongly influenced by the grouping shown in his articles.

Links

The following links are a hand-picked set of resources that I have found useful in my work with PowerPC assembly. Most of these are actually complementary to one another, rather than being repetitions of the same information.