16

llvm に関する Web ページや記事をいくつか読みましたが、このプロジェクトに非常に興味があります。(おそらく、x86 の複雑な点に苦労することなく、コンパイラーの作成について何かを学ぶためです)。

llvm アセンブリの書き方やアセンブル方法が書かれているページもありますが、実際にこれらを実行するにはどのような環境が必要なのかはわかりませんでした。ファイルに対して llvm-gcc を実行して、C コンテキストで実行可能なオブジェクト ファイルを取得できることはわかっています。しかし、C ランタイム環境 (およびその友人) を使用したくない場合、libc.sollvm コードを実行するには何が必要ですか? それに関するドキュメントはありますか?

4

4 に答える 4

11

LLVM アセンブラがあるようです。

llvm-as は LLVM アセンブラです。人間が読める LLVM アセンブリ言語を含むファイルを読み取り、それを LLVM ビットコードに変換し、結果をファイルまたは標準出力に書き込みます。

于 2011-10-14T20:42:12.520 に答える
4

LLVM アセンブリを受け入れる静的コンパイラ:

http://llvm.org/docs/CommandGuide/llc.html

LLVM アセンブリ言語リファレンス:

http://llvm.org/docs/LangRef.html

于 2012-11-11T04:37:14.673 に答える
1

Archlinux の LLVM 11.1 は、上記の回答のコードを受け入れませんでした。これは、現在のLLVM IR ドキュメントからのものです。

cat > hello.ll <<EOF
@.str = private unnamed_addr constant [13 x i8] c"hello world\0A\00"
declare i32 @puts(i8* nocapture) nounwind
define i32 @main() {   ; i32()*
  %cast210 = getelementptr [13 x i8], [13 x i8]* @.str, i64 0, i64 0
  call i32 @puts(i8* %cast210)
  ret i32 0
}
!0 = !{i32 42, null, !"string"}
!foo = !{!0}
EOF
lli hello.ll

単独で開始するlliと、プロンプトは表示されませんが、入力は受け入れられます。Ctrl-Dただし、この入力は (EOF)後にのみ評価されます。

REPLを見つけたかったので、ここに来ました。運がない。

于 2021-03-15T16:41:06.140 に答える