LLVM编译器相关C++技术
来源:互联网 发布:阿里云帐号 编辑:程序博客网 时间:2024/05/20 06:09
- RegisterMCAsmLexer<X86AsmLexer> X(TheX86_32Target);
这个函数里面有个Allocator的赋值,相关的C++技术模拟代码如下,用VC2010编译成功并运行:
// CppTest.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"class Target;class MCRegisterInfo {};class MCAsmLexer {};class MCAsmInfo {};class MCTargetAsmLexer {//MCTargetAsmLexer(const MCTargetAsmLexer &); // DO NOT IMPLEMENT//void operator=(const MCTargetAsmLexer &); // DO NOT IMPLEMENTprotected: // Can only create subclasses.MCTargetAsmLexer(const Target &T): TheTarget(T), Lexer(NULL) {}/// TheTarget - The Target that this machine was created for.const Target &TheTarget;MCAsmLexer *Lexer;};class Target{public:char a;typedef MCTargetAsmLexer *(*MCAsmLexerCtorTy)(const Target &T,const MCRegisterInfo &MRI,const MCAsmInfo &MAI);MCAsmLexerCtorTy MCAsmLexerCtorFn;};struct TargetRegistry {static void RegisterMCAsmLexer(Target &T, Target::MCAsmLexerCtorTy Fn) {if (!T.MCAsmLexerCtorFn)T.MCAsmLexerCtorFn = Fn;}};template<class MCAsmLexerImpl>struct RegisterMCAsmLexer {RegisterMCAsmLexer(Target &T) {TargetRegistry::RegisterMCAsmLexer(T, &Allocator);}private:static MCTargetAsmLexer *Allocator(const Target &T,const MCRegisterInfo &MRI,const MCAsmInfo &MAI) {return new MCAsmLexerImpl(T, MRI, MAI);}};class X86AsmLexer : public MCTargetAsmLexer {const MCAsmInfo &AsmInfo;bool tentativeIsValid;public:X86AsmLexer(const Target &T, const MCRegisterInfo &MRI, const MCAsmInfo &MAI): MCTargetAsmLexer(T), AsmInfo(MAI), tentativeIsValid(false) {}};Target TheX86_32Target;int _tmain(int argc, _TCHAR* argv[]){RegisterMCAsmLexer<X86AsmLexer> X(TheX86_32Target);return 0;}
0 0
- LLVM编译器相关C++技术
- LLVM每日谈之十一 编译器相关学习资料推荐
- 测试llvm-clang编译器
- GCC,LLVM,Clang编译器对比
- 编译器(GNU & GCC & clang & llvm)
- LLVM 3.6 发布,编译器架构
- GCC,LLVM,Clang编译器对比
- 编译器(GNU & GCC & clang & llvm)
- 编译器(GNU & GCC & clang & llvm)
- GCC,LLVM,Clang编译器对比
- GCC,LLVM,Clang编译器对比
- 编译器(GNU & GCC & clang & llvm)
- LLVM编译器架构与Clang编译器
- 编译器三:GCC,LLVM,Clang编译器对比
- 在LLVM的C语言编译器中内联纯汇编函数的注意事项
- c#--注册表相关技术
- c#--线程相关技术
- LLVM之爷谈下一代编译器
- jmf天昏地暗之路(三)---抓取当前帧照片并保存为bmp格式(结束)
- FileReader读取文件
- 【centos6,8】 RPM软件包管理:rpm命令使用
- 黑客攻击方式之水坑攻击和URL跳转漏洞
- 几种窗口销毁函数之间的区别
- LLVM编译器相关C++技术
- NYOJ 69 数的长度
- oracle自动备份说明
- LAMP学习[2]--Godaddy主机mysql插入中文呈现乱码的解决
- java 连接mysql
- 黑马程序员_WPF(菜单Menu与DockPanel,Toolbar,多窗体,Openfiledalog 与Savefiledalog,自己编写代码进行加载图片)
- 利用python爬取教务系统中成绩
- android apk防反编译及数字签名
- Android Dialog背景全透明无边框 Theme Style