关于堆和栈段寄存器的疑问
时间:2011-08-06
来源:互联网
各位大侠:
最近想深入了解一下底层的东西,不过感觉中国人的语言比较难懂,比如:堆栈段寄存器也就是SS段寄存器,按照这个说法(堆栈段)则无论访问Stack还是heap应该都用此段寄存器。
不过我觉得应该不是这样的。应该是访问Stack(也就是栈)的时候用SS段寄存器吧?那访问堆(Heap)内存呢?也就是访问malloc出来的内存用哪个段寄存器?是否是DS? 以上个人观点。
Google大神也没发现详细讲解这一块的,所以特地来此宝地问一下。
烦请各位高人给个指点。谢谢
最近想深入了解一下底层的东西,不过感觉中国人的语言比较难懂,比如:堆栈段寄存器也就是SS段寄存器,按照这个说法(堆栈段)则无论访问Stack还是heap应该都用此段寄存器。
不过我觉得应该不是这样的。应该是访问Stack(也就是栈)的时候用SS段寄存器吧?那访问堆(Heap)内存呢?也就是访问malloc出来的内存用哪个段寄存器?是否是DS? 以上个人观点。
Google大神也没发现详细讲解这一块的,所以特地来此宝地问一下。
烦请各位高人给个指点。谢谢
作者: szpyc 发布时间: 2011-08-06
没详细找资料研究,我只知道 push pop 时用要视情用 sp或者esp,ebp,bp来寻址,需要有效地址时,我就用 lea 指令;
对malloc来的内存,我就按指针寻址规定寻址,我管它是栈还是堆,反正都是内存.
malloc来的内存需要用sp,esp,bp,ebp来寻址吗? 如果不需要的话? 即使malloc操作就是从系统保留的栈内存空间划来的,那又怎样呢?
除非是为了育种,只要鸡蛋好吃,我管它是哪个鸡生的.
作者: gsy999 发布时间: 2011-08-06
我的理解:所有的内存寻址都需要通过段寄存器,不管是DS,CS,SS还是其他,只是这种寻址方式在上层看不出来,比如:对于全局数据要通过DS,Code数据要通过CS,栈上数据要通过SS等,但是对于堆内存我觉得应该是DS而不是SS,至于更根本的对于实模式和保护模式这些段寄存器的异同我还没有研究过,但就是在通过哪个段寄存器访问那些相关数据的对应关系上我还没有完全搞明白,只是有以上理解。
请各位高手不吝赐教。谢谢
请各位高手不吝赐教。谢谢
作者: szpyc 发布时间: 2011-08-06
windows上面都基本没有了 段 的概念了吧
看看GDT,DS,CS等都是0基址,大家都是使用2G空间
看看GDT,DS,CS等都是0基址,大家都是使用2G空间
作者: WJN92 发布时间: 2011-08-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