ARM指令浅析1(mov、ldr)

本文介绍了ARM指令集中的mov和ldr指令。mov指令用于寄存器到寄存器的数据传送,支持立即数和移位操作,而ldr指令则用于从内存中加载数据到寄存器。文中通过实例解析了两种指令的格式、用法及其在ARM汇编中的应用。
摘要由CSDN通过智能技术生成

1.环境及优化项


采用-O2优化选项,通过arm处理器架构下的gcc编译器编译用例生成汇编码查看其生成的指令。至于为什么用O2选项,是因为在某些用例中,加入-O3选项之后,arm处理器架构下gcc编译器生成的汇编会变得更加复杂(比如一个简单的循环)。


2.ARM指令格式


先简单地介绍一下ARM的指令格式,与x86(Intel)架构和alpha架构下有所不同。

基本格式


<opcode> { <cond>} {S} <Rd> , <Rn> , {<opcode2>}


其中,<>内的项是必须的,{}内的项是可选的,比如<opcode>是指令助记符,是必须的,而{<cond>}为 指令执行条件,是可选的,如果不写则使用默认条件AL(无条件执行)。


格式

含义

Opcode

指令助记符,如LDR,STR 等

Cond

执行条件,如EQ,NE 等

S

是否影响CPSR 寄存器的值,书写时影响CPSR,否则不影响

Rd

目标寄存器

Rn

第一个操作数的寄存器

operand2

第二个操作数


指令格式举例如下


LDR   R0,[R1] ;      读取R1 地址上的存储器单元内容,执行条件AL(无条件执行)


ADDS  R1,R1,#1 ;    加法指令,R1+1=R1 影响CPSR 寄存器,带有S


SUBNES R1,R1,#0xD;  条件执行减法运算(NE),R1-0xD=>R1,影响CPSR 寄存器,带有S


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猪笨是念来过倒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值