没有合适的资源?快使用搜索试试~ 我知道了~
首页llvm-backend.pdf
资源详情
资源评论
资源推荐

ᘉᦲᛔllvm.org by ᰂᖌᐰ
LLVMݸᒒ
Օᕨ
ᬯӻൈᬿԧᖫٟᖫᦲݸᒒጱದ҅llvm IR۸ԅګጱդᎱᘏٌ՜ࢶኞ౮ጱᇙᎱݢզ
ฎᖫ୵ୗᘏԫᬰګ୵ୗҁᚆᤩJITᖫᦲֵአ҂
LLVMጱݸᒒํӞӻፓຽ෫ىԅᇙጱդᎱኞ౮ᚆڠୌᐿፓຽCPUᔄࣳጱᬌڊ——۱ೡX86҅PowerPC҅ARM
SPARCݸᒒԞᚆᤩአኞ౮ᇙጱܔزቘᘏGPUጱSPUդᎱඪ೮ٖ໐ᦇᓒጱಗᤈ
ᬯӻىဳԭ૪ᕪӥԧጱLLVMྋୗᇇጱ҈llvm/lib/Targetፓ୯ӥ૪ํֺৼᇙڦࣈ҅ᬯӻىဳԅSPARCፓຽڠ
ୌᶉாᖫᦲҁԾኞᖫդᎱጱ҂ํፘ୮ຽٵጱᇙ҅ᔄইRISCեᵞӨڹݻ᧣አᥢ
ᘏ
ᬯӻጱᘏฎಅํᵱᥝٟӞӻLLVMݸᒒኞ౮ᇙᏝկᘏկፓຽդᎱጱՈ
ڹᴅ
ᬯԶᏐᶳḒضᴅғ
•LLVM Language Reference Manual —LLVMᖫ݇ᘍ
• The LLVM Target-Independent Code Generator — ᘉᦲLLVMٖ᮱ᤒᐏکፓຽଘݣᎱጱԆկݻᇙڦ
ဳդᎱኞ౮ᴤྦྷጱൈᬿғեᭌೠ᧣ଶ᭜ԭSSAጱս۸ړᯈڹ҈ݸᖗդᎱጱൊفݸ
Ꮁս۸ӨդᎱݎᭆ

ᘉᦲᛔllvm.org by ᰂᖌᐰ
•TableGen — ᧆൈᬿTableGen(tblgen)ଫአᓕቘᇙᶾמ௳զඪ೮LLVMդᎱጱኞ౮TableGenቘ
ᛔፓຽൈᬿկҁ.tdಘ҂ጱᬌفଚኞ౮C++դᎱ҅ᚆᤩդᎱኞ౮ڥአ
• Writing an LLVM Pass —ᖫܦᑕଧฎӞӻFunctionPass҅Ԟ֎ᵋᦜSelectionDAGቘྍṈ
ളӥࣁӾጱSPARCֺৼ೩ᨬԧThe SPARC Architecture Manual, Version 8 ֢ԅ݇ᘍᧇᕡጱARMեᵞ҅
݇ᘍ ARM Architecture Reference Manual ᬰӞྍىԭGNUᖫ໒ୗҁGAS҂҅Using As ٌ҅ԭᖫܦ
“Using As”۱ތԧӞᔮڜፓຽፘىጱᇙ
ྍṈ
ӞӻഘIRԅᇙፓຽᘏጱᖫᦲݸᒒ҅౮ӥڜྍṈғ
• ڠୌTargetMachineᔄጱৼᔄൈᬿ֦ጱፓຽጱᇙ೩ᨬᇙፓຽᔄկጱ૪ࣁֺৼྲইզ
SparcTargetMachine.cppSparcTargetMachine.h҅֕ฎԅ֦ጱፓຽଘݣץදկݷፘ֒ࣈ҅දݒአԧ
SparcጱդᎱԅ֦ፓຽଘݣ
• ൈᬿፓຽଘݣጱᵞ҅አTableGenӞӻᇙፓຽଘݣጱRegisterInfo.tdᬌفկኞ౮Ԏ҅
ڦݷ҅ᔄ֦ଫᧆԅTargetRegisterInfoᔄٟӞԶጱդᎱᤒᐏᧆᔄկහഝአԅړᯈ
ଚӬൈᬿժԏᳵጱፘ֢አىᔮ
• ൈᬿፓຽଘݣጱեᵞ᭗ᬦTableGenֵአᇙፓຽଘݣᇇጱTargetInstrFormat.tdӨTargetInstrInfo.td
ኞ౮ᇙፓຽଘݣጱեդᎱ֦ᵱᥝԅTargetInstrInfoᔄٟӞԶጱդᎱᤒᐏፓຽඪ೮ጱե
• ൈᬿեጱDAGᤒᐏکࣈፓຽଘݣጱեጱLLVM IRጱᭌೠӨ۸ֵአTableGenኞ౮܃ᯈཛྷୗጱ
դᎱᭌೠԭፓຽᇙᇇጱTargetInstrInfo.tdӾጱמ௳ጱեଚӬࣁXXXIselLowering.cppᖫٟդ
Ꮁ๊ഘᘏڢᴻࣁSelectionDAGӾӧᤩࣈඪ೮֢හഝᔄࣳ

