Memory 堆栈较高内存地址到较低内存地址的方向

Memory 堆栈较高内存地址到较低内存地址的方向,memory,stack,allocation,Memory,Stack,Allocation,堆栈的方向(从较高内存地址到较低内存地址或从较低内存地址到较高内存地址)取决于机器体系结构 英特尔示例:从较高内存地址到较低内存地址 SPARC:从较低的内存地址到较高的内存地址 是否有任何方法可以使用代码更改堆栈内存分配的方向 一般来说,栈的管理是由编译器执行的(假设我们在这里讨论的是C或C++之类的东西)。但是,ISA可以提供帮助,例如x86上的push和pop指令 < >从C或C++中没有办法做到这一点,除非编译器提供了一个非可移植的语言扩展或命令行选项来控制这个(我不明白为什么会这样,因

堆栈的方向(从较高内存地址到较低内存地址或从较低内存地址到较高内存地址)取决于机器体系结构 英特尔示例:从较高内存地址到较低内存地址 SPARC:从较低的内存地址到较高的内存地址

是否有任何方法可以使用代码更改堆栈内存分配的方向


一般来说,栈的管理是由编译器执行的(假设我们在这里讨论的是C或C++之类的东西)。但是,ISA可以提供帮助,例如x86上的
push
pop
指令


< >从C或C++中没有办法做到这一点,除非编译器提供了一个非可移植的语言扩展或命令行选项来控制这个(我不明白为什么会这样,因为改变这个程序会使你的程序/库与所有其他程序/库不兼容)。

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

有些处理器包含显式电路,可以将东西推到堆栈上,并在各种情况下弹出它们。其他处理器不包括用于“大”堆栈的任何此类电路,但只提供有限数量的硬件寄存器或电路,用于存储返回地址之类的内容,并可能提供一种软件可以将存储在这些寄存器或电路中的地址复制到内存其他部分的方法


在硬件没有显式操作内存中堆栈的处理器上,如果可以控制处理器将执行的所有代码,则可以使用所需的任何模式。然而,一般来说,处理器制造商会推荐一种实现堆栈的模式,编译器或其他人生成的代码很可能会使用以这种方式实现的堆栈。

我也在寻找同样的模式。通过C代码更改它。也指的是为函数参数、局部变量创建的堆栈。@NoName:是的,这也是我指的堆栈。