arm指令系统

arm常用指令主要包括以下六类:

1、数据处理指令:完成寄存器中数据的算术和逻辑运算操作

2、程序状态寄存器处理指令:MRS MSR

3、跳转指令:B和BL

4、load/store指令:用于寄存器和存储器之间数据传送的指令

5、异常中断指令:SWI和BKPT

6、协处理器指令:MRC MCR

=-------------------------------------------------------------------

二、汇编指令的格式

arm指令编码格式:

如:ADDEQS R0,R1,R2  :加上S,cpsr寄存器中的标志位能被置位

--------------------------------------------------------------------------

寻址方式:共有9种

立即数寻址

SUBS R0,R0,#1  @R0=R0-1

ADD R0,#1,R0:这种方式是错误的,立即数只能作为第二操作数

立即数的合法性判断:合法性即:如果某个数据是非法的,是不能作为立即数的

此外还有一个简单的规则:

1、立即数处于0x0---0xff之间

2、如果立即数大于0xff,立即数循环左移偶数位,得到一个在0x0--0xff之间的一个数

满足以上两个条件即合法:

非法数举例:0x101 0xffffff

非法数可通过这样来操作举例:LDR R1,=0xfffff

,寄存器寻址

MOV R1,R2

,寄存器间接寻址

LDR R1,[R2] ;将R2指向的存储单元的数据读出保存在R1中

STR R1,[R2];将R1中的数据读出来保存在R2指向的存储单元中

SWP R1,R1,[R2];  可分解为:[R2]<--R1 ,R1<--[R2]

,寄存器偏移寻址

MOV R0,R2,LSL #3

,基址变址寻址

