当前位置: 首页 > news >正文

Linux基础 -- ARM 32位常用机器码(指令)整理

ARM 32位常用机器码(指令)整理

1. 数据处理指令(运算、逻辑、比较)

指令含义示例备注
MOV赋值(寄存器传输)MOV R0, R1直接将 R1 复制到 R0
MVN取反MVN R0, R1R0 = ~R1
ADD加法ADD R0, R1, R2R0 = R1 + R2
ADC带进位加法ADC R0, R1, R2R0 = R1 + R2 + C(进位)
SUB减法SUB R0, R1, R2R0 = R1 - R2
SBC带借位减法SBC R0, R1, R2R0 = R1 - R2 - !C
RSB逆向减法RSB R0, R1, #0R0 = 0 - R1
AND按位与AND R0, R1, R2R0 = R1 & R2
ORR按位或ORR R0, R1, R2`R0 = R1
EOR按位异或EOR R0, R1, R2R0 = R1 ^ R2
BIC按位清除BIC R0, R1, R2R0 = R1 & ~R2
CMP比较CMP R0, R1计算 R0 - R1 并设置标志
TST按位测试TST R0, R1计算 R0 & R1 并设置标志

2. 乘法和除法指令

指令含义示例备注
MUL无符号乘法MUL R0, R1, R2R0 = R1 * R2
MLA乘法累加MLA R0, R1, R2, R3R0 = (R1 * R2) + R3
MLS乘法减法MLS R0, R1, R2, R3R0 = R3 - (R1 * R2)
UMULL无符号长乘法UMULL R0, R1, R2, R3R1:R0 = R2 * R3
SMULL有符号长乘法SMULL R0, R1, R2, R3R1:R0 = R2 * R3
UDIV无符号除法UDIV R0, R1, R2R0 = R1 / R2(ARMv7 以上)
SDIV有符号除法SDIV R0, R1, R2R0 = R1 / R2(ARMv7 以上)

3. 数据传输指令(加载/存储)

指令含义示例备注
LDR加载数据LDR R0, [R1]R0 = *(R1) 读取 R1 指向的内存
STR存储数据STR R0, [R1]*(R1) = R0
LDM批量加载LDMIA R0!, {R1-R3}读取多个寄存器
STM批量存储STMDB R0!, {R1-R3}存储多个寄存器
PUSH入栈PUSH {R0, R1}ARM 栈向低地址增长
POP出栈POP {R0, R1}

4. 分支与跳转指令

指令含义示例备注
B无条件跳转B label
BL过程调用BL function进入子程序,返回地址存 LR
BX返回或跳转BX LR过程返回(ARM/Thumb 切换)
BLX远程跳转BLX R0可能涉及 Thumb 模式

5. 系统控制指令

指令含义示例备注
NOP空指令NOP什么都不做
SVC软中断SVC #0系统调用
MRS读 CPSRMRS R0, CPSR读取状态寄存器
MSR写 CPSRMSR CPSR, R0修改状态寄存器
WFI进入低功耗WFI等待中断

总结

ARM 32 位指令集中,最常用的指令包括:

  • 数据处理MOVADDSUBCMPAND
  • 加载/存储LDRSTRPUSHPOP
  • 分支BBLBX
  • 系统控制NOPSVCMRSMSR
http://www.lryc.cn/news/544763.html

相关文章:

  • 内存中的缓存区
  • 基于 Spring Boot 的 +Vue“宠物咖啡馆平台” 系统的设计与实现
  • LeetCode 解题思路 7(Hot 100)
  • linux-Dockerfile及docker-compose.yml相关字段用途
  • deepseek部署:ELK + Filebeat + Zookeeper + Kafka
  • 微软Office 2016-2024 x86直装版 v16.0.18324 32位
  • CMake宏定义管理:如何优雅处理第三方库的宏冲突
  • 【SpringCloud】Gateway
  • Maven入门教程
  • 大数据与金融科技:革新金融行业的动力引擎
  • Autosar RTE配置-Port Update配置及使用-基于ETAS工具
  • 【AVRCP】深入理解蓝牙音频 / 视频远程控制规范:从基础到应用
  • AWS SQS跨账户访问失败排查指南
  • 算法训练(leetcode)二刷第三十八天 | 1143. 最长公共子序列、1035. 不相交的线、53. 最大子数组和、392. 判断子序列
  • 【JavaWeb学习Day20】
  • 2024年12月中国电子学会青少年软件编程(Python)等级考试试卷(二级)真题 + 答案
  • 一、对iic类模块分析与使用
  • ROS 2机器人开发--CMakeLists.txt 文件详解
  • kan与小波,和不知所云的画图
  • 使用DeepSeek实现自动化编程:类的自动生成
  • 算法题:快速排序
  • Python的那些事第三十六篇:基于 Vega 和 Vega-Lite 的数据可视化解决方案,Altair 声明式可视化库
  • aws(学习笔记第三十课) 练习使用transit gateway
  • Phpstudy中的MySQL无法正常启动或启动后自动暂停,以及sqlilab环境搭建出现的问题解决方法
  • 【Android】安卓付款密码输入框、支付密码输入框
  • Python异常处理:从入门到精通的实用指南
  • 【AVL树】—— 我与C++的不解之缘(二十三)
  • 用大白话解释日志处理Log4j 是什么 有什么用 怎么用
  • 无人机遥控器的亮度 和 两个工作频率
  • 【Linux】命令行参数 | 环境变量(四)