[HOME]: [Mac OS X]: [MacPython]: [Emacs]: [生存報告記]: [MacEmacs JP Project]: [NTEmacs JP Project]:

概要

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

GNU lightning

入門Assembly

あくまでもCを知っている前提です。とりあえずCからAssemblyを学ぶ方が得策だと判断しました。

初めてのAssembly

#include <stdio.h>

int main(void) {
  printf("Hello World!\n");
  return 0;
}

これをhello.cの名前で保存する。

Terminalより

cc hello.c
./a.out

で動作を確認

cc -S hello.c

するとhello.sというファイルが作成される。

余談だが

#include <stdio.h>
main() {
  printf("Hello World!\n");
}

などとしてもはかれるソースに違いはない。最近のコンパイラは小手先の最適化なぞ完全に無意味です。

読みやすく、ISO/ANSIの規約正確な記述のほうがよりよいでしょう。またISO/ANSIの規約に正確なほうが最適化率が高い場合が多いです。

さてhello.sから実行可能ファイルを作成するには以下の方法でよい。

cc hello.s

ldも実行されて実行ファイルが作成される。

ldされていない物を必要とするならばccにフラグをたてるかasを利用すればよい。

文法の理解

/Developer/Documentation/DeveloperTools/Assembler/Assembler.pdf

を読めば理解は可能です。

モトローラ

モトローラ・半導体セクター : PowerPC(R) 開発支援サイト

Master Selection Guide 2003 (MPC60x/7xx/74xx/824x)

モトローラ・半導体セクター : 資料

IBM

参考サイト

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

GCCの使い方RTL表現

フリーソフトウェア徹底活用講座

RISC系解説サイト

RISC系は意外と近いので参考になる事が多い。ARM系の解説サイトが結構存在する。

Linux Zaurusでアセンブリプログラミング

x86系解説サイト

アセンプリとしてはPPC系はすくないのでx86系を参照して知識の補足をする事があります。。。実際は直接にはあまり訳にはたちませんが、、

http://webster.cs.ucr.edu/

Introduction to UNIX assembly programming

マシン語大研究

Assembly Programming Linux

gas

GNU アセンブラ入門(GAS)

CandASM

プログラミングの力を生み出す本―インテルCPUのGNUユーザへ


CategoryPrograming CategoryMac CategoryProgramLanguage