Power PC Mnemonic Codes

PowerPC 604 命令コード

PowerPCはRISC(Reduced Instruction Set Computer)であり、 命令32ビット、データ32ビット固定。 命令処理はパイプラインになっていてプログラムの組み方 によっては、高速化も望めるが、とりあえず動くことを目標と する事にして、処理順序の最適化は後回しにする。

命令は
 add,and,cmp,l(load),st(store) 

など、integer処理に必要なものは一通りそろっている。 OSをブートするときに、floatingを使うことはないと思うので、 これらを元に、FreeBSDにおいて、gccでコンパイルできない、 ニーモニックのファイル(*.s)をPowerPC用に書き換えていこう。 実際の書き換えは次のページで行うことにして、ここでは、 一通り、命令とコードの表を使いそうなものだけかいつまんで 並べてみる。尚、具体的な動作を覚えるために、数は限られるが 命令には具体的なレジスタ名を使うことにした。

以下のような命令群があるが、内容は必要に応じて 増やしていくことにして、FreeBSDのソースのアセンブラで 書かれた部分をPowerPC用に変更する作業に取りかかることにする。
PowerPC Instruction List
Integer
Mnemonic Operand Syntax Process(memo)
addGRP3,GRP1,GRP2GRP3=GRP1+GRP2
add.GRP19,GRP17,GRP18 GRP19=GRP17+GRP18(with CR0 update)
addiGRP5,GRP4,$0100GRP5=GRP4+100H(signed immediate)
addisGRP24,GRP23,$0100GRP5=GRP4+1000000H(100H << 16)(signed immediate)
subGRP22,GRP20,GRP21 GRP22=GRP20-GRP21(sub don't have immediate)
cmp(0,)L,GRP6,GRP7?(GRP6-GRP7)->CR0(L???)
cmp1,L,GRP23,GRP24?(GRP23-GRP24)->CR1
cmpl(CR0,)L,GRP8,GRP9(GRP8?GRP9)->CR0(logical)
andGRP12,GRP10,GRP11GRP12=GRP10&GRP11
andi.GRP14,GRP13,$0F5A GRP14=GRP13&0F5AH(unsigned immediate)
orGRP17,GRP15,GRP16GRP17=GRP15|GRP16
oriGRP19,GRP18,$05AF GRP19=GRP18|05AFH(unsigned immediate)
rlwinmGRP6,GRP7,3,MB,MEGRP6=GRP7 rotate 3(from MB to ME)
slwGRP10,GRP9,GRP8GRP10=GRP9<
srwGRP13,GRP12,GRP11GRP13=GRP12>>GRP11(lower 6bits)
srawiGRP15,GRP14,4GRP15=GRP14>>4(signed immediate)
Load and Store
Mnemonic Operand Syntax Process(memo)
lbzGRP2,0(GRP3)GRP2=data at GRP3
lbzuGRP2,0(GRP3)GRP2=data at GRP3 with update
Branch and Flow Control
Mnemonic Operand Syntax Process(memo)
Vertual Environment Architecture
Mnemonic Operand Syntax Process(memo)
Operating Environment Architecture
Mnemonic Operand Syntax Process(memo)

[To Top] [To Next]