段寄存器可以重叠,是咋保证各个段的数据不会因为被重写而变得混乱

段的主要作用是寻址,不是内存保护。对于8086来说,因为寄存器是16位的,寻址范围只有64K,为了能访问更多的内存,所以才导入段寄存器的概念,它的主要作用是寻址。对于x86来说,虽然段描述符里也有保护的机制和段界限机制,但主流的编译器都默认所有段寄存器映射到同一个4G长度的地址空间里,所以在32位环境下,段寄存器本来就是重叠的,而要做内存保护是通过分页机制实现的。段寄存器和汇编源代码里的“段”不完全是一个概念,汇编源码里的“段(Segment)”多数是用来分隔不同内存区域用的,你可以创建很多很多段,数量上可以多于段寄存器个数,而段寄存器就那么几个。汇编源代码里的段,更像是C语言里不同文件,只是一种分割代码的手段。再说一遍:段寄存器是用于寻址的,所以重叠不重叠无所谓。
■网友
如果我理解的对。部分的化把每段所需的字节数弄好。全的话就是把偏移量弄好。
■网友
重叠什么意思,两个一样的段寄存器?


    推荐阅读