ᘉᦲᛔllvm.org by ᰂᖌᐰ
• ᖫٟٟԅፓຽଘݣLLVM IRԅӞӻGAS໒ୗጱᖫܦ֦ଫᧆႲےᖫᒧԀک֦ፓຽଘݣᇇጱ
TargetInstrInfo.tdӾԎጱե֦ᵱᥝԅAsmPringterጱৼᔄٟӞԶᬰᤈLLVMکᖫጱ۸ӨӞӻ
TargetAsmInfo෫ىᔲᥝጱৼᔄ
• ݢᭌࣈ҅ےৼଘݣጱඪ೮ҁྲই҅ӧݶۑᚆጱݒᰁ҂֦ଫᧆᖫٟTargetSubtargetᔄጱৼᔄդᎱ҅꧋ᦜ
֦ݢզֵአ -mcpu= -mattr=եᤈᭌᶱ
• ݢᭌࣈ҅ےJITඪ೮ӨڠୌᎱݎአፗളݎԫᬰګդᎱکٖӾ
ࣁ.cppӨ.hկӾ҅ڡত۸ࣈᦡᗝԧᬯԶොဩጱᆐݸሿժত֦҅ݢᚆӧᎣ᭲ߺԶฎᐺํ౮ާᮎᔄአک
ߺԶᕟկࣁৼᔄӾฎᵱᥝጱ
ڹ
ᴬӤڠୌ֦ጱᖫᦲݸᒒ֦҅ᵱᥝڠୌץදᦜկᬯ᯾ᦎᦞ๋ጱఘ٭֕ฎᴬଫአLLVMፓຽ෫ىጱդᎱ
ኞ౮֦҅ᶳೲᆙ
Ḓض֦҅ଫᧆ lib/TargetӥڠୌӞӻৼፓ୯නಅํፓຽፘىጱկইຎ֦ጱፓຽଘݣݞ؉“Dummy”҅ڠୌፓ
୯lib/Target/Dummy
ࣁᬯӻෛፓ୯Ӿ҅ڠୌCMakeList.txtկ๋ᓌܔጱොୗฎګٌ՜ፓຽଘݣጱCMakeLists.txtկଚӬץද
ᛗᵱᥝ۱ތLLVM_TARGET_DEFINITIONSݒᰁlibraryݷԅLLVMDummyҁྲই҅MIPଘݣ҂ݚ֦҅ݢզ
libraryړԅLLVMDummyCodeGenLLVMDummyAsmPrinter҅ݸᘏଫᧆࣁ lib/Target/Dummyৼፓ୯Ӿᤩሿ
ҁֺই҅PowerPCଘݣ҂
ဳᬯӷᐿݷ໒᮷ᏝᖫᎱᬰllvm-configֵአݚጱᖫᎱ໒ݢᚆႰႝllvm-configࣁllcᬳളᬦᑕӾԾኞஉ
ᬳളᲙ
౮֦ጱፓຽଘݣᴬӤᵱᥝ؉ӞԶԪఘ֦҅ᵱᥝሿӞӻTargetMachineৼᔄᬯӻሿ᭗ଉଫᧆනࣁlib/
Target/DummyTargetMachine.cppկӾ҅֕ฎಅํࣁlib/Targetፓ୯ጱկᤩbuiltଚํපֵአLLVMጱፓຽ
෫ىդᎱኞ౮֦҅ᵱᥝ؉ಅํ୮ڹݸᒒ؉ጱғڠୌLLVMTargetMachineጱৼᔄҁᝑڠୌӞӻፓຽ҅ڠୌ
TargetMachineጱৼᔄ҂

