いろんなものはつながっている

いまさらだけどアセンブラを

そもそもプログラムってどう動くのかとか、OSってなんだということを少しでも理解したいと思い、その一環で、「たのしいバイナリの歩き方」や「OS自作入門」、「12ステップで作る組込みOS自作入門」を読んで実際にうちこんで実行してみたものの、残念ながら書かかれていることの半分も腹におちていない。

そもそも、まずアセンブラがどうもしっくり読めない。ネットでアセンブラ入門といった類のサイトを読んでもわかったようなわからないような、、。

自分でバリバリ書いていないのだから、それでわかろうというのが虫がよすぎるはわかっている。そんなときに、ふとこのサイトを見る機会があり、いままでぜんぜん頭に入らなかったものがかなりしっくり感じられるようになった。

このサイトを参考に、簡単なコードを書いてコンパイラが出力したアセンブリソースを読み解くこともできた。簡単なコードを自分で書いてコンパイラが出力したアセンブリソースを読み解くことを繰り返せば理解が深まるかなと漠然と考えてはいたが、これでさわれる環境が整った。

また、Visual StudioでNASM形式のアセンブラを書いて実行できる環境を整えることができ、自分で実際にみようみまねで書いたりすることもできた。

超超基本的なことがようやく理解できたにすぎないが、なんにしても進んだ感があってよかった。
ちなみに、私が行ったVisual StudioでのNASM形式のアセンブラを取り込む環境設定の手順は以下。

1.http://www.nasm.us/ のサイトにいきnasmをダウンロードしてパスを通す。
2.nasm.exeをコピーして名前nasmw.exeとする
3.Visual Studioで[プロジェクトのプロパティ]-[カスタム ビルド ステップ]の[コマンドライン]に
nasmw -DWIN32 -f win32 -i$(InputDir)\ $(InputPath) -o $(OutDir)/$(InputName).obj
[出力]に
$(OutDir)/$(InputName).obj
を入力する。

そもそもアセンブラにはくつか種類があって、NASMとかMASMとか、いろいろでてくるの種類によって当然アセンブラの書き方もちがってそれも自分にとっては混乱のもとであった。
NASM(Netwide Assembler)はインテルx86を対象としたフリーソフトウェアのアセンブラであり、16ビット、32ビット (IA-32)、64ビットすべてのコード生成に対応している、とのこと。
MASM(Microsoft Macro Assembler)は、マイクロソフトがMS-DOS上の開発のために製造し、DOS上では最もポピュラーなアセンブラになった、とのこと。
あと、GASというものもよくでてきて、これはGUNアセンブラ、とのこと。

これを機に少しでも理解がすすむといいな。

関連記事

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

スポンサード リンク

カテゴリー

スポンサード リンク