美文网首页
17 ARM汇编伪指令

17 ARM汇编伪指令

作者: 辉神来了 | 来源:发表于2019-07-17 11:32 被阅读0次
    伪指令的意义
    • 伪指令不是指令,伪指令和指令的根本区别是经过编译后不会生成机器码
    • 伪指令的意义在于知道编译过程
    • 伪指令是和具体的编译器相关的,我们使用gun工具链,因此学习gun环境下的汇编伪指令
    gun汇编中的一些符号
    • @ 回来做注释,可以在行首也可以在代码后面一行直接跟,和C语言中/类似
    • 做注释,一般放在行首,表示一行都是注释而不是代码

    • :以冒号结尾的是标号
    • .点号在gun汇编中表示当前指令的地址
    • 立即数前面要加#或$,表示这是个立即数

    常用gun伪指令
    • .global_start @ 给_start外部连接属性
    • .section .text @指定当前段为代码段
    • .ascii .byte .short .long . word
    • .quad .float .string @定义数据
    • .align 4 @以16字节对齐
    • .balignl 16 0xabcdefgh @ 16字节对齐填充
    最重要的几个伪指令
    • ldr 大范围的地址加载指令
    • adr 小范围的地址加载指令
    • adrl 中断访问的地址加载指令
    • nop 空操作
    • ARM z中有一个ldr指令,还有一个ldr伪指令
    • 一般都使用ldr伪指令而不用领ldr指令
    adr与ldr
    • adr 编译时会被1条sub或add指令替代,而ldr编译时会被一条mov指令替代或者文字池方式处理
    • adr总是以pc为基准来表示地址,因此令本身和运行地址有关吗,可以用来检测程序当前的运行地址在哪里
    • ldr加载的地址和链接时给定的地址有关,由链接脚本决定

    相关文章

      网友评论

          本文标题:17 ARM汇编伪指令

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