===Load constant=====

cal     cal r3,r1,111   r3=r1+111       compute address lower
cal     cal r3,r0,111   r3=111          special case of r0
cau     cal r3,r1,111   r3=r1+(111<<16)   compute address upper
cau     cal r3,r0,111   r3=(111<<16)      special case of r0
                cal r3,r0,lower(const); cau r3,r3,higer(const)
                により、r3に32bit定数をloadできる
            compute address の場合は r0 が特別扱いされる
cax     cax r3,r1,r2    r3=r1+r2        add と同じ

===Load =====

l       l r3,4(r1)      r3=*(r1+4)      load word, 16bit offset
lu      l r3,4(r1)      r3=*(r1+4),r1=r1+4      with update
lx      lx r3,r1,r2     r3=*(r1+r2)     load word indexed
lux     lx r3,r1,r2     r3=*(r1+r2),r1=r1+r2    with update
lbz     lbz r3,4(r1)    r3=(char *)(r1+4) load byte
lbzu    lbz r3,4(r1)    r3=(char *)(r1+4),r1=r1+4 with update
lbzx    lbz r3,r1,r2    r3=(char *)(r1+r2) load byte indexed
lbzux   lbz r3,r1,r2    r3=(char *)(r1+r2),r1=r1+r2 with update

===Store =====

st      st r3,4(r1)     *(r1+4)=r3      store word, 16bit offset
stu     st r3,4(r1)     *(r1+4)=r3,r1=r1+4      with update
stx     stu r3,r1,r2    *(r1+r2)=r3
stux    stu r3,r1,r2    *(r1+r2)=r3,r1=r1+r2
stb     stb r3,4(r1)    (char *)(r1+4)=r3
stbx    stbux r3,r1,r2  (char *)(r1+r2)=r3
stbu    stbu r3,4(r1)   (char *)(r1+4)=r3,r1=r1+4
stbux   stbux r3,r1,r2  (char *)(r1+r2)=r3,r1=r1+r2

===Add =====

a       a r3,r1,r2      r3=r1+r2        add 
a.      a. r3,r1,r2     r3=r1+r2        add and set flag CR0
ao      ao r3,r1,r2     r3=r1+r2        add with over flow check
ao.     ao. r3,r1,r2    r3=r1+r2        add with over flow and set flag CR0

ae[.]   ae r3,r1,r2     r3=r1+r2+c      add with carry [set flag CR0]
ai[.]   ai r3,r1,-45    r3=r1+(-45)     add immediate [set flag CR0]
                                        16bit singed constatnd

sf[o.]  sf r3,r1,r2     r3=-r1+r2       subtract from 
sfi[o.] sfi r3,r1,3     r3=-r1-3        subtract from immediate

neg[o.]	r3,r1		r3=-r1		negation

muls	r3,r1,r2	r3=r1*r2	multiply short
muli	r3,r1,10	r3=r1*10	multiply immediate

div	r3,r1,r2	r3=r1/r2	divide unsigned
divs	r3,r1,r2	r3=r1/r2	divide signed

ame[o.] ame r3,r1       r3=r3+c-1       Add minus one extented
aze[o.] aze r3,r1       r3=r1+c         add 0 with carry

extsb	extsb r3,r1	r3=(signed char)  extend signed byte
extsh	extsh r3,r1	r3=(signed short)  extend double byte

===Branch =====

bl      label                           branch and link
                        LR=return address
mfspr   mfspr r0,LR     r0=LR           move from special register
                        bl からの return に使う

b       b BO_IF,CR0_EQ,label            branch conditional
bcc     bcc BO_IF,CR0_GT,label          brach conditional to counter register
bccl    bcc BO_IF,CR0_GT,label          brach conditional to counter register
                                        save return address to link register
bcr[l]  bcr BO_IF,CR0_GT,label          brach conditional to link register


        条件分岐は、
           CR0..CR7 でフラグを指定し、BO_IF で条件を指定する
           BO_IF           branch on true
           BO_IF_NOT       branch on false
           BO_ALLWAYS      branch always
           BO_dCTR_NZERO   decrement Count Reigster and bracn on non zero
           BO_dCTR_ZERO_AND    decrement Count and bracn on zero and conditon
           BO_dCTR_NZERO_AND   decrement Count and bracn on non zero and cond
           CR0_GT          >
           CR0_LT          <
           CR0_EQ          =
           CR0_SO          overflow

===Compare =====

cmpli   cmpli   1,r3,0x0000             compare r3 and immidiate value 
                                        as unsigned and set flag 1
cmpi    cmpi   1,r3,0x0000              compare r3 and immidiate value 
                                        as signed and set flag 1
cmpl    cmpl    1,r3,r4                 compare r3 and r4 and set flag 1
                                        as unsigned
cmp     cmp     1,r3,r4                 compare r3 and r4 and set flag 1
                                        as signed


mfcr    mfcr    r3                      move from condtion register
rlinm   r3,r3,6,31,31                   rotate left word then AND with mask
                        (r3>>6 & 1)       mask  = 31..31

===Logical =====

andil.  andil. r3,r1,11 r3=r1&11        And immideate lower
andiu.  andiu. r3,r1,11 r3=r1&(11<<16)    And immideate lower
                                        16bit singed constatnd
and	and r3,r1,r2	r3=r1&r2
xor	xor r3,r1,r2	r3=r1^r2
nand	nand r3,r1,r2	r3=~(r1|r2)
nor	nor r3,r1,r2	r3=~(r1&r2)
andc	andc r3,r1,r2	r3=~(r1& ~r2)
orc	orc r3,r1,r2	r3=~(r1| ~r2)