4.3.11. REV、REV16、REVSH 和 RBIT

在字或半字内反转字节或位的顺序。

语法

op{cond} Rd, Rn
{cond} Rd, Rn

其中:

op

为下列项之一:

REV

反转字中的字节顺序。

REV16

独立反转每个半字中的字节顺序。

REVSH

反转低半字中的字节顺序,并将符号扩展到32 位。

RBIT

反转32 位字中的位的顺序。

cond

是一个可选的条件代码(请参阅条件执行)。

Rd

是目标寄存器。 Rd 不能为r15。

Rn

是存放操作数的寄存器。 Rn 不能为r15。

用法

您可利用这些指令来更改端标记:

REV

将 32 位大端数据变为小端数据或将 32 位小端数据变为大端数据。

REV16

将 16位大端数据变为小端数据或将 16 位小端数据变为大端数据。

REVSH

可完成以下转换:

  • 16 位带符号大端数据变为 32 位带符号小端数据

  • 16 位带符号小端数据变为 32 位带符号大端数据

条件标记

这些指令不更改标记。

16 位指令

这些指令的下列形式可用于 Thumb-2 之前的 Thumb 代码中,在 Thumb-2 代码中使用时为 16 位指令:

REV Rd, Rm

RdRm 必须都是Lo 寄存器。

REV16 Rd, Rm

RdRm 必须都是Lo 寄存器。

REVSH Rd, Rm

RdRm 必须都是Lo 寄存器。

体系结构

RBIT 外,这些 ARM 指令均可用于 ARMv6 及更高版本中。

ARM RBIT 指令可用于 ARMv6T2 及更高版本。

这些 32 位 Thumb 指令可用于 ARMv6T2 及更高版本。

这些 16 位 Thumb 指令可用于 ARMv6 及更高版本的所有 T 变体中。

示例

    REV     r3, r7REV16   r0, r0REVSH   r0, r5       ; Reverse Signed HalfwordREVHS   r3, r7       ; Reverse with Higher or Same conditionRBIT    r7, r8

ARM中大小端转换和按字节反转相关推荐

  1. c语言高低位拷贝_C语言中的大小端转换与高低位颠倒

    总结一下最近工作学到的东西,主要是关于大小端与高低位. 在说大小端高低位之前,肯定要说明数据在计算机内是如何存储的.在计算机中,我们将数据分割成了一个一个的字节(byte),而每个字节又有8位(bit ...

  2. C语言中的大小端转换与高低位颠倒

    在说大小端高低位之前,肯定要说明数据在计算机内是如何存储的.在计算机中,我们将数据分割成了一个一个的字节(byte),而每个字节又有8位(bit). 一个字节,可以声明为unsigned char型数 ...

  3. 汇编码转机器码万能转换工具(Intel 32/64、ARM 大小端、Thumb大小端、ARM V8大小端、Thumb V8大小端、AArch64)

    汇编码转机器码万能转换工具(Intel 32/64.ARM 大小端.Thumb大小端.ARM V8大小端.Thumb V8大小端.AArch64) 众所周知,计算机核心处理器就是CPU是计算机的重要组 ...

  4. python 大小端转换_Python 字节串转换以及大小端相关的几个方法

    查看当前系统是大端还是小端:sys.byteorder,Windows是小端的,而小端在我们看来是和常规反向地 字节串的赋值表达式 bytes((1,2,ord('1'),ord('2'))) # 可 ...

  5. Java 大小端转换(基于ByteBuffer)

    大小端的基础知识: 小端 ( little-endian):低位字节在前,高位字节在后.大端(Big-Endian),则反之.具体而言,就是为了说清楚,CPU架构中1字(word)的存储顺序.计算机内 ...

  6. 使用函数实现数据大小端转换

    使用函数实现数据大小端转换 题目描述 在数字芯片设计中,经常把实现特定功能的模块编写成函数,在需要的时候再在主模块中调用,以提高代码的复用性和提高设计的层次,分别后续的修改. 请用函数实现一个4bit ...

  7. 来点基础的东西,关于浮点数的大小端转换以及浮点数的格式解析

    在网上并没有任何信息或则资料介绍关于浮点数的大小端转换的原理的问题,大小端是不同的内存存储实现方式,大端更符合人的阅读习惯,而小端则是更适合CPU读取. 我先说整型,来说明大小端在内存中的存储方式,整 ...

  8. Verilog学习之数据大小端转换设计

    文章目录 前言 一.题目描述 二.实现思路 1.函数的概念 2.具体思路 三.代码展示 总结 前言 今天我们做的是第十道题--使用函数实现数据大小端转换,这道题其实也比较简单,就是逆向输出一个数据,但 ...

  9. Linux大小端转换实现

    实现 #include <byteswap.h> #include <stdint.h>/*** @brief 8字节类型的字节序转化*/ template<class ...

最新文章

  1. 云网融合 — 应用场景
  2. 【PM模块】PM模块主数据
  3. 集合python_python集合访问的方法
  4. C++基础——函数模板
  5. sublime text3 及相关的安装
  6. LeetCode刷题小技巧-错题记录本-C++版本
  7. 六度空间(广度优先遍历 · 数据结构 · 图)
  8. UE4 创建地形失败:Unreal Engine 4 Crash Reporter
  9. 称重传感器(体脂体重模块)应用及特点
  10. AI新基建沙场点兵,背后是一场“路径之争”
  11. vb.net中关于byval和byref的使用
  12. 细说linux挂载——mount,及其他……
  13. pandas多场景业务实战-指标计算
  14. I2C之RX-8025驱动
  15. matlab 数据透视表,MATLAB | 用行为数据处理EEG数据事件码
  16. 【讲清楚】rebase的使用
  17. SCADA系列 系统评估
  18. 2021-2022学年广州市广大附中七年级第一学期期中考试英语试题
  19. CCPC 桂林站总结
  20. Airflow调度工具简介和使用

热门文章

  1. php 顿号转义,PHP实现将标点符号正则替换为空格的方法
  2. Java之访问修饰符
  3. RGB颜色空间与Lab颜色空间区别与联系(附转换代码)
  4. node更改html中的列表,HTMLCollection和NodeList
  5. BERT与知识图谱的结合——ERNIE模型浅析
  6. 链表和分开查询的区别
  7. 便携式计算机的基本知识,使用便携式计算机,错误的做法是()A、非涉密便携机不得存储或处理涉密信息B、涉密便携机需经过保 - 普法考试题库问答...
  8. java中short类型变量
  9. 【ES6】es6数组中对象去重,数组对象去重方法总结---filter()与reduce()实践
  10. BUUCTF-web极客大挑战