美文网首页iOS底层
汇编七、ADRP指令

汇编七、ADRP指令

作者: fanren | 来源:发表于2018-04-26 13:08 被阅读0次
    ADRP            X8, #_g@PAGE
    ADD             X8, X8, #_g@PAGEOFF
    
    • 得到一个大小为4KB的页的基址,而且在该页中有全局变量g的地址;ADRP就是讲该页的基址存到寄存器X8中;
    • ADD指令会算出g的地址,X8+#_g@PAGEOFF,#_g@PAGEOFF是一个偏移量;这样就得到了g的地址X8;

    ADR指令

    这是一条小范围的地址读取指令,它将基于PC的相对偏移的地址读到目标寄存器中;
    使用格式:ADR register exper

    • 编译时,首先会计算出当前PC到exper的偏移量#offset_to_exper
    • 然后会用ADD或SUB指令,来替换这条指令;例如ADD register,PC,#offset_to_exper
    • register就是exper的地址;

    ADRP指令

    • 编译时,首先会计算出当前PC到exper的偏移量#offset_to_exper
    • pc的低12位清零,然后加上偏移量,给register
    • 得到的地址,是含有label的4KB对齐内存区域的base地址;

    相关文章

      网友评论

        本文标题:汇编七、ADRP指令

        本文链接:https://www.haomeiwen.com/subject/ecmplftx.html