私はアセンブラを書くというコンセプトに非常に慣れていて、大量の資料を読んだ後でも、私はまだいくつかのコンセプトの周りに頭を抱えています。Z80アセンブラを書く - ASMをレキシングし、コンポジションを使用して構文解析ツリーを構築しますか?
実際にソースファイルをトークンに分割するプロセスとは何ですか?私はこのプロセスをレキシングと呼んでおり、実際のコード例を上から下に検索していますが、単純なコード例を非常に歓迎しています。)
構文解析すると、情報はツリーの上または下を通過する必要がありますか?私は次のように、取るされて尋ねる理由:
NN
LD BCを、(???)今
___ LD ___
| |
BC nn
このツリーが横断されると、次のマシンコードが生成される必要があります。
01 n n
指示があった場合:
LD DE,nn
その後、出力は次のようにする必要があります:それは、問題を提起オペランドに基づいて、異なるLDのノード戻り何かをするか、それが何かを返すオペランドであることを意味
11 n n
?そしてこれはどのように達成されましたか?時間が許せば、もっと簡単なコード例が優れています。
先進の既存のツールではなく、生のプロセスの一部を学ぶことに最も興味がありますので、YaccまたはFlexに送信する前に覚えておいてください。
これは特定のZ80の説明とマッチさせるのではなく、ビルドする必要があるツリーを説明することを意図していました。 私は80年代に多くのZ80アセンブラをコーディングしました。私はあなたが思うよりもそれについてもっと知っているかもしれません。 –
あなたの知識を実証してください。 Z80アセンブラを作成しましたか?私はしませんでしたが、私は8080と6809のアセンブラを書いています。あなたのアドバイスは私には間違っているようです。 –
あなたの経験はおそらく私のものとは異なるでしょう。私はCollins 8311(1968年頃)のためのアセンブラをコーディングしました。商用化されていない12,16ビットマシンで、マイクロコードアセンブラと他のメッセージで見た6809アセンブラについて聞いたことがありません。私はまた、さまざまなコンパイラのフロントエンド(私のバイオ情報とウェブサイトをチェックアウト)を構築しました。私の初期のアセンブラーは特別な手段で作られ、働きました。レクサーとパーサを使って構築した80年代以降、指定するのがはるかに簡単で、維持するために、拡張するために名前を付けました。 –