LLVMはこれのオブジェクト生成のあたりを眺めた感じでは、スクリプトではなくてC++のコードとして書く感じに見えるけど……。
作って学ぶコンピュータアーキテクチャ —— LLVMとRISC-Vによる低レイヤプログラミングの基礎 | 木村 優之
https://www.amazon.co.jp/dp/4297129140
@n_soda LLVM使ったことない&流し読みなので全然わかってないですが、リンカコマンドの互換機能? みたいなのはありそうな予感はしますね(どのみちELFですし混在できそうな
@mitsuki64 LLVM のデフォルトリンカーである lld には GNU ld のリンカー・スクリプトのサブセットの機能があるようです: https://lld.llvm.org/ELF/linker_script.html
あと、コンパイラは LLVM を使うけど、リンカーは GNU ld / gold / mold を使うってこともできるので…
@n_soda ありがとうございます、やはり互換機能があるんですね。
例の本のコードはコンパイラから直接コード生成する経路のRISC-V対応みたいでしたので、アセンブラ通す分には標準リンカで(リンカスクリプト通して)やるみたいですね。
@mitsuki64 UNIX系OSの場合、ELF (ファイル形式), DWARF (ELF中のデバッグ情報形式)、System-V ABI という標準があり、どのコンパイラー・リンカーもそれに合わせているので、コンパイラやリンカーは(リンカースクリプトをゴリゴリに書いている場合など特殊なケースを除き)交換可能ですね。異なるコンパイラを混ぜて単一バイナリも作れます。
UEFIブートブロックとかだとWindows系ABIなのでやや面倒になりますが。
@mitsuki64 リンカー・スクリプト機能はその名の通りリンカーの機能 (GNU ld と gold とか mold とかに、リンカー固有のシンタックスで実装されている)なので、LLVM でもリンク時に使うリンカー次第で使えるような… (LLVM+RISC-Vの本は未読なので、このコメントは大外しかも?)