北海道苫小牧市出身の初老PGが書くブログ

永遠のプログラマを夢見る、苫小牧市出身のおじさんのちらしの裏

PPCのアセンブリを覗き見

先日悔しい思いをしたので、G5のアセンブリコードを覗き見してみることにした。



int test(int n){
return n;
}

_test:
stmw r30,-8(r1)
stwu r1,-48(r1)
mr r30,r1
stw r3,72(r30)
lwz r0,72(r30)
mr r3,r0
lwz r1,0(r1)
lmw r30,-8(r1)
blr






86系とあまりに違い過ぎてまったくわからんのですけど(汗)。



PUSH命令がないので、スタックの実現のためにr1レジスタを代わりに駆使するってのは調べてわかった。後、「stw r3,72(r30)」は、PPC系ではスタックのこの部分にr3レジスタ〜に渡された引数を保存しておくと言う決まりらしい。最適化するとこの辺はすっきりさっぱりなくなってしまう。



で、ちょびっとだけ頑張ったけど、Intel MACが騒がれてるご時世だから、これ以上深入りする気はナシ(笑)。