最近、C 関数が LLVM バイトコードにコンパイルされる方法と、LLVM バイトコードが x86 ASM に変換される方法を調べるように言われました。通常の GNU/gcc ユーザーとして、これについていくつか質問があります。控えめに言って。
GNU/gcc もバイトコードにコンパイルされますか? それをできる?私は、gcc が直接 ASM にコンパイルされるという印象を受けました。そうでない場合、clang コマンドと同じようにバイトコードの仲介を表示する方法はありますか?
~$ clang ~/prog_name.c -S -emit-llvm -o -
<== は、prog_name.c のバイトコードを表示します。
また、バイトコードはかなりビザンチンだと思います。対照的に、アセンブリ言語は軽い読書のように見えます。言い換えれば、私はそれが何を言っているのかほとんどわかりません。
バイトコードが提供する情報を漠然と解読するためのアドバイスや参考文献はありますか? 現在、私は実際の ASM と比較対照しているので、進行が遅いと言うのは褒め言葉です。
おそらく、これはすべてコミカルにナイーブですが、これの表面を突破するのは非常に難しいと思います.