Rota
ツールチェインを構成するアセンブラ
x86_64アセンブリを入力として、オブジェクトファイルを出力する
雑記
ツールチェインの中で一番処理に時間がかかる
コンパイラの生成するアセンブリが数千行ある+内部でそのアセンブリを約3周しているのが原因だと思われ
errorも同じなのでここらへんをまとめたいという気持ちがある
x86asmの単体テストはほとんどしておらず、オペランドエンコーディングごとにしている程度 これは都合上アセンブリを文字列で表現したほうがテストしやすいため
非常によろしくないので改善したい
3つのフェーズに分けてコードを生成している
シンボル収集→コード生成→シンボル解決
参照しているシンボルが前にあるか後ろにあるかで処理が変わって煩雑なので、先にシンボルを収集している
シンボルを参照しているコードの位置を記憶しておき、とりあえずすべてのコードを生成する
すると任意のオフセットを計算できるようになるので、記憶していた箇所を書き換える
シンボル周りの処理が面倒
シンボルとか再配置とかオブジェクトファイルの生成とかが主な仕事
めんどい