一、ARM介绍

1) arm汇编中,程序下一步执行哪一条指令,是根据程序计数器(PC)的值来决定。

类比于8086的CS:IP的功能。

2) 8086属于CISC(复杂指令集),每条指令长度不等,arm是RISC(精简指令集),所有指令等长(例如都为32位)。

3)ARM指令代码一般分为5个区域:

第1个域是4位[31-28]的条件码域

第2个域是[27-20],除了指令编码外,还包含几个很重要的指令特征和可选后缀的编码

第3个域是地址基址,是4位[19-16],为R0-R15共16个寄存器编码

第4个域是目标或源寄存器Rd,是4位[15:12],为R0-R15共16个寄存器编码

第5个域是地址偏移或操作寄存器、操作数区[11-0]。

ARM指令代码格式

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

格式中<>的内容必不可少,{}中的内容可省略

<opcode>是操作码,如ADD表示算数加法

{<cond>}表示指令执行的条件域,如EQ、NE等。

{S}决定指令的执行结果是否影响CPSR的值,使用该后缀则指令执行的结果影响CPSR的值,否则不影响

<Rd>表示目的寄存器

<Rn>表示第一个操作数,为寄存器

<op2>表示第二个操作数,可以是立即数、寄存器或寄存器移位操作数。

4)指令的可选后缀

指令中使用"S"后缀时,指令执行后程序状态寄存器的条件标志位将被刷新;不使用"S"后缀时,指令执行后程序状态寄存器的条件标志将不会发生变化。

如果指令地址表达式中不含"!"后缀,则基址寄存器的地址值不会发生变化。指令中的地址表达式中含有"!"后缀时,指令执行后,基址寄存器中的地址值将发生变化,变化的结果如下:

基址寄存器中的值(指令执行后) = 指令执行前的值 + 地址偏移量

ARM汇编指令格式的更多相关文章

  1. ARM汇编

    ARM汇编 ISA ISA即指指令集架构(Instruction Set Architecture)是与程序设计有关的计算机架构的一部分,包括本地数据类型.指令.寄存器.地址模式.内存架构.中断和意外 ...

  2. ARM汇编指令的一些总结-转

    ARM汇编指令的一些总结ARM汇编指令很多,但是真正常用的不是很多,而且需要认真琢磨的又更少了.比较有用的是MOV B BL LDR STR还是通过具体汇编代码来学习吧.@ disable watch ...

  3. ARM汇编指令集_学习笔记(1)

    一.什么是ARM汇编? 运行在ARM处理器上的汇编语言就叫ARM汇编. C程序运行在X86平台,底层就是X86汇编:运行在ARM平台,底层就是ARM汇编.ARM汇编与X86汇编有显著区别. X86属于 ...

  4. ARM汇编关键知识点总结(转)

    1.LDR R1, =COUNT 意思是将 COUNT 变量的地址放到 R1中LDR R1, COUNT 意思是将 COUNT 变量地址里面的内容赋给 R1 2. Load-Store 结构——这个应 ...

  5. ARM 汇编 内存访问指令

    一. 单个寄存器操作读写内存 内存访问指令格式:<opcode><cond> Rd, [Rn] Rn 中保存的是一个内存的地址值 1. 内存写指令  [ str,strb,st ...

  6. 嵌入式ARM汇编详解

    文章目录 零.预备知识 1.ARM与X86 2.ARM中指令的执行 3.ARM的九种寻址方式 立即数寻址 寄存器寻址 寄存器间接寻址 寄存器偏移寻址 寄存器基址变址寻址 批量寄存器寻址 相对寻址 堆栈 ...

  7. 生成ARM汇编

    使用ndk即可生成arm汇编 1.首先写好hello.c 2.编写makefile #ndk根目录 NDK_ROOT=E:\Android\android-ndk-r10b #编译器根目录 TOOLC ...

  8. ARM汇编指令调试方法

    学习ARM汇编时,少不了对ARM汇编指令的调试.作为支持多语言的调试器,gdb自然是较好的选择.调试器工作时,一般通过修改代码段的内容构造trap软中断指令,实现程序的暂停和程序执行状态的监控.为了在 ...

  9. 3.1 ARM汇编编程概述

    1. 汇编编程 为什么要学习汇编 1). Bootloader初始化 2). Linux kernel 3). 高效 2. ARM汇编分类 1. ARM标准汇编:ARM公司得汇编器适合在Windows ...

随机推荐

  1. linux 安装中文支持

    下载  fonts-chinese-3.02-12.el5.noarch.rpm fonts-ISO8859-2-75dpi-1.0-17.1.noarch.rpm 安装各种提示的依赖 安装 chkf ...

  2. winform界面特效470多例

    一共470多例winform 界面特效的源码. 实例030 窗口颜色的渐变 实例说明 在程序设计时,可以通过设置窗体的BackColor属性来改变窗口的背景颜色.但是这个属性改变后整个窗体的客户区都会 ...

  3. Kafka connect in practice(3): distributed mode mysql binlog ->kafka->hive

    In the previous post Kafka connect in practice(1): standalone, I have introduced about the basics of ...

  4. 初识SEO

    一.什么是SEO 1.SEO 搜索引擎优化(Search Engine Optimization)指通过对网站进行站内优化和修复(网站Web结构调整.网站内容建设.网站代码优化和编码等)和站外优化,从 ...

  5. spring面向接口编程

    (1)创建一个接口 package com.min.dao; public interface UserDao { public void save(String uname, String pwd) ...

  6. jmeter联合selenium webdriver进行自动化测试-简单1

    jmeter进行webdriver测试 背景:jmeter可以联合selenium进行基本的UI自动化进行测试,解放了手工测试的压力.那么selenium webdriver完成GUI的流程初步如下 ...

  7. (Python基础)字符串操作

    以下是我在学习过程中用的一些常用字符串操作的相关列子和具体注释,感兴趣的可以自己动手试试看 #字符串操作 name = 'my name is keep' print(name.capitalize( ...

  8. Jmeter使用插件监控服务器资源的使用情况

    环境准备 客户端: 1)安装最新版的Jmeter,目前为 Jmeter5.0 2)安装插件管理器:JMeterPlugin jmeter-plugins-manager.jar下载完成之后,将下载的j ...

  9. Linux环境安装、卸载Docker

    安装: 1.Docker要求CentOS系统的内核版本高于 3.10 ,通过 uname -r 命令查看你当前的内核版本是否支持安账docker 2.更新yum包:sudo yum update 3. ...

  10. 从 注解和继承 到 JAXB中的注意事项

    从 注解和继承 到 JAXB中的注意事项 注解在继承中的行为 如果一个父类添加了一个注解,子类是否能取到这个注解呢?如下 package inheritance; import java.lang.a ...