作为扩展我的课程的一部分,我正在慢慢地沿着编程抽象的阶梯下降。现在我已经很好地掌握了 C,并且正在准备编写一些汇编(特别是 ARM 汇编)。
我遇到过调用约定的主题,虽然我通常理解它们的含义,但似乎从未被问过或回答过的问题是:
为什么被调用者不能处理堆栈上的变量参数?
到处都说被调用的函数不知道传递了多少参数,但在这种情况下,为什么不能简单地将数据放入寄存器或将其推入堆栈顶部以供被调用函数调用使用?
我问这个问题是针对任何利用堆栈进行子例程通信的体系结构,而不仅仅是 ARM 或 x86。
theory assembly calling-convention
assembly ×1
calling-convention ×1
theory ×1