1-3-3 ARM伪指令以及协处理器访问指令

本文介绍了ARM架构下机器码的基本概念及其查看方法,并探讨了多种伪指令的应用场景,包括定义类伪指令如.global、.ascii及操作类伪指令nop、ldr等。此外还概述了ARM协处理器的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.  ARM机器码

    用命令“arm-linux-objdump -D -Sstart.elf”可以查看start.elf的反汇编信息,例如其中的一行:30008000: e59f008c 翻译成汇编,就是ldr r0, [pc, #140],其中的e59f008c就是32bit的ARM机器码。关于ARM机器码的详细解释,可参看《ARM Architecture Reference Manual》以及《The ARM Instrction set encoding》进行分析。


2.  定义类伪指令

    而伪指令,就是没有对应的机器码,只能在编译的过程中起作用,在编译时转化为其他实际指令运行。

    用命令“arm-linux-readelf -a start.elf”可查看地址和段信息。

    2.1    .global    :定义一个全局标号

    2.2    .ascii       :定义一个字符串

    2.3    .byte        :定义一个字节的数据

    2.4    .word       :定义一个字的数据

    2.5    .data        :定义数据段

    2.6    .equ         :定义一个宏

    2.7    .align       :4字节对齐

例如:

.data

hello:

    .ascii "abcdefg"    ;利用反汇编可观察到

bh:                              ;word 0x64636261

    .byte 0x1                ;word 0x68676665

.align 4

add

    .word 0xff

.text

.global _start

_start:

    .equ DA, 0x89

mov r0, #DA


3.  操作类伪指令

  3.1  nop :空操作,实质是执行了一个mov r0, r0的操作

  3.2  ldr :如果要向r0填入大于8bit的立即数,可以ldr r0, =0x1ff,但mov r0, #0x1ff就不行,因为mov只能8bit立即数,多了就不行了。(重要)


4.  ARM协处理器访问指令(可参考《ARM920T》手册)

  4.1  协处理器——cp15:主要用于执行特定的处理任务,ARM最多支持16个协处理器,在ARM中,cp15用于协助处理器控制cache,clock,mmu等。

  4.2  协处理器访问指令:mcr,mrc

    例如:mrc p15,0,r0,c0,c0,0


总结:

内存访问:str ldr

cpsr访问: msr mrs

cp15访问:mcr mrc

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值