RichardUSTC

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

2013年4月18日

摘要: 有时候经常需要写一些小的测试用例,有一个Makefile会比较方便。于是就想到写一个比较通用的Makefile。github地址:https://github.com/RichardUSTC/general-makefile这个Makefile的特点:支持C和C++程序每个C/C++源文件编译成一个可执行程序根据需要,可以通过make dump来dump出可执行程序的汇编代码,编译分析make时可以在命令行指定CC、CXX、CFLAGS、CXXFLAGS、LDFLAGS、LIBS、OBJDUMP和DUMP_FLAGS变量。例如make LIBS=-lpthread。注意这时等号两侧不能有空格编 阅读全文
posted @ 2013-04-18 17:02 RichardUSTC 阅读(650) 评论(0) 推荐(0) 编辑

2013年4月12日

摘要: 今天查找页表映射资料时,无意发现一个有趣的概念,就是页表自映射。页目录基址记为PDT,页目录项记为PDE,页表项记为PTE。BITS(m,n,value)表示取value从高m位到高n位的值。这篇文章介绍了一个32位虚拟地址x的转换成物理地址过程。32位系统下,所有的PTE所占的空间刚好是4MB。如果将这些PTE连续地放在内存中,那么这4MB内存空间对应的PTE(称为PTE的PTE)刚好在一个4KB页中,而这个4KB在页目录表中刚好也占一项。如果再合理地设置4MB页表的地址,那么就可以使得PTE的PTE所占的4KB的内容与PDE所占的4KB的内容完全相同。这样一来,可以就可以将页目录表也作为一 阅读全文
posted @ 2013-04-12 12:19 RichardUSTC 阅读(7147) 评论(0) 推荐(1) 编辑

2013年4月10日

摘要: C++格式化输出 阅读全文
posted @ 2013-04-10 22:42 RichardUSTC 阅读(120) 评论(0) 推荐(0) 编辑

2013年4月9日

摘要: 有时候我们需要修改一些链接时的参数,但是不想从零开始写一个链接脚本,这个时候可以利用命令ld --verbose > my_ldscript通过这条命令得到的my_ldscript中有两行“==========================”分割线,取出两条分割线中间的内容就是ld默认使用的脚本了。有了这个脚本,我们就可以根据自己的需要调整一下链接时的参数了。比如,我在64位x86下,将这一行PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x400000)); . = SEGMENT_STAR 阅读全文
posted @ 2013-04-09 23:03 RichardUSTC 阅读(1012) 评论(0) 推荐(0) 编辑

摘要: 最近的项目跟操作系统的内核关系不小,往后要看不少跟内核编程相关的资料了,有什么新的收获就会发在这里。 阅读全文
posted @ 2013-04-09 22:11 RichardUSTC 阅读(121) 评论(0) 推荐(0) 编辑

摘要: 来自www.cplusplus.com的有关template的资料 阅读全文
posted @ 2013-04-09 22:06 RichardUSTC 阅读(103) 评论(0) 推荐(0) 编辑

摘要: C++类模版的一些知识点总结 阅读全文
posted @ 2013-04-09 22:01 RichardUSTC 阅读(160) 评论(0) 推荐(0) 编辑

2013年3月31日

摘要: 之前写了一篇C++中的lambda的实现(1),从汇编语言的角度来分析了一下non-mutable lambda的实现方式。这篇文章主要介绍一下mutable lambda的实现方式。而这篇文章中有比较详细的lambda语法示例。实验用gcc版本4.7.2,据说4.5以前的gcc不能支持C++11中的lambda。C++源码 1 //lambda.cpp 2 #include <iostream> 3 using namespace std; 4 int main(){ 5 int a,b; 6 a = 1; 7 b = 2; 8 auto f = [&a, &.. 阅读全文
posted @ 2013-03-31 16:22 RichardUSTC 阅读(1577) 评论(0) 推荐(1) 编辑

2013年3月30日

摘要: 函数模版语法结构template <template_parameter_list>[ inline | const_expr] func_name( func_parameter_list){ ...}template_parameter_list不能为空,多个template parameter之间用','来分隔。template parameter分为两种:type parameter和nontype parameter。type paramter语法形式 typename | class type_name其中'typename'关键字和&# 阅读全文
posted @ 2013-03-30 22:45 RichardUSTC 阅读(201) 评论(0) 推荐(0) 编辑

摘要: C++中有一种特殊的虚函数——纯虚函数。语法示例class Foo{ ... virtual void foo()=0; ...};当一个类中包含纯虚函数的时候,就称该类为抽象类,不能生成该类的实例。如果子类继承了包含抽象父类,override了父类的所有的纯虚函数,那么就可以生成子类的实例了,否则子类也是抽象类。 阅读全文
posted @ 2013-03-30 21:34 RichardUSTC 阅读(119) 评论(0) 推荐(0) 编辑