*アセンブリ言語 [#y2e7d5fc] #contents #br *はじめに [#h97e9c50] あせんぶらぶら。現在、アセンブラを使わなければならないという状況はあまりない。~ だが、最適化のためとか、Revesingのためとかカーネル作る状況ではやっぱり必要なんじゃなぁ〜い?~ ということで、まとめておく。 ただ、一言にアセンブリ言語といっても、CPU(MPU)によって違ったり、それこそ構文のまったく違う アセンブラがいっぱいあるので、それぞれ別に解説ページをつくることにしよう。 基本的なことについてはCPUの成り立ちとかそういう感じのページをあとで誰かが作ってくれるよ!きっと。 *アセンブリ言語一覧 [#o16ecac9] **NASM (Netwide Assembler) [#g0d985bf] -x86向けのアセンブラ。16ビット,32ビットどっちも可能。 -ELFとかa.out形式だとかいろんなフォーマットで出力出きるので便利、生の機械語も出力できたりするので、OSとかの開発にも使える。 -Intel構文。ライセンスはいろいろあってLGPL **MASM [#x993bca2] -Microsoftがx86, Windowsのために作ったアセンブラ。 -フリーソフト -Intel構文 -WindowsでReversingするなら必須。 -[[ここ:http://www.masm32.com/]]からダウンロードできる。 **TASM [#h74ca6d4] -Borlandが作っていたMASMと互換性の高いアセンブラ。x86向け **gas (GNU Assembler) [#kccd4bf1] -gccについてくる。x86向け -GNU財団によるGNUによるGNUのためのアセンブラ。もちろんライセンスはGPL -一部では構文がキモいとされるが、あくまでも主観的な話し。gcc -Sでの出力記法がこれなので、読めると便利。 -AT&T構文 **BASE-60 [#o2a38d0b] -Z80用アセンブラ -=とかが使えるちょいっと変り種 **Flasm [#id51b6c4] -世にも珍しいFlash(Action Script)用のアセンブラ兼逆アセンブラ。ただしこれ単体では実行ファイルが出力できないので、リソースの入ったswfを用意する必要がある。 -変数名がそのまま使われて、もれなくガベコレが付いてきたりする。 -現在のところActionScript2まで対応、3.0は3.0の中間言語が埋め込まれた状態で逆アセンブリされる。 -Intel構文 **NESASM [#o0368de1] -ファミコン(6502)向けのアセンブラ。正確には、世界的に有名なNESイメージ(ファミコンエミュレータ用ROM形式)に出力するのであって、6502アセンブラではないし、そのままファミコンカートリッジに入れても動かない。 -CPUだけでなくてPPUとかAPUとか弄れて楽しい。 -Intel構文 #br 他にもCOMPASSとかA86とかAtari Assembler Editorとかいろいろあって困りますね>< *基本的なこと [#efe6e240]