2012-02-19 16 views
1

自分でアセンブラを作ろうとしていますが(NASM、MASMなどのように)、どこから起動するのか分かりません。私はx86アセンブリを理解していますが、アセンブラの仕組みについてはあまりよく分かりません。私はどこから始めるべきですか?この場合、Googleは私の手助けをしていません。これを学ぶのに有益なサイトはありますか?私自身のアセンブラの作成はどこから始めるのですか?

+0

黙って投票を終了するのではなく、コメントを投稿することはできますか? – elijaheac

+0

また、「アセンブラ」にタグを付けるのはなぜですか? – elijaheac

+0

なぜあなたが投票に投票しているのかと言う人はいませんか? – elijaheac

答えて

2

アセンブラは、(リンカと混同しないように)2つのことを行いプログラムです:

  • それはオペコードにmemotechnical名を変換し、上でそれらを格納し、実際のアドレス
  • でラベルを置き換えますいわゆるオブジェクトファイル。

必要なものは、マップ名がオペコードに対応するルックアップテーブルです。それを行うには、まっすぐ進むべきである。

+0

ええ、私はテーブルを探しています。 Googleは役に立たない。それだけが必要。編集:それは私が必要なもののすべてではありません。 – elijaheac

+0

実際に、あなたは私にアイデアを与えるのを助けました。私はそれが動作するかどうかを確認します。 – elijaheac

+0

私がちょうど言ったことについては心配しないでください – elijaheac

2

assmbler命令を機械コードに変換し、アドレスを計算し、すべてをオブジェクトファイルに入れる必要があります。すべてを1回のパスで行う必要はありません。

オペコードテーブルをお探しの場合、良い出発点はhttp://ref.x86asm.net/coder32.htmlまたはhttp://www.sandpile.org/です。もちろん、公式のIntelとAMDのドキュメントも使用できます。

オブジェクトファイル形式については、コードで何をしたいかによって異なります。 Alexが指摘したように、純粋なバイナリは、ブートセクタ、カーネル、またはDOS * .comプログラム以上のものには使用できません。その他すべての場合、オブジェクトファイルに再配置情報が必要です。

+0

DOS .COMプログラムは、1つのセグメントを占有し、それを指しているすべてのセグメントレジスタで開始したため、再配置情報を持っていませんでした。仮想から物理へのアドレス変換を使用すると、同様に、それ自身の仮想アドレス空間(.COMセグメントと同様)に存在するすべてのプロセスのメインモジュールの再配置を避けることができます。 –

+0

リンクありがとう! – elijaheac

+0

@Alex:ありがとう、私はそれを忘れてしまった。 – hirschhornsalz

関連する問題