llvmをいじる
当方mac使いですが、
ふとアセンブリを実行しようと思って()
gcc -Sでhoge.sを出力し
as -o hoge.o hoge.s
とやりましたら、Unknown pseudo-opというエラーが。
そういえば今ってgccじゃなくてclangのなんかよくわからないやつがgccとしてエイリアスされてるんだっけ、と思ったので
他のでやろう!と思い
brew install llvm
でllvmをインストールして、そのコマンド群でいじってみました。
中を見てみるとこんな感じ。
ふとアセンブリを実行しようと思って()
gcc -Sでhoge.sを出力し
as -o hoge.o hoge.s
とやりましたら、Unknown pseudo-opというエラーが。
そういえば今ってgccじゃなくてclangのなんかよくわからないやつがgccとしてエイリアスされてるんだっけ、と思ったので
他のでやろう!と思い
brew install llvm
でllvmをインストールして、そのコマンド群でいじってみました。
中を見てみるとこんな感じ。
objdumpも入ってる!(そりゃそうですね)
llvm-gcc -> hoge.llファイル出力
llvm-as hoge.ll -> hoge.bcファイル出力
lli hoge.bc Just in timeコンパイラで実行できる
llc hoge.bc ネイティブなコードに変換できる (hoge.s)
hoge.sを作ってしまえばgccでコンパイルできます。
うーん、大体わかりましたがllファイルはgccだと何に対応するのかな。
追記:
もしかしたらRTLとかの中間言語に相当するのかもしれない。
真偽は定かではないけれども。
コメント
コメントを投稿