#pragma section-numbers off [[TableOfContents]] = 概要 = Assembly language :: コンピュータの機械語命令と一対一に対応するニーモニックを規定したプログラム言語。 Assembly :: 通常はAssembly language(アセンブリ言語)の略記表現です。 Assembler :: Assemblyを実行可能形式にする処理系の事です。コンパイル言語に対するコンパイラに対応します。 Assemble :: Assemblyを機械語にする事。Assembly languageで記述したソースを実行可能なバイナリ形式にする事。コンパイル言語に対するコンパイルに対応します。用例:Hand Assemble。 Webを検索するとこれらの単語をまぜて利用している人がいます。悪質なのだと翻訳文章でAssemblyという部分をアセンブラなんて訳してる人までいる始末です。。。 Assembleは動詞でこの名詞表現がAssemblyであり、Assemblyするための物がAssemblerなので、英語文献では非常に厳密にわけて利用されています(あたりまえ)。 単語の意味はできれば正確に利用した方がいいでしょう。 ~erは~するための物、~を目的とする物という意味です。Battlerとだと闘うための物って意味になるように。。。 = 仕様文章 = http://www.mot.co.jp/SPS/html/lit/pdf/MPCFPE32BJ_R0.pdf DeveloperToolsの文書 {{{ /Developer/Documentation/DeveloperTools/Assembler }}} = 学習用ツール = 通常は {{{ gcc -S test.c }}} で吐き出されるコードを読むのがよい。ただし、これはgas形式となります。 Code Warrior-style を好むなら以下で出力されます。 {{{ gcc -fasm-blocks -S test.c }}} [http://www.gnu.org/software/lightning/lightning.html GNU lightning] = 入門Assembly = あくまでもCを知っている前提です。とりあえずCからAssemblyを学ぶ方が得策だと判断しました。 == 初めてのAssembly == {{{ #include int main(void) { printf("Hello World!\n"); return 0; } }}} これをhello.cの名前で保存する。 Terminalより {{{ cc hello.c ./a.out }}} で動作を確認 {{{ cc -S hello.c }}} するとhello.sというファイルが作成される。 最近のコンパイラは小手先の最適化なぞほとんど無意味だというのが結構わかったりします。 読みやすく、ISO/ANSIの規約正確な記述のほうがよりよいでしょう。またISO/ANSIの規約に正確なほうが最適化率が高かったりします。ちゃんと検証してから物事をやりましょう。 さてhello.sから実行可能ファイルを作成するには以下の方法でよい。 {{{ cc hello.s }}} ldも実行されて実行ファイルが作成される。 ldされていない物を必要とするならばccにフラグをたてるかasを利用すればよい。 == 文法の理解 == {{{ /Developer/Documentation/DeveloperTools/Assembler/Assembler.pdf }}} を読めば理解は可能です。 = モトローラ = [http://www.mot.co.jp/SPS/html/developer/powerpc.html モトローラ・半導体セクター : PowerPC(R) 開発支援サイト] [http://www.mot.co.jp/SPS/html/webmsg/mp/mpc600.html Master Selection Guide 2003 (MPC60x/7xx/74xx/824x)] [http://www.mot.co.jp/SPS/html/materials/ モトローラ・半導体セクター : 資料] = IBM = [http://www-3.ibm.com/chips/techlib/techlib.nsf/techdocs/852569B20050FF778525699600719DF2 Software Reference Manual - PowerPC Microprocessor Family: The Programming Environments for 32-Bit Microprocessors] = 参考サイト = [http://ruffnex.oc.to/kenji/text/asmbook/ 「アセンブリ言語の教科書」の原稿] http://www.lightsoft.co.uk/Fantasm/Beginners/begin1.html http://www.lightsoft.co.uk/Fantasm/fant.html http://www.mactech.com/articles/mactech/Vol.10/10.09/PowerPCAssembly/ [http://www-6.ibm.com/jp/developerworks/linux/021004/j_l-ppc.html dW : Linux : PowerPCアセンブリー] [http://www.sra.co.jp/wingnut/gcc/gcc-j.html#RTL GCCの使い方RTL表現] [http://www.cqpub.co.jp/interface/column/freesoft/ フリーソフトウェア徹底活用講座] [http://www.watalab.cs.uec.ac.jp/students/yuke/index.html PowerPC-yuke@watalab] = RISC系解説サイト = PowerPCもRISC。RISCの解説としてはARM系の解説サイトが結構存在する。 [http://www.nk.rim.or.jp/~jun/slasm/arm00.html Linux Zaurusでアセンブリプログラミング] = x86系解説サイト = アセンプリとしてはPPC系はすくないのでx86系を参照して知識の補足をする事があります。。。それほど訳にたたない場合も多いですが、、 http://webster.cs.ucr.edu/ [http://webster.cs.ucr.edu/AoA/index.html Art of Assembly Language Programming and HLA by Randall Hyde] [http://www.daemonnews.org/200006/assembly-intro.html Introduction to UNIX assembly programming] [http://hp.vector.co.jp/authors/VA015412/ マシン語大研究] [http://www.nk.rim.or.jp/~jun/lxasm/asm00.html Assembly Programming Linux] [http://www5c.biglobe.ne.jp/~ecb/assembler/assembler00.html アセンブラ入門]:古い感じ [http://www.nk.rim.or.jp/~jun/lxasm/asm00.html Assembly Programming Linux] = gas = ["GNUassembler"] ---- CategoryPrograming CategoryMac CategoryProgramLanguage