Linux BIOS启动代码DS与ES寄存器初始化分析
来源:互联网 发布:java工程师如何考试 编辑:程序博客网 时间:2024/05/18 06:04
学习Linux内核的时候看到一段代码最初有点不解,具体的代码如下:
go: mov ax,cs
mov ds,ax
mov es,ax
上面的代码是对ds与es两个寄存器的初始化,但是从一般程序设计的角度考虑,总觉得第一句似乎是么有什么意义。为什么不修改成直接用cs寄存器对ds和es两个寄存器进行初始化呢?就向下面这样:
go: mov ds,cs
mov es,cs
我觉得我似乎发现了一点小问题,但是毕竟这教程是中国人编辑的,随便写写也是有可能的。何况,书中我已经发现过其他的错误了。后来查看Linus的源代码发现居然也是这个样子,一下子觉得应该不会是不谨慎造成的,一定是有其他原因。我按照上面自己思考的方式修改了代码测试结果如下:
启动的时候出现的居然是乱码!怎么回事儿呢?维基百科查了一下恍然大悟。原来cs寄存器被称为代码的段寄存器,用来指示处理器读取将要执行的指令地址。这样的话,这个值肯定是一直在变的,无法将ds和es进行正确的初始化。
阅读全文
0 0
- Linux BIOS启动代码DS与ES寄存器初始化分析
- 8086 DS 和 ES 寄存器
- mini2440启动代码分析之第七篇(ResetHandler和存储控制寄存器初始化)
- mips架构linux启动分析(四)(接收bios信息和环境初始化)
- 寄存器中cs,ds,ss,es的区别
- DS, ES, SS, DI, SI, BP, SP, IP, FS 寄存器
- DS, ES, SS, DI, SI, BP, SP, IP, FS 寄存器
- 寄存器中cs,ds,ss,es的区别
- DS, ES, SS, DI, SI, BP, SP, IP, FS 寄存器
- DS, ES, SS, DI, SI, BP, SP, IP, FS 寄存器
- DS, ES, SS, DI, SI, BP, SP, IP, FS 寄存器
- 5-寄存器与BIOS中断
- linux进程启动时段寄存器的初始化 及意义
- BIOS启动过程分析
- BIOS启动过程分析
- BIOS启动过程分析
- Linux启动代码分析
- linux启动代码分析
- 读论文《Distributed Representations of Words and Phrases and their Compositionality》
- react-redux 小例子
- phpstorm + xdebug远程调试
- LeetCode- 15. 3Sum
- FreeRTOS中断分析
- Linux BIOS启动代码DS与ES寄存器初始化分析
- WEBLOGIC连接RAC
- 常用 Git 命令清单
- 管理UNDO
- Sort-----147. Insertion Sort List
- 解决Weblogic域创建、启动、进入控制台慢问题
- WIN下使用PYTHON和JAVA作OPENCV开发
- 机器学习-特征衍生
- 类和对象