- 博客(6)
- 资源 (1)
- 收藏
- 关注
原创 x86 SS SP
ss sp 都是对于堆栈段来说的,ss里面存放堆栈段的段地址,sp存放偏移地址 知道ss,sp求物理地址的公式是 物理地址=ss* 16+ sp,或者物理地址=ss* 10H+ sp 也就是对于2进制来说,ss里的数要加上4个0 再加sp得到物理地址。比如ss存放 1234H sp 存放 2000H ,那么物理地址就是 1234H*10H+2000H=14340H。 如果ss是2000H
2009-07-27 22:25:00 2185
原创 x86 CS IP
[CS IP]2.10 CS和IP(1)CS和IP是8086CPU中两个最关键的寄存器,它们指示了CPU当前要读取指令的地址。CS为代码段寄存器,IP为指令指针寄存器,从名称上我们可以看出它们和指令的关系。在8086PC机中,任意时刻,设CS中的内容为M,IP中的内容为N,8086CPU将从内存M 16+N单元开始,读取一条指令并执行。也可以这样表述:8086机中,任意时刻,CP
2009-07-27 22:13:00 9715 5
转载 setjmp 与 longjmp
与刺激的abort()和exit()相比,goto语句看起来是处理异常的更可行方案。不幸的是,goto是本地的:它只能跳到所在函数内部的标号上,而不能将控制权转移到所在程序的任意地点(当然,除非你的所有代码都在main体中)。 为了解决这个限制,C函数库提供了setjmp()和longjmp()函数,它们分别承担非局部标号和goto作用。头文件申明了这些函数及同时所需的jmp_buf数据类型
2009-07-26 11:29:00 1065
原创 kernel的initcall函数
先来看看这些initcall函数的声明:/* include/linux/init.h *//* initcalls are now grouped by functionality into separate * subsections. Ordering inside the subsections is determined * by link order. *
2009-07-10 13:55:00 925
转载 从__init说起
在kernel中有很多__init,这个东东到底是何方神圣捏?且听小生我一一道来。下面是其定义:file:/include/linux/init.h 43 #define __init __attribute__ ((__section__ (".init.text"))) __cold 44 #define __initdata __attribute__ ((__section_
2009-07-10 09:49:00 1303
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人