推荐阅读最新更新时间:2024-11-18 10:57
ARM中的B指令和BL指令
在ARM处理器里主要是通过3中情况在控制程序执行的: 1.流水方式执行程序,PC的值是下一条指令的地址,即每执行一条指令PC都加一个字的偏移。 2.通过跳转指令来控制程序执行。 B 跳转到指定的指令处执行。 BL 跳转执行,保存子程序地址并返回。 BX 跳转执行并切换到Thumb状态。 BLX 三种方式组合
[单片机]
[零碎知识]arm-linux程序反编译bin文件成汇编的指令
命令格式: arm-linux-objdump -D -b binary -m arm file.bin file.asm 描述: -D 指反编译文件所有内容 -b binary 源文件格式 是二进制的bin文件 -m 指machine的类型 表示生成的文件重定向到哪里去,注意与 区分, 代表的是在文件后附加 file.bin 是你要反汇编的源bin文件 file.asm 是存放生成的汇编源文件
[单片机]
ARM汇编指令的速查表、特点和格式
理解汇编指令的特点,对于汇编指令助记符记忆、理解以及使用帮助很大,请重视! 0.1 指令与伪指令 汇编指令-CPU机器指令的助记符,经过编译后会得到一串1和0组成的机器码,可以由CPU读取执行。 汇编伪指令-编译器环境提供的,用来指导编译过程的“指令”,本质上不是指令,仅是与汇编指令写在一起,经过编译后伪指令不会生成机器码。 0.2 两种不同风格的ARM指令 ARM官方风格ARM汇编:指令一般用大写字母、Windows中的IDE开发环境(如ADS、MDK等)常用。如: LDR R0, GNU风格ARM汇编:指令一般用小写字母、linux中常用。如:ldr r0, 0.3 ARM汇编指令的特点 0.3.1 LDR/STR架构 A
[单片机]
ARM LDR/STR, LDM/STM 指令
这里比较下容易混淆的四条指令,已经在这4条指令的混淆上花费了很多精力,现在做个小结,LDR,STR,LDM,STM这四条指令, 关于LDM和STM的说明,见另外一个说明文件,说明了这两个文件用于栈操作时的注意事项。 (1)LDR:L表示LOAD,LOAD的含义应该理解为:Load from memory into register。下面这条语句就说明的很清楚: LDR R1, ; R1 就是把R2所指向的存储单元的内容的值(一个memory地址内的值),读取到R1中(一个register) (2)STR:S表示STORE,STORE的含义应该理解为:Store from a register into memor
[单片机]
arm指令之beq和bnq
网上关于arm工作模式及 寄存器 的资料比较多,百度文库中有一个ppt 讲的比较通俗易懂,见传送门。 本文将主要讨论arm指令中的beq和bnq指令,这俩指令也比较容易搞混。 先看下arm指令的基本格式: 由上面的指令格式,实际上beq可以看做b+eq,bnq可以看做b+nq ,即opcode指令助记符b和cond指令条件的结合。事实上很多指令都可以看做是opcode指令助记符b和cond指令条件的结合,比如ldreq就可以看做ldr+eq。 b指令是跳转指令,使用方法如下: cond指令条件的详细信息见下表: 上表中,我们会看见很多标志位Z、C、N等,这就涉及到CPSR寄存器了。下表是CPSR状态寄存器中各标示
[单片机]
ARM 中 LDR伪指令
我们知道ARM CPU中有一条被广泛使用的指令LDR,它主要是用来从存储器(确切地说是地址空间)中装载数据到通用寄存器。但不论是ARMASM还是GNU ARM AS,都提供了一条与之同名的伪指令LDR,而在实际中使用该伪指令的情况也较多,那他们有什么不同呢?下面我谈谈我的理解。 由于我使用GNU工具链,所以以下的内容都以GNU AS的ARM语法为准。 LDR伪指令的语法形式如下: LDR reg , = constant-expression 这个常量表达式 constant-expression 中可以包含Label(在ARM汇编中Label会在连接时解释为一个常数),且其中的常数前不加#符号。
[单片机]
基于ARM9:Thumb指令系统和ARM指令系统
1.首先说说是什么? 是指令集。 是ARM体系结构为了兼容数据总线宽度为16位的应用系统而产生的; 是ARM指令集的自指令集,每个Thumb指令在ARM指令集中都有对应的指令; 2.分析Thumb指令和ARM指令时间效率和空间效率关系如下: –Thumd代码所需的存储空间约为ARM代码的60%~70% –Thumb代码使用的指令数要比ARM代码多约30%~40%; 使用32位存储器,ARM代码比Thumb代码快约40% 使用16位存储器,Thumb代码比ARM指令快约40%~50% 与ARM代码相比较,使用Thumb代码,存储器的功耗会降低约30% 在程序程序设计时,若对系统性能要求比较高,则要使用ARM代码;若多成本和功耗要求较
[单片机]
ARM伪指令必读
在 ARM 汇编语言程序里,有一些特殊指令助记符,这些助记符与指令系统的助记符不同,没有相对应的操作码,通常称这些特殊指令助记符为伪指令,他们所完成的操作称为伪操作。伪指令在源程序中的作用是为完成汇编程序作各种准备工作的,这些伪指令仅在汇编过程中起作用,一旦汇编结束,伪指令的使命就完成。 在 ARM 的汇编程序中,有如下几种伪指令:符号定义伪指令、数据定义伪指令、汇编控制伪指令、宏指令以及其他伪指令。 符号定义( Symbol Definition )伪指令 符号定义伪指令用于定义 ARM 汇编程序中的变量、对变量赋值以及定义寄存器的别名等操作。 常见的符号定义伪指令有如下几种: 用于定义全局变量的
[单片机]