Cortex-M0+指令集

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(断点)
  • 伪指令

Cortex-M0+的指令集的详细解释见:arm官网 Cortex-M0+内核介绍

<script type="text/javascript"> $(function () { $('pre.prettyprint code').each(function () { var lines = $(this).text().split('\n').length; var $numbering = $('<ul/>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('<li/>').text(i)); }; $numbering.fadeIn(1700); }); }); </script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值