assembly - 为什么要在汇编中添加一个值来初始化堆栈指针(R7)?

标签 assembly

我目前是 assembly 新手。我知道我们首先需要分配堆栈的维度(在下面的示例中为 1000)。然而我很难理解为什么我们应该添加一个值(在本例中为#999)来初始化堆栈指针。这是伪汇编:

STACK: .RES 1000

MOV #STACK, SP
ADD #999, SP 

最佳答案

为了在堆栈上分配空间,堆栈指针会递减(即堆栈向下增长)。因此,为了将缓冲区 STACK 用于堆栈,堆栈指针必须最初指向 STACK 的末尾,因此递减堆栈指针使其指向新部分STACK

关于assembly - 为什么要在汇编中添加一个值来初始化堆栈指针(R7)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54056962/

相关文章:

assembly - 如何从汇编中打印 float ?

assembly - 在屏幕上移动对象的最佳方式是什么?

将C代码转换为8086汇编

c - 商店订购大于原始尺寸的类型 - C 规范

c - 是否可以访问 C 中的 32 位寄存器?

assembly - x86 程序集 : How does the 'subl' command work in AT&T syntax

gnu - x86-64 GNU 程序集

delphi调试排除system.pas

c - Linux 汇编和 printf

gcc - 如何在 gcc 中指定汇编程序风格