ᘉᦲᛔllvm.org by ᰂᖌᐰ
឴LLVMᴬڠୌଚىᘶ֦ጱፓຽଘݣ֦҅ᵱᥝᬩᤈcmake -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=Dummyᬯ
ڠୌ֦ጱፓຽኒ֛෫ᵱےک֦ಅํጱፓຽଧڜӾӞ෮֦ጱፓຽଘݣᑞ֦҅ᚆےک
LLVM_ALL_TARGETSݒᰁಅࣁጱԆᥝጱCMakeLists.txtӾ
ፓຽ
LLVMTargetMachineᤩᦡᦇԅӞӻፓຽଘݣጱᔄሿԧLLVMፓຽଘݣ෫ىጱդᎱኞ౮LLVMTargetMachine
ᔄଫᧆᤩٍ֛ጱፓຽଘݣᔄᇙ۸҅ሿᰁጱᡦڍහ
LLVMTargetMachineԎԅࣁկinclude/llvm/Target/TargetMachine.hӾTargetMachineጱৼᔄ
TargetMachineᔄሿԞቘஉեᤈᭌᶱ
ڠୌٍ֛ጱଘݣፘىጱLLVMTargetMachineৼᔄ҅զګ૪ᕪࣁጱTargetMachineᔄӨկত֦ଫᧆᬯԶ
կݷԅݍଫ֦ፓຽଘݣጱݷֺই҅ԭSPARCଘݣ҅ݷԅSparcTargetMachine.h
SparcTargetMachine.cpp
ԭፓຽXXX҅XXXTargetMachineጱሿᶳํդᤒፓຽଘݣᕟկጱᦢᳯොဩᬯԶොဩᤩݷԅget*Info҅
ᦶࢶ឴եᵞ҅ᵞ҅ᒵᔄ֒מ௳XXXTargetMachineᶳԞሿgetDataLayoutොဩᦢᳯӞӻ
ᇙፓຽහഝᇙ҅ྲইහഝᔄࣳἶᥝֺইԭSPARCଘݣ҅կSparcTargetMachine.hกԧ
உget*InfoጱܻࣳᓌܔࣈᬬࢧӞӻᔄ౮ާጱgetDataLayouොဩ
namespace llvm {
class Module;
class SparcTargetMachine : public LLVMTargetMachine {
const DataLayout DataLayout; // Calculates type size & alignment
SparcSubtarget Subtarget;
SparcInstrInfo InstrInfo;
TargetFrameInfo FrameInfo;

ᘉᦲᛔllvm.org by ᰂᖌᐰ
protected:
virtual const TargetAsmInfo *createTargetAsmInfo() const;
public:
SparcTargetMachine(const Module &M, const std::string &FS);
virtual const SparcInstrInfo *getInstrInfo() const {return &InstrInfo; }
virtual const TargetFrameInfo *getFrameInfo() const {return &FrameInfo; }
virtual const TargetSubtarget *getSubtargetImpl() const{return &Subtarget; }
virtual const TargetRegisterInfo *getRegisterInfo() const {
return &InstrInfo.getRegisterInfo();
}
virtual const DataLayout *getDataLayout() const { return &DataLayout; }
static unsigned getModuleMatchQuality(const Module &M);
// Pass Pipeline Configuration
virtual bool addInstSelector(PassManagerBase &PM, bool Fast);
virtual bool addPreEmitPass(PassManagerBase &PM, bool Fast);
};
} // end namespace llvm
•getInstrInfo()
•getRegisterInfo()
•getFrameInfo()
•getDataLayout()
•getSubtargetImpl()
ԭӞԶଘݣ֦҅Ԟᵱᥝඪ೮ӥᶎጱොဩғ
剩余46页未读,继续阅读
















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0