トップページ⇒tech
14コメント8KB

PowerPC アセンブラ

■ このスレッドは過去ログ倉庫に格納されています
0001どなたかよろしくお願いします。NGNG
PowerPCアセンブラに関する情報の少なさに困っています。
有用な文献や日本語で解説しているホームページがあったら教えてください。
ご存じの方、よろしくお願いいたします。

仕方なく今はモトローラの PDF(英文)を読んでいます。
英語でもいいという方は以下のリンクをどうぞ。

PowerPC ファミリー リファレンスマニュアル
 http://e-www.motorola.com/brdata/PDFDB/MICROPROCESSORS/32_BIT/POWERPC/MPCFPE32B.pdf
G3(MPC750) 関連PDF
 http://e-www.motorola.com/webapp/sps/prod_cat/prod_summary.jsp?code=MPC750&catId=M98654
G4(MPC7450) 関連PDF
 http://e-www.motorola.com/webapp/sps/prod_cat/prod_summary.jsp?code=MPC7450&catId=M950644686128

PowerPC スペック概要(日本語)
 http://www-6.ibm.com/jp/chips/chips2/products/powerpc/index.html
0002>1NGNG
そんだけ資料あるなら別に困らないと思うけど
00031NGNG
>>2
困らなければなんでもいいのではなくて
できることなら英語より日本語で読みたいわけです。
あとRISCチップでのマナーとかも知りたいです。
同じくPowerPCをやろうとしてる人には有意義ではないかと。
0004デフォルトの名無しさんNGNG
>>1
なんでPowerPCアセンブラやりてえのよ?

もうちょっと速ければ、日本語の文献(紙媒体)がモトローラから手に入ったんだがなあ。しかもタダ。
http://www.mot.co.jp/SPS/html/materials/

PowerPCって、他のRISCと比べるとあまりRISCって感じしないよ。

日本で出版されてたPowerPCの書籍って、ほぼ絶版だと思うよ。
Inside PowerPCくらいはまだ在庫があるんじゃない? ちなみにソフトバンクね。
あの故 宮永好道先生の監訳

00051NGNG
>>4
 情報ありがとうございます!
 リンク先にPowerPCファミリーリファレンスの日本語版があった!と
 思ったらPDFのダウンロードさせてくれないみたいですね…。(ケチ!)

>なんでPowerPCアセンブラやりてえのよ?
 純粋にPowerPCの挙動を知りたかったのと、
 MacOS X が出てきたのでアセンブラ読めるぐらいには
 なっておいても悪くないかなと思いました。

 今はCでちょこっと書いたものを逆アセンブルソースと比べて、
 pdfのリファレンスでわからない命令を調べて…
 という感じでやってます。

 もしかしたらメモリに直値入れられないんですかね。
 86系では考えられない”シバリ”があるのでかなり新鮮です。
 86系で言うスタック命令 push, pop って
 PowerPCに見当たらないんですけど、
 レジスタとメモリストアで遣り繰りしろってことなのでしょうか?
 …まだまだわからないことだらけです。
 この辺の86系との違いなんかが日本語で読めるところがあると
 うれしいですけどねぇ。
00064NGNG
「メモリに直接値を入れられない」ってのは、32ビットまるまるのデータを直接レジスタに
読めないって事ですよね? 知ってると思いますが16ビットまでなら読めます。
「addi r0,r0,xx」で、r0にxx(16ビットまで)が入ります。
CodeWarriorとかだと、「li r0,xx」で通ります。(Load Immidiateの略)
他にも、レジスタ間転送は「or[.] r0,r1,r1」とかを使うんですが、
これも「mr[.] r0,r1」(Move Registerの略)と書く事ができます。

こういう、最終的には同じ命令になるんだけどニモニックは違う、といった一覧表を
どっかで探しといたほうがいいです。IBMやモトローラのサイトにもあるかな?
私は「OPTIMIZING PowerPC CODE」って洋書を買いました。ISBN 0-201-40839-2
前に書いた「Inside PowerPC」はISBN 4-89502-606-4です。
どちらもPowerPC60xが中心です。750や7400の本は恐らく日本じゃ出てません。
モトローラがタダで配ってた750の英語版ももう手に入らないでしょう。

レジスタは汎用32個もあるんで、そんなにpush/popするような必要はないと
思うんですがー。使いたければ自前で管理する必要があったかと。
アセンブラだけで大きい関数書いた事ないんで、私もあまり詳しくないです。
00074NGNG
追記。

たとえばmr[.] r0,r1ですが、mr. r0,r1だと実行結果がフラグに
反映されます。mr r0,r1だと反映されません。

00084NGNG
あああ、ごめん。家に帰って気づいたんだけど、メモリとレジスタを勘違いしてた。
メモリに直値を入れる命令は(少なくとも60x,750,74xxには)ありません。
でもこれって使えないと困る???

高速化のテクニックとしては、GPRに対する命令とFPRに対する命令両方あるなら、
交互に書いた方が速くなるとかいうのがあります。パイプラインが別になってるんで。
でもプログラムとしては見にくくなるよね。

ちゅうか、もっと詳しい人達はMac関係のメーリングリストとかfj行かないといないでしょう。
0009デフォルトの名無しさんNGNG
>>1
【mips RISCアーキテクチャ】でも読んで、
まずRISCチップの基礎を学んでからの方が良いと思うよ。
0010デフォルトの名無しさんNGNG
CodeWarriorなんかだと、プロファイルも簡単に
取れるから、コード書き換えてはプロファイルとって、
アセンブラ出力を眺めたり、手でアセンブラコード書いたり、
ってついしちゃうよね。ひまなときとか。
0011デフォルトの名無しさんNGNG
age
0012デフォルトの名無しさんNGNG
何度言ったら分かるんだ。
アセンブリ言語を アセンブルするのが、アセンブラだ。
0013デフォルトの名無しさんNGNG
なんかしょーもないスレがあがってるね。
0014デフォルトの名無しさんNGNG
>>12

コピペ、カコワルイ

しかも終わってるスレに反応してやがる。
>>11はage荒らしだろ、アホ。
■ このスレッドは過去ログ倉庫に格納されています