Operating system 做一个程序';s的调用堆栈因操作系统和/或编程语言而异?

Operating system 做一个程序';s的调用堆栈因操作系统和/或编程语言而异?,operating-system,stack,programming-languages,Operating System,Stack,Programming Languages,我知道调用堆栈在linux IA32中有一种定义良好的操作方式。调用堆栈的操作方式可能因体系结构而异。但是它也依赖于编程语言和操作系统吗?首选的CPU级调用堆栈取决于体系结构。从历史上看,CPU拥有支持堆栈的指令,这些堆栈可以扩展到更低或更高的内存地址,并且堆栈的内容随着体系结构和编程语言的不同而不同 编译成机器代码的编程语言可能会使用CPU支持的调用堆栈。但是任何给定的编程语言都可以选择使用哪个堆栈、如何使用它、放置什么,甚至选择哪个上下文负责从堆栈中弹出(a) 的维基百科文章解释了大多数调用

我知道调用堆栈在linux IA32中有一种定义良好的操作方式。调用堆栈的操作方式可能因体系结构而异。但是它也依赖于编程语言和操作系统吗?

首选的CPU级调用堆栈取决于体系结构。从历史上看,CPU拥有支持堆栈的指令,这些堆栈可以扩展到更低或更高的内存地址,并且堆栈的内容随着体系结构和编程语言的不同而不同

编译成机器代码的编程语言可能会使用CPU支持的调用堆栈。但是任何给定的编程语言都可以选择使用哪个堆栈、如何使用它、放置什么,甚至选择哪个上下文负责从堆栈中弹出(a)

的维基百科文章解释了大多数调用堆栈包含的内容以及如何使用它们


操作系统将通过编写它们的编程语言来适应CPU体系结构(
C
很常见,但也有其他的)。用汇编语言编写的操作系统部件可能会使用体系结构的约定。

调用堆栈的内容可能因语言而异。例如,一些语言按从右到左的顺序推送参数,而另一些语言按从右到左的顺序推送参数。一些依赖于调用方在返回时清理堆栈,另一些依赖于被调用方来完成


例如,考虑一下不同的问题。

另请参见向上投票,因为这个问题很有意义,尽管它可能是重复的。