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 结构相关的指令)相关推荐

  1. ARMv7和ARMv8中关于内存访问的汇编指令总结对比

    ARMv7和ARMv8中关于内存访问的汇编指令总结对比 文章目录 ARMv7和ARMv8中关于内存访问的汇编指令总结对比 前言 ARMv7下的内存访问指令 寻址模式 多加载/存储 ARMv8下的内存访 ...

  2. ARM汇编语言中的程序结构

    在 ARM ( Thumb )汇编语言程序中,以程序段为单位组织代码.段是相对独立的指令或数据序列,具有特定的名称.段可以分为代码段和数据段,代码段的内容为执行代码,数据段存放代码运行时需要用到的数据 ...

  3. Linux内核ARM构架中原子变量的底层实现研究

    前段时间重新研究了一下Linux的并发控制机制,对于内核的自旋锁.互斥锁.信号量等机制及其变体做了底层代码上的研究.因为只有从原理上理解了这些机制,在编写驱动的时候才会记得应该注意什么.这些机制基本都 ...

  4. ARM汇编编程基础之一 —— 寄存器

    ARM的汇编编程,本质上就是针对CPU寄存器的编程,所以我们首先要弄清楚ARM有哪些寄存器?这些寄存器都是如何使用的? ARM寄存器分为2类,普通寄存器和状态寄存器 寄存器类别 寄存器在汇编中的名称 ...

  5. ARM AArch32和AArch64通用寄存器、状态寄存器

    ARM AArch32和AArch64通用寄存器.状态寄存器 文章目录 ARM AArch32和AArch64通用寄存器.状态寄存器 1. ARM CPU Mode 1.1 ARM32 CPU Mod ...

  6. ARM体系结构2:处理器内核和汇编指令集

    处理器内核 ARM7TDMI外部接口图: 指令流水线 为了增加处理器指令流的处理速度,ARM7系列采用了三级流水线,允许多个操作同时进行(一个执行的同时,另一个进行译码,另一个进行取址来提高效率),而 ...

  7. ARM处理器中CP15协处理器的寄存器1376698090

    本章和第5章的内容都与ARM处理器中CP15协处理器的寄存器有密切关系,所以我们这里先介绍一下CP15寄存器以及访问CP15寄存器的汇编指令. 4.1.1  访问CP15寄存器的指令 访问CP15寄存 ...

  8. 【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 ...

  9. C语言中递归什么时候能够省略return引发的思考:通过内联汇编解读C语言函数return的本质...

    C语言中递归什么时候能够省略return引发的思考:通过内联汇编解读C语言函数return的本质 事情的经过是这种,博主在用C写一个简单的业务时使用递归,因为粗心而忘了写return.结果发现返回的结 ...

  10. ARM指令集与Thumb指令集--区别关联--汇编指令 BX LR ; 跳转回LR地址处,既可以是ARM模式也可以是Thumb模式

    BX        LR    ; 跳转回LR地址处,既可以是ARM模式也可以是Thumb模式 A 一.现在先区分下ARM指令集与Thumb指令集        Thumb 指令可以看作是 ARM 指 ...

最新文章

  1. 2021-11-28
  2. vxworks 调式
  3. matlab能力处理,书+程序《MATLAB图像处理:能力提高与应用案例》赵小川
  4. SQL Performance Analyzer SPA常用脚本汇总
  5. jquery-演练-表格的模态框新增与点击删除功能
  6. 解决RTMP推送时间戳问题引起HLS切片不均匀导致手机浏览器播放卡顿的问题
  7. python 字符串 类型互相转换 str bytes 字符串连接
  8. DELPHI正则表达式
  9. 深入理解java中的线程池
  10. oracle监听器无法启动,提示“错误1067:进程意外终止”
  11. 2019牛客多校第四场B xor(线性基求交)题解
  12. python开源代码app_十个基于Python的BBS论坛类开源web框架汇总(附源码地址)
  13. 通过vba代码将word转换为PDF
  14. 安卓开发中关于软键盘处理的一些问题
  15. Moq 和 RhinoMocks
  16. 1~20以内的加减法
  17. 几何分布的概率和期望
  18. 企业网站用什么服务器操作系统?
  19. 2021会宁三中高考成绩查询,2019中考分数线
  20. Excel数据导入Matlab绘图

热门文章

  1. cs1.5最新服务器地址,服务器地址
  2. 采集用python还是火车头_火车采集器V9插件开发手册
  3. GC overhead limit exceeded 的解决方案与详情分析
  4. BZOJ2827: 千山鸟飞绝
  5. 高速公路联网收费ETC设备可维护性技术要求(征求意见)
  6. 微信小程序云开发-树洞小程序Treehole(畅所欲言/交易广场实现)
  7. drupal_Drupal在斯隆凯特琳纪念堂的早期采用
  8. 厦门大学 软件学院 夏令营
  9. PHY--PDCCH
  10. L314 单音节词读音规则(二)-元音字母发音规则