You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MacOS下arm64架构中ldr =指令的静态与动态链接疑问

关于macOS ARM64架构下符号加载指令的疑问

在macOS的ARM64架构编程中,无法使用以下代码:

.text
    ldr  X0, =my_string

.data
my_string:
    .asciz "Hello There"

必须将ldr指令替换为:

adrp  X0, my_string@PAGE
    add   X0, X0, my_string@PAGEOFF

在非macOS的加载器中,前者会被转换为:

ldr   X0, fakeLabel
    ...
fakeLabel: .quad my_string

并在链接阶段修正fakeLabel处的值。而macOS与非macOS的链接器都需要计算adrp所在页与my_string所在页的差值并写入指令。

此前得到的答复称前者属于“动态加载”被禁止,后者是“静态加载”合法,但我不理解两者的差异——两者都涉及指令修改。

核心疑问:

  • adrp与my_string的页间差值是否固定?
  • 即使加载地址未知,text段与data段的加载距离是否始终固定?
  • 我是否遗漏了什么?
  • 相关内容是否有官方文档说明?

内容的提问来源于stack exchange,提问作者Frank Yellin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 05:20:57