2011-07-28 28 views
0

方向叠层(更高的存储器地址,以降低存储器地址或从较低的内存地址到较高的存储器地址)的依赖于机器架构 例英特尔:更高的存储器地址,以降低存储器地址 SPARC:较低的内存地址到较高的内存地址方向堆叠更高的存储器地址的,以降低存储器地址

有没有什么办法可以通过代码改变堆栈内存分配的方向。

谢谢。

回答

0

一般来说,堆栈的管理是由编译器(假设我们正在谈论像C或C++这里)进行。但是,ISA可能会提供帮助,例如x86上的pushpop指令。

除非编译器提供了非可移植的语言扩展或命令行选项来控制此操作,否则无法从C或C++执行此操作(我看不出为什么会这样做),因为更改此操作会使你的程序/库和其他程序/库不兼容!)

+0

我一直在寻找相同。通过C代码进行更改。并且还提到为函数参数,局部变量创建的堆栈。 – NoName

+0

@NoName:是的,这也是我所指的堆栈。 –

0

堆栈是用于在机器指令级。您无法使用代码更改处理单元行为。人们唯一能做的就是创建程序仿真级别。

0

一些处理器包括明确的电路,它推的东西入栈和弹出他们在各种情况下。其他处理器不包括用于“大”堆栈的任何这样的电路,但仅提供用于存储返回地址之类的东西的有限数量的硬件寄存器或电路,并且可能是软件可以复制存储在那些寄存器或电路到存储器的其他部分。

上的处理器,其硬件不明确操纵内存堆栈,可以使用任何模式的一个想如果一个人控制所有代码的处理器将执行。然而,通常情况下,处理器制造商会推荐一种实现堆栈的模式,编译器或其他人员生成的代码很可能会使用以这种方式实现的堆栈。