阅读:1399回复:8
我明白了不仅非常感谢你 我所有的分都给你
在过去的程序设计中,分为代码段,数据段和附加段。 代码段是不是在内存中一个连续的空间,而数据段在内存的另外一个连续空间。那么是不是每条指令在需要访问数据的时候必须改变段寄存器的值,这样是不是很慢??为什么这样设计?
是不是和intel处理器的 机器码怎么访问内存的 访问代码段然后再切换到数据段 在却换到代码段然后再切换到数据段 这样是不是 机器很大的浪费吗〉 给我指点一下好吗?? 困惑我很久了,非常感谢 能给我讲清 所有的分都给你 |
|
沙发#
发布于:2004-05-10 16:44
嗬嗬,都是用虚拟内存了,哪有什么连续内存啊?
段寄存器有好几个哟。 先把分给了,有问题可以继续问. |
|
板凳#
发布于:2004-05-10 16:51
我是问以前的计算机结构
汇编语言程序结构 设计都是那样干的 我想了解早期 机器指令运行的真实情况 现在人们离机器 越来越远了 |
|
地板#
发布于:2004-05-10 16:53
早期何必管那么多。都过时了。
|
|
地下室#
发布于:2004-05-10 20:46
嘿嘿。。。。。。
|
|
|
5楼#
发布于:2004-05-11 14:13
早期何必管那么多。都过时了。 |
|
|
6楼#
发布于:2004-05-13 23:10
哈哈, 你说的事8086的汇编吧,在8086年代程序的确是分为代码段,数据段和附加段,但每个段都有一个段基址寄存器分别为cs,ds,es。所以访问不同的段时并不需要在各个段之间切换,cs专门用来访问代码段,ds访问数据段,es访问附加段。所以不用担心访问不同的段要频繁的改变寄存器的值。
真正会让你感觉会浪费机器的在下面: 286以后的cpu添进了保护模式(之前的cpu都是工作在实模式下,使用 【段:偏移】的方式寻址),增加了fs,gs两个段寄存器。保护模式的寻址方式分为以下三种: 1:分段机制 这时的内存被分为很多段,并为每个段建立一个描述符,所有的描述符组成描述符表,描述符里记录了该段的基地址,段的长度,访问权限,访问特权级等。访问内存时也是采用段:偏移的方式,但这是的段寄存器里存放的不是段的基地址,而是一个选择子,用来选择描述符表中的一个描述符,从描述符里得到的才是真正的基地址,这是保护机制起作用了,它要判断要访问的偏移地址时否大于该段的长度,该段是否允许被以当前的方式被访问,是否有权限访问该段,等。若都可以才可以访问,否则会出现保护异常,就时我们常遇到的非法操作。 2:分页机制 涉及到页表(甚至一级页表,二级页表),缺页故障。总之也很复杂。 (未完待续) 3:段页结合机制 呵呵,一看就知道更复杂 (未完待续) 睡觉! zzzzzZZZZZ |
|
|
7楼#
发布于:2004-05-14 13:58
哈哈, 你说的事8086的汇编吧,在8086年代程序的确是分为代码段,数据段和附加段,但每个段都有一个段基址寄存器分别为cs,ds,es。所以访问不同的段时并不需要在各个段之间切换,cs专门用来访问代码段,ds访问数据段,es访问附加段。所以不用担心访问不同的段要频繁的改变寄存器的值。 感谢!!!! 请继续…… |
|
|
8楼#
发布于:2004-05-14 14:24
我说说我的理解,可能因为内存的访问以字节的整数倍为单位,所以寄存器的大小也以字节的整数倍为单位,那时候内存都很小,所以地址总线只有20位,所以用两个寄存器来放地址。
|
|