!!!!!问各位高手一个 linux 引导代码中的问题!
时间:2011-05-06
来源:互联网
代码中声明下面四个常量
#define CL_MAGIC_ADDR 0x90020
#define CL_MAGIC 0xA33F
#define CL_BASE_ADDR 0x90000
#define CL_OFFSET 0x90022
应用这四个定义的语句片段在这里(我最不明白有就是第一句,请高手帮我):
cmpw $(CL_MAGIC),CL_MAGIC_ADDR /* 我不明白这句到底是什么含意,比较的结果到底能说明什么? */
jne 1f
movl $_empty_zero_page+2048,%edi
movzwl CL_OFFSET,%esi
addl $(CL_BASE_ADDR),%esi
movl $2048,%ecx
rep
movsb
1:
#define CL_MAGIC_ADDR 0x90020
#define CL_MAGIC 0xA33F
#define CL_BASE_ADDR 0x90000
#define CL_OFFSET 0x90022
应用这四个定义的语句片段在这里(我最不明白有就是第一句,请高手帮我):
cmpw $(CL_MAGIC),CL_MAGIC_ADDR /* 我不明白这句到底是什么含意,比较的结果到底能说明什么? */
jne 1f
movl $_empty_zero_page+2048,%edi
movzwl CL_OFFSET,%esi
addl $(CL_BASE_ADDR),%esi
movl $2048,%ecx
rep
movsb
1:
作者: mjznet 发布时间: 2011-05-06
等同于:cmpw $0xA33F,CL_MAGIC_ADDR
就是比较$0xA33F和内存地址[0x90020]中一个字的内容值的大小
这里的寻址方式为直接寻址方式
就是比较$0xA33F和内存地址[0x90020]中一个字的内容值的大小
这里的寻址方式为直接寻址方式
作者: RobustWangAce 发布时间: 2011-05-06
感谢楼上的热心回答,这句话的语义我知道,我是想知道这句话的含意?比较的结果到底能说明什么?
不知道我意思你明白没,再举个例子吧。比如下面:
movl $0x90000,%esi
movl $_empty_zero_page,%edi
movl $512,%ecx
cld
rep
movsl
这几条语句的语义我都知道,整段的语义也知道是:将0x90000处开始的2K字节复制到_empty_zero_page开始的内存。而这几句的含意是:0x90000处保存的引导参数,这几句就是将引导参保存在_empty_zero_page处。
等待高手!
不知道我意思你明白没,再举个例子吧。比如下面:
movl $0x90000,%esi
movl $_empty_zero_page,%edi
movl $512,%ecx
cld
rep
movsl
这几条语句的语义我都知道,整段的语义也知道是:将0x90000处开始的2K字节复制到_empty_zero_page开始的内存。而这几句的含意是:0x90000处保存的引导参数,这几句就是将引导参保存在_empty_zero_page处。
等待高手!
作者: mjznet 发布时间: 2011-05-06
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28