update
This commit is contained in:
parent
20f01e58d3
commit
d779ff78e5
85
main.asciidoc
Normal file
85
main.asciidoc
Normal file
@ -0,0 +1,85 @@
|
||||
= 自作ISAのためのLLVMバックエンドを書く薄い本(予定)
|
||||
艮 鮟鱇 <ushitora@anqou.net>
|
||||
:toc: left
|
||||
|
||||
== LLVMバックエンド概略
|
||||
|
||||
FIXME: 人がLLVMバックエンドを書きたくなるような文章をここに書く。
|
||||
|
||||
== 参考にすべき文献
|
||||
|
||||
== ISAの仕様を決める
|
||||
|
||||
=== CAHPv3アーキテクチャ仕様
|
||||
|
||||
== アセンブラを作る
|
||||
|
||||
=== LLVMをビルドする
|
||||
=== スケルトンバックエンドを追加する
|
||||
=== 簡易的なアセンブラを実装する
|
||||
=== `CAHPInstPrinter` を実装する
|
||||
=== テストを書く
|
||||
=== メモリ演算を追加する
|
||||
=== 属性を指定する
|
||||
=== ディスアセンブラを実装する
|
||||
=== relocationとfixupに対応する
|
||||
=== `%hi` と `%lo` に対応する
|
||||
=== `li a0, foo` をエラーにする
|
||||
=== llvm-objdump の調査
|
||||
=== `hlt` 疑似命令を追加する
|
||||
|
||||
== コード生成部を作る
|
||||
|
||||
=== コンパイラのスケルトンを作成する
|
||||
=== 基本的な演算に対応する
|
||||
=== 定数の実体化に対応する
|
||||
=== メモリ演算に対応する
|
||||
=== relocationに対応する
|
||||
=== 条件分岐に対応する
|
||||
=== 関数呼び出しに対応する
|
||||
=== 関数プロローグ・エピローグを実装する
|
||||
=== frame pointer eliminationを実装する
|
||||
=== `select` に対応する
|
||||
=== `FrameIndex` をlowerする。
|
||||
=== 大きなスタックフレームに対応する
|
||||
=== `SETCC` に対応する
|
||||
=== `ExternalSymbol` に対応する
|
||||
=== jump tableを無効化する
|
||||
=== インラインアセンブリに対応する
|
||||
=== fastccに対応する
|
||||
|
||||
== Cコンパイラに仕立てる
|
||||
|
||||
=== LLDにCAHPバックエンドを追加する
|
||||
=== ClangをCAHPに対応させる
|
||||
=== `crt0.o` と `cahp.lds` の導入
|
||||
=== `--nmagic` の有効化
|
||||
=== libcの有効化
|
||||
|
||||
== まともなコードを生成する
|
||||
|
||||
=== 分岐解析に対応する
|
||||
=== branch relaxationに対応する
|
||||
=== 16bit命令を活用する
|
||||
=== `jal` を活用する
|
||||
=== 命令スケジューリングを設定する
|
||||
=== 末尾再帰に対応する
|
||||
|
||||
== 落ち穂拾い
|
||||
|
||||
=== スタックを利用した引数渡し
|
||||
=== `byval` の対応
|
||||
=== 動的なスタック領域確保に対応する
|
||||
=== emergency spillに対応する
|
||||
=== 可変長引数関数に対応する
|
||||
=== 単体の `sext/zext/trunc` に対応する
|
||||
=== 乗算に対応する
|
||||
=== 除算・剰余に対応する
|
||||
=== `frameaddr/returnaddr` に対応する
|
||||
=== `ROTL/ROTR/BSWAP/CTTZ/CTLZ/CTPOP` に対応する
|
||||
=== 32bitのシフトに対応する
|
||||
=== 間接ジャンプに対応する
|
||||
=== `BlockAddress` のlowerに対応する
|
||||
|
||||
[bibliography]
|
||||
== 参考文献
|
Loading…
Reference in New Issue
Block a user