有关 MacOS 上 Arm64 Assembly 中变量的问题

问题描述 投票:0回答:1

所以我尝试在我的Mac(它是M2)上开始用arm64汇编进行编码,但是我在使用变量时遇到了一些麻烦并且有几个问题:

  1. 据我了解,我在代码的 .data 部分声明变量,但是如何区分变量和常量?
  2. 如何声明变量的类型?就像在 C++ 中一样,我写
    int
    ,
    char
    ...
  3. 我正在尝试按照在线教程打印一个数字,但是当我打印该数字时,没有打印任何内容。代码成功编译并运行,但只是不打印,那么我如何在不使用其 ascii 表示的情况下打印出数字?
  4. 我知道要从 .data 部分加载信息,我需要这样做:
adrp x1, num@page
add x1, x1, num@pageoff

但是假设我更新了 num 的值(

add x1, x1, #1
),我该如何更新 .data 部分中 num 的值?

macos variables arm64
1个回答
0
投票

我认为您对汇编语言是什么感到非常困惑。除了通过注释之外,本身不存在声明变量之类的事情。您可以自由地获取内存位置,将其视为一条指令中的字节序列,然后视为下一条指令中的整数。

如果需要,您可以将常量放入

.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 库中链接还是尝试“裸”运行它?

© www.soinside.com 2019 - 2024. All rights reserved.