堆栈方向(较高的内存地址,较低的内存地址或较低的内存地址,较高的内存地址)取决于机器的体系结构 示例Intel:更高的内存地址以降低内存地址 SPARC:将内存地址降低到更高的内存地址
我们有什么方法可以使用代码改变堆栈内存分配的方向。
感谢。
答案 0 :(得分:0)
通常,堆栈的管理由编译器执行(假设我们在这里谈论类似C或C ++的东西)。但是,ISA可能会提供帮助,例如x86上的push
和pop
指令。
除非您的编译器提供非可移植的语言扩展或命令行选项来控制它,否则无法从C或C ++执行此操作(我无法理解为什么会这样做,因为更改此选项会使您的程序/库与所有其他程序/库不兼容!)
答案 1 :(得分:0)
堆栈用于机器指令级别。您无法使用代码更改处理单元行为。唯一能做的就是创建程序仿真级别。
答案 2 :(得分:0)
某些处理器包含显式电路,可将事物压入堆栈并在各种情况下弹出它们。其他处理器不包括用于“大”堆栈的任何此类电路,而是仅提供有限数量的硬件寄存器或电路,用于存储诸如返回地址之类的东西,并且可能是软件可以复制存储在那些中的地址的手段。寄存器或电路到存储器的其他部分。
在硬件没有显式操作内存中的堆栈的处理器上,如果可以控制处理器执行的所有代码,则可以使用任何想要的模式。但是,通常情况下,处理器制造商会建议实现堆栈的模式,编译器或其他人生成的代码很可能会使用以这种方式实现的堆栈。