您的位置:首页 > 编程语言 > C语言/C++

5. 内核C语言

2017-12-28 15:11 211 查看
1.__buildin_return_address(LEVEL)

打印函数的堆栈地址,level表示第几层调用地址,0表示第一层,即当前函数,1表示第二层,一次类推.

2.__buildin_frame_address(LEVEL)

打印函数的结构地址,0表示第一层,即当前函数结构地址.这个结构是堆栈中保存局部变量和寄存器的一块区域.

3.__WEAK

函数和初始化的全局变量是强符号(__stroge),未初始化的全局变量是弱符号.

a.同名的强符号只能有一个,否者编译器报错(默认都是强符号的);

b.允许一个强符号一个弱符号,但定义会选择强符号;

c.当多个弱符号时,连接器选择占用空间最大的哪个;

4.liba.so,libb.so都存在函数A,用attribute((visibility(“hidden”))),抑制在链接库时的函数导出,防止因先后链接次序造成的问题.

5.a##x表示把a字符和x字符合并成一个字符串.

6.APIC Timer,PIT针对多CPU环境升级,每个CPU都有一个APIC,因精度不高且有BUG所以很少用.

HPET(High Procision Event TImer)更高精度,更宽计数器(64位).

TSC(Time Stamp Counter)64位寄存器,单步递增性时钟.

7.cache写机制

write through : cpu向cache写,且向memory写.两者保持一致,但速度慢.

post write : cpu写cache,再写另一个更新缓存器,合适时才写memory.一定提高cache访问速度,但连续多次缓冲区不够用,写memory.

write back : cpu写cache,不写memory.cache被新数据更新时,才写memory.

8.Makefile

patsubst 例,将.c文件名称变成.s后缀名称: New=
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: