http://blog.csdn.net/michael2012zhao/article/details/5554023 一. 段寄存器的产生 段寄存器的产生源于Intel 8086 CPU体系结构中数据总线与地址总线的宽度不一致. 数据总线的宽度,也即是ALU(算数逻辑单元)的宽度,平常说一个CPU是“16位”或者“32位”指的就是这个.8086CPU的数据总线是16位. 地址总线的宽度不一定要与ALU的宽度相同.因为ALU的宽度是固定的,它受限于当时的工艺水平,当时只能制造出16位的ALU:…
基于Xv6-OS 分析CR0 寄存器 之前一直认为晕乎乎的...啥?什么时候切换real model,怎么切换,为什么要切换? ------------------------------------------------------------------------------------------------------------------------------------------- 以下这段代码来自Xv6的boot/boot.S 这就是CPU real model 和 pr…
最近在看张银奎先生的<调试软件>一书,想将关键的技术记录下来,以便日后查阅,也分享给想看之人吧. 1 通用寄存器 EAX,EBX,ECX,EDX:用于运算的通用寄存器,可以使用AX,BX等16位或AL,AH等8位短寄存器,访问长寄存器的相应地址 ESP,EBP:Extended Stack/Base Pointer,指栈顶和当前栈的起始地址 ESI,EDI:源和目标寄存器,比如在循环操作中,与ECX组合,分别表示计数器(ECX),起始数(ESI),目标数(EDI) 64位扩展通用寄存器:RAX…
其实很久之前就学完了实模式了,但是一直没有总结,感觉现在直接在书上做笔记的弊端就是有些知识点不能很很深刻地记下来(毕竟手写最明显的优点就是能深刻地记住知识,但是就是用太多的时间罢了).一下内容都是一些这本书里面的知识和笔记. ★PART1:进制计数: 1.  二进制到十进制的相互转换(带权乘法) a. 二进制转十进制,只要把每一个位都乘以2的相应阶数就可以了,(无论是整数部分还是小数部分) b. 比如:10110001B=1*27+0*26+1*25+1*24+0*23+0*22+0*21+1*…
转自:http://blog.csdn.net/rosetta/article/details/8570681 Linux操作系统基础(四)保护模式内存管理(2) 转载请注明出处:http://blog.csdn.net/rosetta           本节主要讲:保护模式内存管理相关的物理地址空间,逻辑和线性地址空间,段选择符,段寄存器,段描述符. 物理地址空间 保护模式下,IA-32架构提供了一个4GBytes(2^32bytes)正常大小的物理寻址空间.处理器可以使用地址总线录址这些地…
一.段描述符的分类 在上一篇博文中已经说过,为了使用段,我们必须要创建段描述符.80X86中有各种各样的段描述符,下图展示了它们的分类. 看了上图,你也许会说:天啊,怎么这么多段描述符啊!我可怎么记住呢? 别担心,我会在以后的博文中,跟随原书的作者,为您逐步介绍.我们的学习是循序渐进的,所以不要求一下子掌握所有东西.我们的原则是:用到什么学什么.我们今天的重点是"存储段描述符". 二.段描述符的通用格式[1] 段描述符是GDT和LDT中的一个数据结构项,用于向处理器提供有关一个段的位置…
x86保护模式    任务状态段和控制门 每个任务都有一个任务状态段TSS     用于保存任务的有关信息     在任务内权变和任务切换时  需要用到这些信息    任务内权变的转移和任务切换  一般需要通过控制门进行这些转移. <一>   系统段描述符 系统段是为了实现存储管理机制所使用的一种特别的段 任务状态段TSS和局部描述符表LDT段   用于描述系统段的描述符成为系统段描述符 1.描述符格式 与存储段描述符类似   区别位属性字节中的描述符类型为DT的值 DT=1为存储段    D…
本系列文章由jadeshu编写,转载请注明出处.http://blog.csdn.net/jadeshu/article/details/22445945 作者:jadeshu   邮箱: jadeshu@qq.com    欢迎邮件交流 CPU段式内存管理,逻辑地址转换为线性地址 CPU页式内存管理,线性地址转换成物理地址 目的:CPU进行地址变换(映射)的主要目的是为了解决虚拟内存空间到物理内存空间的映射问题.虚拟内存空间的含义是指一种利用二级或外部存储空间,使程序能不受实际物理内存量限制而…
ilocker:关注 Android 安全(新手) QQ: 2597294287 一个段 (segment) 由一个或多个节 (section) 组成,但这对 android linker 是透明的,linker 在加载程序时没有用到节信息.所以对于一个 so 文件,修改 ELF Header 中和节有关的成员 (e_shoff.e_shentsize.e_shnum) 不会影响程序运行. 文本段 (也叫代码段) 包含只读指令和数据,通常包含如下这些节: 通常 android so 的第一个 L…
ilocker:关注 Android 安全(新手) QQ: 2597294287 PT_NULL:如果段类型是 PT_NULL,那相应程序头结构体的其它成员都无意义,该程序头项可被忽略. 暂时还没遇到过 PT_NULL 类型的段,android linker 也没有针对 PT_NULL 类型的段做什么特殊处理. PT_LOAD:可加载段.段数据由文件映射到内存,如果 p_memsz 大于 p_filesz,则额外部分填充为 0. PT_DYNAMIC:动态段.包含动态链接所需的信息. PT_IN…