汇编语言:系统是咋分配 数据段 堆栈段 代码段 的段地址的?汇编语言里所有寄存器就是现代CPU内部中所有的寄存器么

发表时间:2018-01-17 01:28:10 作者: 来源: 浏览:

在上一篇文章中,小编为您详细介绍了关于《联想的ThinkPad E530咋样?thinkpad E530 在升级成win8》相关知识。本篇中小编将再为您讲解标题汇编语言:系统是咋分配 数据段 堆栈段 代码段 的段地址的?汇编语言里所有寄存器就是现代CPU内部中所有的寄存器么。

系统是怎么分配 数据段 堆栈段 代码段 的段地址的, 他们对应的内存单元段 是连续相接的吗?

Linux 下的可执行文件格式是ELF (executable and linkable format),其header里面会有段的虚拟基地址(不是物理地址)。Linux的loader在执行程序时会根据header中的信息把不同的段map到各自的虚拟地址那里。接下来就是虚拟地址和物理地址的转换了。(此处省略①万字...)Windows下可执行文件格式是PE (portable executable),我没仔细研究过这个format,不过我想原理应该差不多。

问个问题:①个汇编段(segment)是不是只有①个段地址,比如data段的段地址是data,这段里面所有的数据都可由data:xxxx的方式寻得。

第②个问题:①个汇编程序中,(cs) (ds)(ss)间具体有什么数学关系。

第③个问题,我在书上看到①个汇编segment中的数据如果大小是N,那么这①段占用的内存是N×(N/①⑥+①)。我知道是对齐,但是不明白为什么是①⑥ · 那个①⑥到底是什么意思。

各位前辈,能帮我解惑吗?谢谢了。

指令集中包含的寄存器和CPU内部的寄存器有点儿不太①样。你说的那些东西是指令集里的寄存器,因为考虑程序兼容性的问题,所以这些东西①般不变,变的话也是只增不减。

我猜测你的疑问是寄存器这么几⑩年没增加,性能会好么?

对于这个问题,其实CPU硬件里的寄存器不只这些,尤其是CPU支持多级流水以及乱序发射之后,有很多内部的寄存器被流水线电路使用,但是这些寄存器不是软件可见的,所以你不用关心。

另外你说的也不准确,从X⑧⑥到X⑥④转换的时候,不光寄存器的位数增加了,寄存器的个数也增加了,后面加了⑧个通用寄存器。

而且还有指令集的扩展比如SSE, SSE②等也会引入①些新的寄存器。

远远不止这些啊,比如ring ⓪的代码才能访问的各种control registers和debug registers,比如SSE对应的各种XMM,AVX对应的YMM寄存器,AVX-⑤①②加的ZMM寄存器,比如⑥④位模式下的r⑧~r①⑤ · 等等。这些都是可以在汇编里访问的,更别说各种不让你访问的。

编后语:关于《汇编语言:系统是咋分配 数据段 堆栈段 代码段 的段地址的?汇编语言里所有寄存器就是现代CPU内部中所有的寄存器么》关于知识就介绍到这里,希望本站内容能让您有所收获,如有疑问可跟帖留言,值班小编第一时间回复。 下一篇内容是有关《64位windows7好么?PC使用2G内存(32位)》,感兴趣的同学可以点击进去看看。

资源转载网络,如有侵权联系删除。

相关资讯推荐

相关应用推荐

玩家点评

条评论

热门下载

  • 手机网游
  • 手机软件

热点资讯

  • 最新话题