使用 gcc 中的 -S 标志,我从我的 C 代码创建了一个汇编文件,以便更好地了解内存的使用方式。这是 main 函数顶部的一些程序集:
main:
mov r1, r4 ; FP = SP
add #2, r4 ; FP += 2
add #llo(-14), r1 ; SP -= 14 ?
mov #llo(-16), r15 ; ???
add r4, r15 ; r15 += FP
add #4, r15
当我试图剖析正在发生的事情时,我发表了评论。我的问题是#llo
宏的使用,堆栈上的内存是如何使用的,最后是什么进入 r15?
对于上下文,我有一个变量,包括一个位于 main 开头的堆栈上的结构,占用 14 个字节(7 个 16 位字)。我不明白什么是#llo
宏以及 r15 的用途是什么?我知道 r4 是帧指针,而 r1 是堆栈指针。