02 2014 档案

LLVM language 参考手册(译)(4)
摘要:函数(Functions)LLVM函数定义由“define” 关键字,一个可选的链接标识,一个可选的可见性模式,一个可选的DLL存储类别,一个可选的调用约定,一个可选的unnamed_addr属性,一个返回值类型,一个可选的返回值的参数属性,一个函数名,一个(可能为空的)实参列表(每一个都带有可选的参数属性),可选的函数属性,一个可选的section,一个可选的对齐属性,一个可选垃圾回收期的名字,一个可选的前缀,一个左花括号,一个基本块列表和一个右花括号。LLVM函数声明由“declare” 关键字,一个可选的链接标识,一个可选的可见性模式,一个可选的DLL存储类型,一个可选的调用约定,一个可 阅读全文

posted @ 2014-02-26 23:03 kirito 阅读(1730) 评论(0) 推荐(1)

LLVM language 参考手册(译)(3)
摘要:可见性模式(Visibility Styles)所有全局变量和函数具有以下的可见性模式之一:“default” - Default style在那些使用ELF object file格式的平台(targets),默认可见性意味着声明对于其他模块是可见的,并且在可共享库,意味着这个声明的实体是可被覆盖的。在Darwin平台,默认可见性意味着声明对于其他模块是可见的。默认可见性与在这种语言中的 “externallinkage” 是一致的。“hidden” - Hidden style一个对象的带有hidden可见性的两个声明,如果它们是处于一个相同的可共享单元(shared object),那么 阅读全文

posted @ 2014-02-26 00:22 kirito 阅读(1509) 评论(0) 推荐(0)

深度探索C++对象模型读书笔记(2)
摘要:以下测试平台均为vs 2012指向Data Member的指针测试(1)#include class Base1{public: int val1; int val2;};class Base2{public: int val3; int val4;};class Device : public Base1, public Base2{public: int vald;};void func1( int Device::*dmp, Device * pd ){ printf( "Device::val3 = %d \n", pd->*dmp );}void func2 阅读全文

posted @ 2014-02-25 01:53 kirito 阅读(326) 评论(0) 推荐(0)

LLVM language 参考手册(译)(2)
摘要:调用约定(Calling Conventions)LLVMfunctions,callsandinvokes可以带有一个可选的调用约定来指明调用方式。每一对 caller/callee(调用者/被调用者)的调用约定必须相匹配,不然这个程序的行为是未定义的。下面的是LLVM支持的调用约定形式,并且在未来可能会加入更多:“ccc” - The C calling convention这个调用约定(在没有标识其他调用约定时,为默认调用约定)匹配其目标到C调用约定。这个调用约定支持变长参数函数调用并可容忍函数的声明和实现之间存在某些不匹配的地方(像正常的 C一样)“fastcc” - The fast 阅读全文

posted @ 2014-02-25 01:43 kirito 阅读(1715) 评论(1) 推荐(0)

LLVM language 参考手册(译)(1)
摘要:LLVM Language Reference Manual摘要 这个文档是一个LLVM汇编语言的参考手册。LLVM是一个基于Static Single Assignment(SSA - 静态单赋值)表示,提供了类型安全,低级别操作,灵活性和表现“所有”高级语言的能力。他是在LLVM编译策略的各个阶段中使用的通用代码表示。介绍 LLVM的代码表示形式被设计为使用三种不同的格式:1、表示为在内存中编译器中间语言,表示为在磁盘上的位码(适合于即时编译器的快速加载) ,表示为人类可读的汇编语言。LLVM为编译器的高效转换和分析提供了强大的中间语言,同时提供一个自然的方法来调试和可视化的转换。LL.. 阅读全文

posted @ 2014-02-24 20:04 kirito 阅读(2830) 评论(0) 推荐(3)

链接与ELF文件格式的复习
摘要:在这里复习一下链接的知识:什么是链接(linking):把源代码形成的模块独立编译后组装成一个整体的的过程叫做链接。链接主要过程包括:地址和空间分配(address and storage allocation),符号决议 - 决定使用同名符号中的哪一个(symbol resolution),重定位 -为开始不能决定地址的符号重定位到正确地址(relocation)ELF基本文件结构: .text段 - 存放程序代码(与程序数据分开,好处1、提高缓存命中;2、保证代码只读防止被以外修改;3、多个程序使用一段代码 - 动态链接库).data段 - 存放已初始化的全局数据(因为默认值为0,因此初. 阅读全文

posted @ 2014-02-23 14:24 kirito 阅读(759) 评论(0) 推荐(0)

导航