随笔分类 -  LLVM

LLVM language 参考手册(译)(6)
摘要:模块级内联汇编(Module-Level Inline Assembly)模块包含“module-level inline assembly”块,这与GCC中的“file scope inline asm”块的相同的。这些块将被LLVM内部链接并当作一个单独的单元,但如果希望的话,它们在.ll 文件中可以是分开的。它的语法十分简单:module asm "inline asm code goes here"module asm "more can go here"这个字符串可以通过非输出字符转义包含任意字符。这个转义序列是“\xx”形式的,这个“xx”是 阅读全文

posted @ 2014-03-02 01:43 kirito 阅读(1534) 评论(1) 推荐(1)

LLVM language 参考手册(译)(5)
摘要:垃圾回收器名称(Garbage Collector Names)每一个函数可以制定一个垃圾回收期的名称,这个名称是一个简单的字符串:define void @f() gc "name" { ... }编译器声明了这个名字的可能值。指定一个收集器将会导致编译器会为了支持这个垃圾回收算法修改它的输出。前置数据(Prefix Data)前置数据是一种与函数相关的数据,在函数主体之前代码生成器会马上发散这种数据。这个特性的目的是为了让允许在前端分配语言指定的在指定函数中运行期元数据,并且可以通过函数指针来获得这个数据的同时这个函数指针仍然是可调用的。对一个给定的函数来访问这个数据, 阅读全文

posted @ 2014-03-01 16:43 kirito 阅读(1495) 评论(0) 推荐(0)

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 阅读(1510) 评论(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 阅读(2831) 评论(0) 推荐(3)

导航