为什么我要给栈指针加地址?
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; call
和 jmp
不是 ARM 助记符;那将是 bl
和 b
。此外,ARM 使用 op dst, src1, src2
语法,而此反汇编使用 op src, dst
.
我正在尝试理解第一个 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; call
和 jmp
不是 ARM 助记符;那将是 bl
和 b
。此外,ARM 使用 op dst, src1, src2
语法,而此反汇编使用 op src, dst
.