C/C++知识点之arm指令
小标 2019-03-01 来源 : 阅读 1181 评论 0

摘要:本文主要向大家介绍了 C/C++知识点之arm指令,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

本文主要向大家介绍了 C/C++知识点之arm指令,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。

C/C++知识点之arm指令

Thumb® 16 位指令集
快速参考卡
本卡列出了版本低于 ARM®v6T2 的支持 Thumb 的处理器中可用的所有 Thumb 指令。此外,还列出了所有 Thumb-2 16 位指令。
除非另外注明,否则本卡中显示的指令均为 Thumb-2 16 位指令。
除非指定,否则所有寄存器都为 Lo (R0-R7)。 Hi 寄存器为 R8-R15。
表关键字
§ 请参阅表 ARM 体系结构版本。<loreglist+LR> 以逗号隔开的 Lo 寄存器列表。加上 LR,括在大括号 { 和 } 内。
<loreglist> 以逗号隔开的 Lo 寄存器列表,括在大括号 { 和 } 内。<loreglist+PC> 以逗号隔开的 Lo 寄存器列表。加上 PC,括在大括号 { 和 } 内。
运算 汇编器更新 操作说明
移动立即数MOVS Rd, #<imm> N Z Rd := imm imm 范围为 0-255。
Lo 到 Lo MOVS Rd, Rm N Z Rd := Rm LSLS Rd, Rm, #0 的同义词
Hi 到 Lo、Lo 到 Hi、Hi 到 Hi MOV Rd, Rm Rd := Rm 不是 Lo 到 Lo。
任何寄存器之间6 MOV Rd, Rm Rd := Rm 任何寄存器之间。
加法立即数 3 ADDS Rd, Rn, #<imm> N Z C V Rd := Rn + imm imm 范围为 0-7。
所有寄存器 Lo ADDS Rd, Rn, Rm N Z C V Rd := Rn + Rm
Hi 到 Lo、Lo 到 Hi、Hi 到 Hi ADD Rd, Rd, Rm Rd := Rd + Rm 不是 Lo 到 Lo。
任何寄存器之间T2 ADD Rd, Rd, Rm Rd := Rd + Rm 任何寄存器之间。
立即数 8 ADDS Rd, Rd, #<imm> N Z C V Rd := Rd + imm imm 范围为 0-255。
带进位ADCS Rd, Rd, Rm N Z C V Rd := Rd + Rm + C-bit
值与 SP ADD SP, SP, #<imm> SP := SP + imm imm 范围为 0-508(字对齐)。
SP 所存储的地址ADD Rd, SP, #<imm> Rd := SP + imm imm 范围为 0-1020(字对齐)。
PC 所存储的地址ADR Rd, <label> Rd := label 标签范围为 PC 到 PC+1020(字对齐)。
减法Lo 到 Lo SUBS Rd, Rn, Rm N Z C V Rd := Rn – Rm
立即数 3 SUBS Rd, Rn, #<imm> N Z C V Rd := Rn – imm imm 范围为 0-7。
立即数 8 SUBS Rd, Rd, #<imm> N Z C V Rd := Rd – imm imm 范围为 0-255。
带进位SBCS Rd, Rd, Rm N Z C V Rd := Rd – Rm – NOT C 位
来自 SP 的值SUB SP, SP, #<imm> SP := SP – imm imm 范围为 0-508(字对齐)。
求反RSBS Rd, Rn, #0 N Z C V Rd := – Rn 同义词:NEGS Rd, Rn
乘法乘法MULS Rd, Rm, Rd N Z   Rd := Rm  Rd  C 和 V 标记在 §4T 中不可预测,
在 §5T 及更高版本中保持不变
比较CMP Rn, Rm N Z C V 更新 Rn – Rm 的 APSR 标记可为 Lo 和 Lo、Lo 和 Hi、Hi 和 Lo 或者 Hi 和 Hi。
求反CMN Rn, Rm N Z C V 更新 Rn + Rm 的 APSR 标记
立即数CMP Rn, #<imm> N Z C V 更新 Rn – imm 的 APSR 标记imm 范围为 0-255。
逻辑与ANDS Rd, Rd, Rm N Z Rd := Rd AND Rm
异或EORS Rd, Rd, Rm N Z Rd := Rd EOR Rm
或ORRS Rd, Rd, Rm N Z Rd := Rd OR Rm
位清零BICS Rd, Rd, Rm N Z Rd := Rd AND NOT Rm
取反移动MVNS Rd, Rd, Rm N Z Rd := NOT Rm
测试位TST Rn, Rm N Z 更新 Rn AND Rm 的 APSR 标记
移位/循环逻辑左移LSLS Rd, Rm, #<shift> N Z C Rd := Rm << shift 允许移动 0-31 位。 如果移位为 0,则不会影响  C 标记。
LSLS Rd, Rd, Rs N Z C Rd := Rd << Rs[7:0] 如果 Rs[7:0] 为 0,则不会影响  C 标记。
逻辑右移LSRS Rd, Rm, #<shift> N Z C Rd := Rm >> shift 允许移动 1-32 位。
LSRS Rd, Rd, Rs N Z C Rd := Rd >> Rs[7:0] 如果 Rs[7:0] 为 0,则不会影响  C 标记。
算术右移ASRS Rd, Rm, #<shift> N Z C Rd := Rm ASR shift 允许移动 1-32 位。
ASRS Rd, Rd, Rs N Z C Rd := Rd ASR Rs[7:0] 如果 Rs[7:0] 为 0,则不会影响  C 标记。
向右循环移RORS Rd, Rd, Rs N Z C Rd := Rd ROR Rs[7:0] 如果 Rs[7:0] 为 0,则不会影响  C 标记。 
dds r0,r0,#1  BNE      判断r0+1是否=0  就是判断r0是否为-1 

   

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言C/C+频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程