AArch64 Relocations

9.1.3.3 Relocations

Relocations for ‘MOVZ’ and ‘MOVK’ instructions can be generated by prefixing the label with ‘#:abs_g2:’ etc. For example to load the 48-bit absolute address of foo into x0:

   movz x0, #:abs_g2:foo         // bits 32-47, overflow check
        movk x0, #:abs_g1_nc:foo        // bits 16-31, no overflow check
        movk x0, #:abs_g0_nc:foo        // bits  0-15, no overflow check

Relocations for ‘ADRP’, and ‘ADD’, ‘LDR’ or ‘STR’ instructions can be generated by prefixing the label with ‘:pg_hi21:’ and ‘#:lo12:’ respectively.

For example to use 33-bit (+/-4GB) pc-relative addressing to load the address of foo into x0:

        adrp x0, :pg_hi21:foo
        add  x0, x0, #:lo12:foo

Or to load the value of foo into x0:

        adrp x0, :pg_hi21:foo
        ldr  x0, [x0, #:lo12:foo]

Note that ‘:pg_hi21:’ is optional.

        adrp x0, foo

 

is equivalent to

        adrp x0, :pg_hi21:foo

 

 

from:

https://www.rowleydownload.co.uk/arm/documentation/gnu/as/AArch64_002dRelocations.html

reference:

https://developer.arm.com/documentation/100067/0612/armclang-Integrated-Assembler/Assembly-expressions

 

posted @   aspirs  阅读(112)  评论(0编辑  收藏  举报
编辑推荐:
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
阅读排行:
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
历史上的今天:
2018-10-04 增值税计算公式
2018-10-04 华为率先完成中国5G技术研发试验第三阶段 稳步向R16标准进军
点击右上角即可分享
微信分享提示