首页
社区
课程
招聘
[求助]WINDOWS下CS,DS寄存器的作用
发表于: 2008-7-3 21:00 6105

[求助]WINDOWS下CS,DS寄存器的作用

2008-7-3 21:00
6105
有几个问题一直不大清楚,希望高手给解释下:
1.INTEL手册上说,处于FLAT 内存模式下,CS,DS,SS都是重叠的,他们的段基址都是从0开始,是不是就是说在WINDOWS下,CS,DS,SS其实都没有用处了,也没有了段的概念了呀?。
2.虚拟地址SSSS:XXXXXXXX,通过XXXXXXXX能够直接找到物理地址,那SSSS段寄存器有什么作用吗,会不会仍然作为段选择子去找GDTR里面的段呢?
3.既然所有的段都是重叠的,那么CALL FAR,JMP FAR,RETF等段间转移指令在WINDOWS下是不是就不存在了?
4.#pragma code_seg()能指定代码段,可是如果上面的结果都是成立了,这个指定又有什么用呀?

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
自己顶呀,怎么没有人回答呢?
2008-7-4 10:51
0
雪    币: 808
活跃值: (10)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
3
回答:1和2: 那些段寄存器还是很有用的。请参考这个网址罗云彬MASM32编程的第一章可以看看有下载,free.本想打字的,实在太多了,就偷懒了。http://211.90.241.130:22366/list.asp?part1=4
第3个问题我认为在windows保护模式下段的概念和16位的完全不同,far,NEAR用不着了吧。
第4个问题我不懂。
2008-7-4 11:29
0
雪    币: 2110
活跃值: (21)
能力值: (RANK:260 )
在线值:
发帖
回帖
粉丝
4
我来回答第4个,MSDN中对这个命令的说明是:

#pragma code_seg( ["section-name"[,"section-class"] ] )

Specifies a code section where functions are to be allocated. The code_seg pragma specifies the default section for functions. You can, optionally, specify the class as well as the section name. Using #pragma code_seg without a section-name string resets allocation to whatever it was when compilation began.

这个是指定PE文件中代码节的名称的编译指示命令。比如,#pragma code_seg( “mysect”), 那么编译器会将代码节的命名为"mysect",而不是默认的".text",它跟IA32体系结构中的段式内存模型没有任何关系。
2008-7-4 19:10
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
5
windows下cs ds没用,保护是分页实现的
2008-7-4 20:35
0
游客
登录 | 注册 方可回帖
返回
//