0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

学习 Cortex-M0+指令集

华仔的编程随笔 来源:华仔的编程随笔 作者:华仔的编程随笔 2023-05-27 20:42 次阅读

最近基于cortex-M0/M0+的mcu增多了,学习了大佬凌烟慕鱼的作品,这里记下来,以便以后学习。

Cortex M0+保留了Cortex-M0的全部56个指令。
根据功能可以将Cortex-M0+处理器的指令化为以下几组

在处理器内移动数据
MOV,MRS(move special register to register),MSR

存储器访问
LDR(LDR,LDRH,LDRB),STR(STR,STRH,STRB),LDM,LDMIA(基地址寄存器会更新),STMIA

栈空间访问
PUSH,POP(都可以用来操作多个寄存器,SP的值=栈顶的数据的地址值+4)

算数运算
ADD,ADDC(带进位的加法),SUB,SBC(带借位的减法),MUL,CMP,CMN(负数比较)

逻辑运算
AND,ORR(逻辑或),EOR(逻辑亦或),BIC(逻辑位清除),MVN(逻辑位取反),TST(位与)

移位和循环操作
ASR(最高位不变,最后一位移出位到APSR中的进位标志),LSL,LSR,ROR(循环右移)

展开和顺序反转操作
REV(字节反转),REV16(半字内的反转),REVSH(低半字内的字节顺序反转,并进行有符号展开)这些反转指令通常用于大小端系统之间数据转换。
SXTB(对字数据中的最低字节进行有符号展开),SXTH,UXTB(对字数据中的最低字节进行无符号展开),UXTH
符号根据第7位或者第15位来决定

程序流控制
B(无条件跳转),B< cond ><标号> (条件跳转,有14个可选cond后缀),BL(跳转并将返回地址存储到LR),BX(跳转并根据寄存器的值第0位修改处理器状态)
一般使BL调用子函数,BX LR返回

存储器屏障指令
DMB,DSB,ISB
这些指令用于复杂的存储器系统。Cortex-M0只有一个存储器接口连接到存储器系统,并且系统总线接口上没有缓存,所以这些指令一般用不到。但是还是支持3个存储器屏障指令

异常相关指令
SVC 请求管理调用,一般用于系统服务的入口或者API
CPS 使能或者禁止中断
其他功能
NOP,BKPT(断点)
伪指令

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
收藏 人收藏

    评论

    相关推荐

    ARM Cortex-M0Cortex-M0+到底有什么区别呢

    ARM Cortex-M0Cortex-M0+到底有什么区别呢
    发表于 01-04 23:15

    ARM Cortex-M0+中断机制和中断编程步骤

    慕课苏州大学.嵌入式开发及应用.第二章.入门与软件框架.ARM Cortex-M0+中断机制和中断编程步骤0 目录2 入门与软件框架2.7 ARM Cortex-M0+中断机制和中断编程步骤
    发表于 11-08 09:10

    ARM Cortex-M0+内核定时器

    慕课苏州大学.嵌入式开发及应用.第三章.基本模块.ARM Cortex-M0+内核定时器 (Systic0 目录3 基本模块3.1 ARM Cortex-M0+内核定时器 (Systic3.1.1
    发表于 11-08 06:36

    Cortex-M0+具有哪些指令

    Cortex-M0+具有哪些指令
    发表于 01-26 06:23

    ARM Cortex-M0+处理器数据表

    Cortex-M0+处理器建立在非常成功的Cortex-M0处理器的基础上,保持了完全的指令集和工具兼容性,同时进一步降低了能耗并提高了性能。 Cortex-M0+极小的硅面积、低功耗
    发表于 08-25 06:03

    ARM指令集详解

    ARM指令集详解 内容提要 ARM指令集 ARM指令集分类与指令格式 ARM指令的寻址方式 ARM
    发表于 03-09 09:39 263次下载
    ARM<b class='flag-5'>指令集</b>详解

    芯唐M0指令集

    芯唐M0指令集,有需要的朋友可以下来看看。
    发表于 01-13 09:48 17次下载

    Cortex-M0指令集

    Cortex-M0指令集,有需要的下来看看。
    发表于 01-13 17:17 29次下载

    ABB_AC800M_PLC指令集.doc

    ABB AC800M_PLC指令集和,学习ABB AC800M_PLC最好的资料之一。
    发表于 09-12 16:13 0次下载

    Cortex_m0用户指南3、4_指令集、外设

    Cortex_m0用户指南3、4_指令集、外设
    发表于 10-09 11:10 6次下载
    <b class='flag-5'>Cortex_m0</b>用户指南3、4_<b class='flag-5'>指令集</b>、外设

    Cortex-M0的完整指令集

    Cortex-M0的完整指令集
    发表于 10-13 15:00 64次下载
    <b class='flag-5'>Cortex-M0</b>的完整<b class='flag-5'>指令集</b>

    thumb指令集是什么_thumb指令集与arm指令集的区别

    thumb指令集是arm指令集的一个子集,是针对代码密度问题而提出的,它具有16位的代码宽度。与等价的32位代码相比较,thumb指令集在保留32位代码优势的同时,大大的节省了系统的存储空间
    发表于 11-03 17:34 1.8w次阅读
    thumb<b class='flag-5'>指令集</b>是什么_thumb<b class='flag-5'>指令集</b>与arm<b class='flag-5'>指令集</b>的区别

    Cortex-M系列处理器指令集_指令集特性比较总结

    本文主要介绍Cortex-M系列处理器指令集指令集特性比较总结,具体的跟随小编一起来了解一下。
    发表于 04-18 16:59 7859次阅读
    <b class='flag-5'>Cortex-M</b>系列处理器<b class='flag-5'>指令集</b>_<b class='flag-5'>指令集</b>特性比较总结

    Cortex-M0+指令集

    Cortex-M0+指令集Cortex M0+保留了Cortex-M0的全部56个指令。根据功能
    发表于 12-01 13:06 17次下载
    <b class='flag-5'>Cortex-M0+</b><b class='flag-5'>指令集</b>

    一文详解Arm Cortex-M处理器指令集

    Arm处理器是基于精简指令集计算机(RISC)原理设计的,指令集和相关译码机制较为简单,具有32位Arm指令集和16位Thumb指令集,Arm指令集
    的头像 发表于 05-17 09:31 6200次阅读