ARM Aarch32 中 A32 和 T32 的汇编编程的例子(call return stack 结构相关的指令)
Aarch32架构的指令分为A32,T32 和 T16 三种类型的指令。
Aarch64的架构指令有A64一种。
下面指令是ARMv8的aarch32的部分跳转指令例子
0.条件跳转指令(condition branch)的发生的条件
Armv8 条件按跳转指令需要观察状态寄存器(PSTATE)的NCZV (condition flag)来确定条件的满足情况:
注意:PSTATE寄存器可以通过访问CPSR Current Program Status Register 得到其具体的数值.
Condition flag NCZV有如下16种情况。
举例说明, B.cond 指令(A64指令):
mov x0, #0x0
cmp x0, #0xf
B.EQ label
nop
noplabel:mov x1, #0xff nop
假如x0 寄存器的值等于 0xf, 程序就会跳转到 label 函数处。
除了最后一种情况 AL,其他的条件都需要观察condtion flage的状态。对AL条件,举例:
B.AL label
这个指令代表程序一定跳转到 label 函数处,不管 condition flag 的具体值是多少。
1.A32指令
2.T32指令
T32指令和 A32 指令的区别是:thumb指令不支持条件执行。此时,需要加入IT指令,指定之后指令执行的条件。
有如下的例子:
IT 可以理解为:
IF ...
Then ...
例如 ITET NE 的意思是:
if ne:带 *.ne 指令
then if eq:带 *.eq 指令
then if ne:带 *.ne 指令
ITET NE中 : ITET 中的 T 代表符合 NE 条件, E 代表与 NE 条件相反。
T32的IT指令最多带四个条件,用来确定后续四个指令的执行条件。
IT指令的相关连接
ARM Aarch32 中 A32 和 T32 的汇编编程的例子(call return stack 结构相关的指令)相关推荐
- ARMv7和ARMv8中关于内存访问的汇编指令总结对比
ARMv7和ARMv8中关于内存访问的汇编指令总结对比 文章目录 ARMv7和ARMv8中关于内存访问的汇编指令总结对比 前言 ARMv7下的内存访问指令 寻址模式 多加载/存储 ARMv8下的内存访 ...
- ARM汇编语言中的程序结构
在 ARM ( Thumb )汇编语言程序中,以程序段为单位组织代码.段是相对独立的指令或数据序列,具有特定的名称.段可以分为代码段和数据段,代码段的内容为执行代码,数据段存放代码运行时需要用到的数据 ...
- Linux内核ARM构架中原子变量的底层实现研究
前段时间重新研究了一下Linux的并发控制机制,对于内核的自旋锁.互斥锁.信号量等机制及其变体做了底层代码上的研究.因为只有从原理上理解了这些机制,在编写驱动的时候才会记得应该注意什么.这些机制基本都 ...
- ARM汇编编程基础之一 —— 寄存器
ARM的汇编编程,本质上就是针对CPU寄存器的编程,所以我们首先要弄清楚ARM有哪些寄存器?这些寄存器都是如何使用的? ARM寄存器分为2类,普通寄存器和状态寄存器 寄存器类别 寄存器在汇编中的名称 ...
- ARM AArch32和AArch64通用寄存器、状态寄存器
ARM AArch32和AArch64通用寄存器.状态寄存器 文章目录 ARM AArch32和AArch64通用寄存器.状态寄存器 1. ARM CPU Mode 1.1 ARM32 CPU Mod ...
- ARM体系结构2:处理器内核和汇编指令集
处理器内核 ARM7TDMI外部接口图: 指令流水线 为了增加处理器指令流的处理速度,ARM7系列采用了三级流水线,允许多个操作同时进行(一个执行的同时,另一个进行译码,另一个进行取址来提高效率),而 ...
- ARM处理器中CP15协处理器的寄存器1376698090
本章和第5章的内容都与ARM处理器中CP15协处理器的寄存器有密切关系,所以我们这里先介绍一下CP15寄存器以及访问CP15寄存器的汇编指令. 4.1.1 访问CP15寄存器的指令 访问CP15寄存 ...
- 【Qt开发】【VS开发】【Linux开发】OpenCV、Qt-MinGw、Qt-msvc、VS2010、VS2015、Ubuntu Linux、ARM Linux中几个特别容易混淆的内容...
[Qt开发][VS开发][Linux开发]OpenCV.Qt-MinGw.Qt-msvc.VS2010.VS2015.Ubuntu Linux.ARM Linux中几个特别容易混淆的内容 标签:[Qt ...
- C语言中递归什么时候能够省略return引发的思考:通过内联汇编解读C语言函数return的本质...
C语言中递归什么时候能够省略return引发的思考:通过内联汇编解读C语言函数return的本质 事情的经过是这种,博主在用C写一个简单的业务时使用递归,因为粗心而忘了写return.结果发现返回的结 ...
- ARM指令集与Thumb指令集--区别关联--汇编指令 BX LR ; 跳转回LR地址处,既可以是ARM模式也可以是Thumb模式
BX LR ; 跳转回LR地址处,既可以是ARM模式也可以是Thumb模式 A 一.现在先区分下ARM指令集与Thumb指令集 Thumb 指令可以看作是 ARM 指 ...
最新文章
- 2021-11-28
- vxworks 调式
- matlab能力处理,书+程序《MATLAB图像处理:能力提高与应用案例》赵小川
- SQL Performance Analyzer SPA常用脚本汇总
- jquery-演练-表格的模态框新增与点击删除功能
- 解决RTMP推送时间戳问题引起HLS切片不均匀导致手机浏览器播放卡顿的问题
- python 字符串 类型互相转换 str bytes 字符串连接
- DELPHI正则表达式
- 深入理解java中的线程池
- oracle监听器无法启动,提示“错误1067:进程意外终止”
- 2019牛客多校第四场B xor(线性基求交)题解
- python开源代码app_十个基于Python的BBS论坛类开源web框架汇总(附源码地址)
- 通过vba代码将word转换为PDF
- 安卓开发中关于软键盘处理的一些问题
- Moq 和 RhinoMocks
- 1~20以内的加减法
- 几何分布的概率和期望
- 企业网站用什么服务器操作系统?
- 2021会宁三中高考成绩查询,2019中考分数线
- Excel数据导入Matlab绘图