C++相談室 part161
at TECH
[
2ch
|
▼Menu
]
■コピペモード
□
スレを通常表示
□
オプションモード
□このスレッドのURL
■項目テキスト
977:デフォルトの名無しさん 22/10/26 09:39:06.48 8n8wOLOb.net >>964 やはりrequiresを1行足すしかないか... template<allow_ref<std::integral> T> void func(T&&); とでも書きたかったけど、コンセプトを受け取るテンプレートが書けないっぽいから諦めた 978:デフォルトの名無しさん 22/10/27 02:01:40.47 XIiqnbUh.net clangのソースで、CPUのマシン語を生成している場所を調べていて、 X86AsmPrinter クラスや X86MCInstLower クラスがそれに強く関与していることが分かって きました。 X86AsmPrinter クラスや X86MCInstLower クラスは、お互いに参照されてますが、 この2つのクラスは、いずれも「作られている場所」が見つかりません。 「作られている」とは、new X86AsmPrinter や、X86AsmPrinter a;、 new X86MCInstLower や X86MCInstLower b; のようにしている場所です。 どなたか分かりませんか? 979:デフォルトの名無しさん 22/10/27 02:32:01.95 XIiqnbUh.net >>978 すみません、多分、以下の部分ですね。 これで、new X86AsmPrinterしたアドレスを、getTheX86_32Target()やgetTheX86_64Target() が返した Target クラスのシングルトンのインスタンス xxx に対して xxx.AsmPrinterCtorFn = アドレス; のように記録しているようです。 extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeX86AsmPrinter() { RegisterAsmPrinter<X86AsmPrinter> X(getTheX86_32Target()); RegisterAsmPrinter<X86AsmPrinter> Y(getTheX86_64Target()); } template <class AsmPrinterImpl> struct RegisterAsmPrinter { RegisterAsmPrinter(Target &T) { TargetRegistry::RegisterAsmPrinter(T, &Allocator); } private: static AsmPrinter *Allocator(TargetMachine &TM, std::unique_ptr<MCStreamer> &&Streamer) { return new AsmPrinterImpl(TM, std::move(Streamer)); } }; /// TargetRegistry - Generic interface to target specific features. struct TargetRegistry { ・・・ static void RegisterAsmPrinter(Target &T, Target::AsmPrinterCtorTy Fn) { T.AsmPrinterCtorFn = Fn; } ・・・ };
次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
レスジャンプ
mixiチェック!
Twitterに投稿
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch
577日前に更新/289 KB
担当:undef