Top / Docs / プログラミング言語 / アセンブリ言語

アセンブリ言語#


はじめに#

あせんぶらぶら。現在、アセンブラを使わなければならないという状況はあまりない。
だが、最適化のためとか、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とかいろいろあって困りますね><

基本的なこと#

参考リンク#

信州大学工学部の講義資料。CPUの基本動作、(補足説明として)アセンブリ言語とマシン語

📝 このページに誤りを見つけたら…  GitHubで報告(エンジニア向け)  ・  フォームで報告