linux内核代码情景分析学习笔记(一)

来源:互联网 发布:opengl中的裁剪算法 编辑:程序博客网 时间:2024/06/06 01:04

第一章:linux内核简介
内核安装后源码:/usr/src/linux
这里写图片描述

寻址方式:
(1) 根据指令的性质确定使用哪个段寄存器, 例如跳转指令的地址在代码段,取数指令在数据段。
(2) 根据段寄存器的内容,找到对应的“地址段描述结构”
(3) 从地址段描述结构中得到基地址
(4) 将指令中发出的地址作为唯一,与短描述结构中规定的段长度相比,看是否越界
(5) 根据指令的性质和短描述符中的访问权限确定是否越权
(6) 将指令中的地址作为唯一,与基地址相加得到实际的“物理地址”

页式内存线性地址到物理地址映射过程:

31~22 21~10 11~0 页面目录dir 页面表 页面偏移offset

1024个目录项,没个目录项指向一个页面表,每个页面表有1024个页面描述项。 增加一个新的寄存器CR3作为当前页面目录的指针

Intel 汇编 vs AT&T汇编区别:
(1) Intel汇编大多使用大写字母,A大都使用小写
(2) A,寄存器名字前加“%”,Intel寄存器没有前缀
(3) Intel指令操作目标在前,源在后;A指令操作源在前,目标在后
(4) A,指令操作数大小(宽度)位数由操作码的后缀决定;Intel,在表示内存单元的操作数前面加上“BYTE PTR”,”WORD PTR”,”DWORD PTR”老表示。
(5) A,直接操作数前加“$”; 在Intel中直接操作数不带前缀
(6) A,绝对转移或调用指令jump/call的操作数(即转移或调用的目标地址),要加”*“为前缀;Intel不用
(7) 远程转移或远程子程序调用,A的格式为”ljmp”,”lcall”;Intel为”JMP FAR”,”CALL FAR”
(8) 间接寻址的格式:
Intel: SECTION:[BASE+INDEX*SCALE+DISP]
AT&T:section:disp(base,index,scale)

0 0
原创粉丝点击