【问题标题】:how to load an immediate value to the register in arm64?arm64 如何加载一个立即数到寄存器?
【发布时间】:2022-11-17 22:44:34
【问题描述】:

我想加载一个立即值 (0x48f0d0) 到寄存器 x0,但出现错误“汇编程序消息:

/tmp/ccUzTnfa.s:257: Error: immediate cannot be moved by a single instruction"

这是我使用的指令:

mov x0, #0x48f0d0

【问题讨论】:

  • 如果你需要它是立即的,那么你不能用一条指令来做。您可以使用多个,或者使用带ldr 的文字池以正常方式使用。

标签: assembly cpu-registers arm64 mov


【解决方案1】:

在 ARM64 上,只有 certain constants 可以表示为立即数。要解决此限制,请从文字池加载

ldr x0, =0x48f0d0

或使用 movz/movk 对:

movz x0, #0xf0d0
movk x0, #0x48, lsl #16

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-22
    • 1970-01-01
    • 2011-10-03
    • 1970-01-01
    • 2014-04-29
    • 1970-01-01
    • 1970-01-01
    • 2020-07-13
    相关资源
    最近更新 更多