*アセンブリ言語 [#y2e7d5fc]
#contents
#br

*はじめに [#h97e9c50]
あせんぶらぶら。現在、アセンブラを使わなければならないという状況はあまりない。~
だが、最適化のためとか、Revesingのためとかカーネル作る状況ではやっぱり必要なんじゃなぁ〜い?~
ということで、まとめておく。

ただ、一言にアセンブリ言語といっても、CPU(MPU)によって違ったり、それこそ構文のまったく違う
アセンブラがいっぱいあるので、それぞれ別に解説ページをつくることにしよう。

基本的なことについてはCPUの成り立ちとかそういう感じのページをあとで誰かが作ってくれるよ!きっと。

*アセンブリ言語一覧 [#o16ecac9]
**NASM (Netwide Assembler) [#g0d985bf]
**[[NASM>./nasm]] (Netwide Assembler) [#g0d985bf]
-x86向けのアセンブラ。16ビット,32ビットどっちも可能。
-ELFとかa.out形式だとかいろんなフォーマットで出力出きるので便利、生の機械語も出力できたりするので、OSとかの開発にも使える。
-Intel構文。ライセンスはいろいろあってLGPL

**MASM [#x993bca2]
**[[MASM>./masm]] [#x993bca2]
-Microsoftがx86, Windowsのために作ったアセンブラ。
-フリーソフト
-Intel構文
-WindowsでReversingするなら必須。
-[[ここ:http://www.masm32.com/]]からダウンロードできる。
-VC++でMASM:VC++2005EEなら - [[Microsoft Macro Assembler 8.0 (MASM) パッケージ (x86 用):http://www.microsoft.com/downloads/details.aspx?FamilyID=7A1C9DA0-0510-44A2-B042-7EF370530C64&displaylang=ja]] を入手。VC++2008EEでは不要
-VC++以外なら [[MASM32プロジェクト:http://www.movsd.com/]] の [[MASM32:http://www.masm32.com/]] を入手。

**TASM [#h74ca6d4]
**[[TASM>./tasm]] [#h74ca6d4]
-Borlandが作っていたMASMと互換性の高いアセンブラ。x86向け

**gas (GNU Assembler) [#kccd4bf1]
**[[gas>./gas]] (GNU Assembler) [#kccd4bf1]
-gccについてくる。x86向け
-GNU財団によるGNUによるGNUのためのアセンブラ。もちろんライセンスはGPL
-一部では構文がキモいとされるが、あくまでも主観的な話し。gcc -Sでの出力記法がこれなので、読めると便利。
-AT&T構文

**BASE-60 [#o2a38d0b]
**[[BASE-60>./base_60]] [#o2a38d0b]
-Z80用アセンブラ
-=とかが使えるちょいっと変り種

**Flasm [#id51b6c4]
**[[Flasm>./flasm]] [#id51b6c4]
-世にも珍しいFlash(Action Script)用のアセンブラ兼逆アセンブラ。ただしこれ単体では実行ファイルが出力できないので、リソースの入ったswfを用意する必要がある。
-変数名がそのまま使われて、もれなくガベコレが付いてきたりする。
-現在のところActionScript2まで対応、3.0は3.0の中間言語が埋め込まれた状態で逆アセンブリされる。
-Intel構文

**NESASM [#o0368de1]
**[[NESASM>./nesasm]] [#o0368de1]
-ファミコン(6502)向けのアセンブラ。正確には、世界的に有名なNESイメージ(ファミコンエミュレータ用ROM形式)に出力するのであって、6502アセンブラではないし、そのままファミコンカートリッジに入れても動かない。
-CPUだけでなくてPPUとかAPUとか弄れて楽しい。
-Intel構文

#br
#hr
他にもCOMPASSとかA86とかAtari Assembler Editorとかいろいろあって困りますね><

*基本的なこと [#efe6e240]


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS