機械語初心者がアセンブラを作ってみる

機械語初心者がアセンブラを作ってみるだけのブログです。ひつまぶしひつまぶし

作ってみた

このブログは

 

機械語初心者がアセンブラを作ってみるまで

 

かな~り大雑把に綴るブログです。

 

に、なるかもしれません。

多分。

 

僕の知識といえば、

アセンブラはニモニックやオペランドを直接機械語に置き換えるんだなー

っていう程度かな。

 

実を言うと、

Windowsアプリケーションを作るコンパイラを作ろうと思ったけど

今までに作ったのはプログラムをアセンブリに変換する

ステージコンパイラ(広義)ばかりで

ネイティブコンパイラを作ったことは一度もないんです。

しかもそのアセンブラすら自作ではなくMASMという。

 

念願のネイティブコンパイラを作る代わりに

自分でアセンブラを作っちゃおう と思ったので。。

 

なんか

自分で作ったコンパイラソースコードをアセンブリに置換した後、

MASMではなく自分で作ったアセンブラ機械語に置き換えるのって

気持ちよさそうですよね?

どうせプログラミング言語作るなら機械語吐くまで全部自分でやりたい。

という理由で。

 

もちろんWindowsアプリケーションがアセンブルできるように

っていうのが目標です。

 

Windowsアプリケーション(exeファイル)の機械語には

PEヘッダとか

大量のNULL空間とか

あるらしいんですが

それはこれから勉強(汗)

とりあえずPEヘッダの前には

DOSで起動しようとしたバカ向けのコードを書いてる

あたりまでは覚えますた。

 

 

としまして

今はとりあえず

アセンブラ作りはじめました。

 

アセンブラの開発言語はC。

実はC言語自体も初心者でよく分からないのですが

先ほど「mov eax, ebx」をトークン解析するあたりまできました。

(※まだ機械語には置換してません)

 

今までコンパイラを作るときは

日本語プログラミング言語「なでしこ」を使っていましたので、

英語のプログラミング言語はちょっとわからないですねw

 

アセンブラの言語仕様(という呼び方でいいかも分からないけど)

については

実はまだまとまってないのでぽちぽち決めていきます。

機械語勉強のために作るし

上手く行ってもどうせコンパイラの踏み台にするし

めちゃくちゃでもいいやという感じで。

 

アセンブラの名前は「三日坊主」でいきます。

どうせ途中で飽きますので、よろしくお願いします。