所以我尝试在我的Mac(它是M2)上开始用arm64汇编进行编码,但是我在使用变量时遇到了一些麻烦并且有几个问题:
int
, char
...adrp x1, num@page
add x1, x1, num@pageoff
但是假设我更新了 num 的值(
add x1, x1, #1
),我该如何更新 .data 部分中 num 的值?
我认为您对汇编语言是什么感到非常困惑。除了通过注释之外,本身不存在声明变量之类的事情。您可以自由地获取内存位置,将其视为一条指令中的字节序列,然后视为下一条指令中的整数。
如果需要,您可以将常量放入
.text
部分。 但如果它们位于 .data
中,唯一使它们保持不变的就是你不改变它们的值。
至于你的代码。 您尚未将
num
加载到 x1
中,而是将 num
的地址加载到 x1
中。 完整的说明是:
adrp x1, num@page
add x1, x1, num@pageoff
ldr x2, [x1]
add x2, x2, #1
str x2, [x1]
您还没有告诉我们您要如何写出该值,因此我们无法帮助您。您是在 C 库中链接还是尝试“裸”运行它?