gpt4 book ai didi

C : Memory Layout of c program and Endianess

转载 作者:行者123 更新时间:2023-12-02 07:03:10 24 4
gpt4 key购买 nike

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

栈在Big Endian架构中是否反向增长。我猜高端内存和低端内存是逻辑地址,而不是物理地址。

他们是相同的很好的引用资料。

最佳答案

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

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

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

关于C : Memory Layout of c program and Endianess,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16927434/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com