首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C:C程序的内存布局和字节顺序

C:C程序的内存布局和字节顺序
EN

Stack Overflow用户
提问于 2013-06-05 05:03:51
回答 2查看 347关注 0票数 2

我有一个关于C程序的字节顺序和内存布局的问题,我试着搜索了几个站点,但没有得到满意的答案。“在标准的PC x86计算机体系结构上,堆栈部分向下增长到较低的内存区;在一些其他体系结构上,它的增长方向与之相反”。

堆栈是否在Big Endian架构中反向增长。我猜High Memory和Low Memory是逻辑地址,而不是物理地址。

他们是一个很好的参考资料。

EN

回答 2

Stack Overflow用户

发布于 2013-06-05 05:09:28

堆栈的增长方式与机器是高字节优先还是低字节优先无关。所有四种组合都是可能的,但绝大多数大端和小端机器都有一个从高到低地址增长的堆栈。

堆栈的发展方向只是一个约定,尽管在某种程度上可能会被嵌入到硬件中。新的架构倾向于使堆栈向下增长,因为这是最常见的约定,因此一些程序没有正确处理另一种可能性。它最初很受欢迎,因为它避免了必须决定分配给堆栈的空间(这是在RAM小于32K的机器上)。

逻辑寻址与物理寻址是另一个不相关的属性。假设你所说的“逻辑”指的是“虚拟”,堆栈在虚拟地址空间中增长--无论它以何种方式增长--如果虚拟内存被占用,则在物理地址空间中增长。一些CPU允许您关闭虚拟内存(例如x86),而另一些CPU则不允许(例如Alpha)。

票数 8
EN

Stack Overflow用户

发布于 2013-06-05 08:29:25

正如前面所回答的,字节顺序和内存布局之间没有关系。这里有一个程序的内存布局的好信息。http://www.inf.udec.cl/~leo/teoX.pdf

你可以在wiki上找到所有关于字符顺序的信息。https://www.princeton.edu/~achaney/tmve/wiki100k/docs/Endianness.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16927434

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档