ARM汇编指令格式
一、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汇编指令格式的更多相关文章
- ARM汇编
ARM汇编 ISA ISA即指指令集架构(Instruction Set Architecture)是与程序设计有关的计算机架构的一部分,包括本地数据类型.指令.寄存器.地址模式.内存架构.中断和意外 ...
- ARM汇编指令的一些总结-转
ARM汇编指令的一些总结ARM汇编指令很多,但是真正常用的不是很多,而且需要认真琢磨的又更少了.比较有用的是MOV B BL LDR STR还是通过具体汇编代码来学习吧.@ disable watch ...
- ARM汇编指令集_学习笔记(1)
一.什么是ARM汇编? 运行在ARM处理器上的汇编语言就叫ARM汇编. C程序运行在X86平台,底层就是X86汇编:运行在ARM平台,底层就是ARM汇编.ARM汇编与X86汇编有显著区别. X86属于 ...
- ARM汇编关键知识点总结(转)
1.LDR R1, =COUNT 意思是将 COUNT 变量的地址放到 R1中LDR R1, COUNT 意思是将 COUNT 变量地址里面的内容赋给 R1 2. Load-Store 结构——这个应 ...
- ARM 汇编 内存访问指令
一. 单个寄存器操作读写内存 内存访问指令格式:<opcode><cond> Rd, [Rn] Rn 中保存的是一个内存的地址值 1. 内存写指令 [ str,strb,st ...
- 嵌入式ARM汇编详解
文章目录 零.预备知识 1.ARM与X86 2.ARM中指令的执行 3.ARM的九种寻址方式 立即数寻址 寄存器寻址 寄存器间接寻址 寄存器偏移寻址 寄存器基址变址寻址 批量寄存器寻址 相对寻址 堆栈 ...
- 生成ARM汇编
使用ndk即可生成arm汇编 1.首先写好hello.c 2.编写makefile #ndk根目录 NDK_ROOT=E:\Android\android-ndk-r10b #编译器根目录 TOOLC ...
- ARM汇编指令调试方法
学习ARM汇编时,少不了对ARM汇编指令的调试.作为支持多语言的调试器,gdb自然是较好的选择.调试器工作时,一般通过修改代码段的内容构造trap软中断指令,实现程序的暂停和程序执行状态的监控.为了在 ...
- 3.1 ARM汇编编程概述
1. 汇编编程 为什么要学习汇编 1). Bootloader初始化 2). Linux kernel 3). 高效 2. ARM汇编分类 1. ARM标准汇编:ARM公司得汇编器适合在Windows ...
随机推荐
- linux下各安装包的安装方法
<转>linux下各安装包的安装方法 一.rpm包安装方式步骤: 1.找到相应的软件包,比如soft.version.rpm,下载到本机某个目录: 2.打开一个终端,su -成root ...
- Ubuntu下把缺省的dash shell修改为bash shell
Ubuntu下缺省使用的是shell是dash,而不是bash.从/bin/sh软连接的指向可以看出这点. dash shell 虽然比bash shell更轻便,但是它并不支持所有的语法,运行she ...
- koa-passport实现本地验证
安装 yarn add koa-passport passport-local 先看下passport.js登录策略,判断用户和密码 const passport = require('koa-pas ...
- Java ---- 遍历链表(递归与非递归实现)
package test; //前序遍历的递归实现与非递归实现 import java.util.Stack; public class Test { public static void main( ...
- Storm实现实时大数据分析(storm介绍,与Hadoop比较,)
一.storm与Hadoop对比 Hadoop: 全量数据处理使用的大多是鼎鼎大名的hadoop或者hive,作为一个批处理系统,hadoop以其吞吐量大.自动容错等优点,在海量数据处理上得到了广泛的 ...
- loadrunner-关联
1.什么是关联? 将服务器动态返回的值,保存成一个参数,供后面需要使用到 此参数的地方使用 PS:1.一定是服务器返回的 2.动态变化的,静态不需要关联 3.服务器需要校验的 4.保存成一个参数 5. ...
- 搭建Django链接MySQL流程(python2版)
之前生成选型python3,除了用的python3的pymysql模块之外其他的都是一样的. 1.首先搭建mysql(Mariadb)数据库(单点) 安装方式分为yum安装,rpm包安 ...
- SpringCloud系列九:SpringCloudConfig 基础配置(SpringCloudConfig 的基本概念、配置 SpringCloudConfig 服务端、抓取配置文件信息、客户端使用 SpringCloudConfig 进行配置、单仓库目录匹配、应用仓库自动选择、仓库匹配模式)
1.概念:SpringCloudConfig 基础配置 2.具体内容 通过名词就可以发现,SpringCloudConfig 核心作用一定就在于进行配置文件的管理上.也就是说为了更好的进行所有微服务的 ...
- ArcGIS API for JS 测量线长(各折线段)
这里测量长度主要分为两个方面,一个是在绘制长折线段时,不仅需要显示总线段的长度,还要在各线段的中间显示各折线段的长度:另一个则是在绘制多边形时,不仅需要显示多边形的面积,还需要在各边的中间显示线段长. ...
- JAVA Freemarker + Word 模板 生成 Word 文档 (普通的变量替换,数据的循环,表格数据的循环,以及图片的东替换)
1,最近有个需求,动态生成 Word 文当并供前端下载,网上找了一下,发现基本都是用 word 生成 xml 然后用模板替换变量的方式 1.1,这种方式虽然可行,但是生成的 xml 是在是太乱了,整理 ...