アセンブリ言語

 

はじめに

あせんぶらぶら。現在、アセンブラを使わなければならないという状況はあまりない。
だが、最適化のためとか、Revesingのためとかカーネル作る状況ではやっぱり必要なんじゃなぁ〜い?
ということで、まとめておく。 コマンドプロンプトでdebugと入力するとアセンブリモードになってウマー メモリも操れる。AX最強!

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

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

アセンブリ言語一覧

NASM? (Netwide Assembler)

  • x86向けのアセンブラ。16ビット,32ビットどっちも可能。
  • ELFとかa.out形式だとかいろんなフォーマットで出力出きるので便利、生の機械語も出力できたりするので、OSとかの開発にも使える。
  • Intel構文。ライセンスはいろいろあってLGPL

MASM

TASM?

  • Borlandが作っていたMASMと互換性の高いアセンブラ。x86向け

gas? (GNU Assembler)

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

BASE-60?

  • Z80用アセンブラ
  • =とかが使えるちょいっと変り種

Flasm?

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

NESASM?

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

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

基本的なこと

参考リンク