LDR R1,[R3,#0X0C] ;读取R3+0xc地址上的存储单元的内容放到R1中

LDR R1,[R0],#4;可分解为 R1<--[R0];R0=R0+4

LDR R1,[R0,#-4]!;可分解为 R1<--[R0-4], R0=R0-4  R0中数据会自动更新

,多寄存器寻址

LDMIA R1!,{ R2-R7,R12};将R1指向的单元中的数据读出到R2-R7,R12中,R1自动+1

STMIA R0!,{ R2-R7,R12};

,堆栈寻址

几个重要概念:

嵌入式:使用的是满栈减栈 m:多个寄存器操作,F:FULL d:decrease

STMFD sp!,{r4-r7,lr};将R4-R7,LR寄存器的值压栈,同时sp的值自动更新,先入编号大的寄存器

LAMFD sp!,{r4-r7,lr};将栈中的内容放到r4-r7,lr中,SP自动更新,先出的数据给小的寄存器;

,块拷贝寻址

,相对寻址;

BL SUBR1;调用SUBR1子程序

。。。

SUBR1 ..

MOV PC,R14

---------------------------------------------------------------------------

指令按功能分类:

跳转指令:B,BX,BL,BLX只能跳转+/-32Mb

超过这个范围可通过LDR PC,=LABEL来跳转;

--------------------------------------------

寄存器与存储器交换指令(状态寄存器独有的)

MRS R0,CPSR

BIC R0,R0,#(1<<7)

MSR CPSR,R0

这样一来只修改了第七位

---------------------------------

逻辑运算指令:AND ,ORR,EOR,BIC

BIC R1,R2,R3 ;将R3的反码和R2逻辑与,结果存放到R1中;

----------------------------------------------

协处理器指令:

arm微处理器可支持多达16个协处理器,每个协处理器里有多个寄存器;

MRC P15,0,Rd,C0,C0,0;读取协处理器C0中编号为0的寄存器到Rd中。

MCR ...

*MCR CPSR_c,r0

--------------------------------------------------------------

arm汇编伪指令(并不是真正的arm指令,在编译的时候,编译器会讲伪指令变成真的arm指令)

start

ADRL

LDR R1,=0X33(伪指令)

LDR R1,[R2](ARM指令)

时间: 2024-10-12 01:09:28

arm指令系统的相关文章

arm指令系统(RISC|CISC)

一: CISC(Complex Instruction Set Computer)复杂指令计算机 CISC是台式计算机系统的基本处理部件,每个微处理器的核心是运行指令的电路.指令由完成任务的多个步骤所组成,把数值传送进寄存器或进行相加运算.CISC是一种执行整套计算机指令的微处理器,起源于80 年代的MIPS主机(即RISC 机),RISC机中采用的微处理器统称RISC处理器.这样一来,它能够以更快的速度执行操作(每秒执行更多百万条指令,即MIPS).因为计算机执行每个指令类型都需要额外的晶体管

Ok6410裸机驱动学习(二)ARM基础知识

1.ARM工作模式 ARM微处理器支持7种工作模式,分别为: l  用户模式(usr):ARM处理器正常的程序执行状态(Linux用户态程序) l  快速中断模式(fiq):用于高速数据传输或通道处理 l  外部中断模式(irq):用于通用的中断处理 l  管理模式(svc):操作系统使用的保护模式(Linux内核) l  中止模式(abt):当数据或指令预取终止时进入该模式,用于虚拟存储及存储保护 l  未定义指令模式(und):当未定义的指令执行时进入该模式,用于支持硬件协处理器的软件仿真

ARM架构--CPU的微架构

网上确实有说ARM架构的,但是此架构泛指用ARM指令系统的CPU,而不是CPU的微架构.,硬件电路上,要用ARM指令集系统,必然硬件设计电路上要要遵循,ARM指令的特点和寻址方式,所以说高通和苹果的CPU是ARM架构是可以的. ,但CPU的微架构就要复杂太多了,CPU微架构包括缓存管理,缓存设计,乱序执行,超标量,超流水线,内存控制,分支预测等众多的极其复杂的电路,这些结构的电路的效率是直接决定CPU性能的. 高通和苹果是自主设计的这些电路,所以说是自主的CPU架构,只是用了ARM的指令系统和寻

windows类书的学习心得(转载)

原文网址:http://www.blogjava.net/sound/archive/2008/08/21/40499.html 现在的计算机图书发展的可真快,很久没去书店,昨日去了一下,真是感叹万千,很多陌生的出版社,很多陌生的作者,很多陌生的译者,书名也是越来越夸张,什么××天精通××,精通××编程, ××宝典等等,书的印刷质量真的很好,纸张的质量也是今非昔比啊,但书的内容好象却是越来越让人失望,也许是我老了,我的思想我的观念已脱离现实社会,也许是外面的世界变化得太快,我编程数月,出去一走,

嵌入式学习课程表

序号       课程  内容   课 时       完成日期         学习笔记           总结与收获               1 前言 课程目标介绍 ; 1 2017/09/11 搭建环境 沉下心一步步学 2 嵌入式Linux 入门 1.Linux基础知识入门 2.Bootloader .交叉编译环境等的基本概念 3.嵌入式系统概述 4.嵌入式处理器介绍 5.嵌入式操作系统介绍 6.嵌入式Linux开发流程介绍 7.CentOS 以及ubuntu安装及使用 8.Linu

Android.mk 解析

1 #源文件路径,call my-dir调用my-dir宏,返回Android.mk的路径 2 LOCAL_PATH := $(call my-dir) 3 4 #生成so 5 include $(CLEAR_VARS) 6 LOCAL_MODULE := First 7 LOCAL_SRC_FILES := firstjni.cpp 8 include $(BUILD_SHARED_LIBRARY) 9 10 #使用第三方so 11 include $(CLEAR_VARS) 12 LOCAL

C语言程序设计概述

1 概论 1972年Dennis Ritchie发明了C语言,而后Dennis Ritchie又使用C语言重写了Unix系统,自那以后C语言逐渐受到了全世界大多数编程爱好者的喜爱,后期的主流操作系统Linux,MacOSX,Windows的绝大部分底层都是采用C语言来实现的,主流编程语言Java,PHP,Python的底层也是C语言实现的. 而伴随着移动互联网(Android,IOS),云计算,大数据以及物联网的不断发展,C语言会占据更加广阔的市场,因此C语言是作为一名ITMan必须深入掌握的语

ARM &#174; and Thumb &#174;-2 指令系统

指令表关键词        Rm {, <opsh>} 寄存器移位方式,将寄存器的移位结果作为操作数而Rm值保持不变       <Operand2> 灵活的使用第二个操作数.移位和循环最合适作为第二操作数的一部分使用 <reglist> 由大括号括起来的一些用逗号分割的寄存器列表.如:{ and }.   <fields> 查看程序状态寄存器域目录. <reglist-PC> 加载或存储的寄存器列表,但不含程序计数器寄存器.   <PSR

处理器架构——从RISC与CISC到x86、ARM、MIPS

1.CISC(Complex Instruction SetComputer,复杂指令集计算机) 复杂指令集(CISC,Complex Instruction Set Computer)是一种微处理器指令集架构(ISA),每个指令可执行若干低阶操作,诸如从内存读取.储存.和计算操作,全部集于单一指令之中. CISC特点: 1.指令系统庞大,指令功能复杂,指令格式.寻址方式多: 2.绝大多数指令需多个机器周期完成: 3.各种指令都可访问存储器: 4.采用微程序控制: 5.有专用寄存器,少量: 6.