为什么我要给栈指针加地址?

Why I want to add an address to the stack pointer?

我正在尝试理解第一个 microcorruption 挑战。

我想问一下main函数的第一行

他们为什么要将该地址添加到堆栈指针?

这看起来像一个 16 位 ISA1,否则反汇编没有意义。

0xff9c 在 16 位 2 的补码中是 -100,因此看起来这是为 main 使用保留 100 个字节的堆栈 space。 (堆栈在大多数机器上向下增长)。 这不是地址,只是一个小的偏移量。

有关 MSP430 堆栈布局和用法的详细示例,请参阅 MSP430 Assembly Stack Pointer Behavior


脚注 1:可能是 MSP430? http://mspgcc.sourceforge.net/manual/x82.html it's a 16-bit ISA with those register names, and those mnemonics,我认为它的机器代码使用可变长度的 2 或 4 字节指令。

绝对不是ARM; calljmp 不是 ARM 助记符;那将是 blb。此外,ARM 使用 op dst, src1, src2 语法,而此反汇编使用 op src, dst.