关于Aarch64程序集地址格式的问题

问题描述

我是 linux GDB 的新手,我有一个关于 Aarch64 程序集的问题:

在我的汇编程序转储中,有以下几行:

0x0000005555555788 <+36>: str w0,[sp,#24]

0x000000555555578c <+40>: ldr w1,#24]

我知道LDR和STR是什么意思,w0,w1代表寄存器,

但我想知道 [sp,#24] 部分。 sp#24 是什么意思?

解决方法

str w0,[sp,#24] 表示“将 w0 存储在地址 sp+24”。

ldr w1,#24] 表示“从地址 w1 加载 sp+24”。

这些都使用 Architecture Reference Manual 的 C1.3.3 节中解释的“基数加偏移量”语法。