03 2014 档案

关于C++string的长度陷阱
摘要:std::string s = ...;..... assert(s.length() == strlen(s.c_str()));一般认为这段代码是不会断言失败的,但是实际上这段代码可能是会断言失败的std::string s = "ABCD"; s[2] = '\0'; std::cout <<... 阅读全文

posted @ 2014-03-26 02:03 kirito 阅读(2409) 评论(2) 推荐(0)

LLVM language 参考手册 翻译停止相关
摘要:再翻译LLVM language 参考手册的时候,个人感觉很多东西都不是很懂,因此打算学习完编译原理后再去继续研究翻译,多有不便望见谅 阅读全文

posted @ 2014-03-17 16:12 kirito 阅读(293) 评论(0) 推荐(0)

C++使用类型代替枚举量
摘要:自己写的C++类型枚举量,可以使用类型识别取代模板,绑定枚举量和多组调用函数,在调用阶段只要指定某组函数就可以根据枚举量调用相应函数。代码如下:#ifndef __MYENUM_H__#define __MYENUM_H__namespace MyEnum { #include //------------------------------------------------------ EnumFunction ------------------------------------------// /** 绑定序号和函数对象 */ template cla... 阅读全文

posted @ 2014-03-17 16:09 kirito 阅读(792) 评论(0) 推荐(1)

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 阅读(1524) 评论(1) 推荐(1)

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

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

导航