ARM Cortex-M instructions
| ARM Cortex-M  | 
Thumb | Thumb-2 | Hardware multiply  | 
Hardware divide  | 
Saturated math  | 
DSP extensions  | 
Floating-point | ARM architecture  | 
Core architecture  | 
|---|---|---|---|---|---|---|---|---|---|
| Cortex-M0 | 
Most | Subset | 1 or 32 cycle | No | No | No | No | ARMv6-M | 
Von Neumann | 
| Cortex-M0+ | 
Most | Subset | 1 or 32 cycle | No | No | No | No | ARMv6-M | 
Von Neumann | 
| Cortex-M1 | 
Most | Subset | 3 or 33 cycle | No | No | No | No | ARMv6-M | 
Von Neumann | 
| Cortex-M3 | 
Entire | Entire | 1 cycle | Yes | Yes | No | No | ARMv7-M | 
Harvard | 
| Cortex-M4 | 
Entire | Entire | 1 cycle | Yes | Yes | Yes | Optional | ARMv7E-M | 
Harvard | 
| Cortex-M4F | Entire | Entire | 1 cycle | Yes | Yes | Yes | Yes | ARMv7E-M | Harvard | 
Note: The Cortex-M0 / M0+ / M1 doesn't include these Thumb instructions: 
CBZ, CBNZ, IT; nor does it include a divide instruction.
Note: The Cortex-M0 / M0+ / M1 only include these Thumb-2 instructions: 
DMB, DSB, ISB, MRS, MSR.
Note: If a smaller silicon die size is required, the Cortex-M0 / M0+ / M1 
can implement a smaller and slower multiply instruction.
All four Cortex-M cores implement a common instruction subset that consists of:
Thumb subset, Thumb-2 subset, and multiply.
The Cortex-M0 / M0+ / M1 include all older Thumb instructions, 
except new instructions (CBZ, CBNZ, IT) which were added in ARMv7-M architecture.
The Cortex-M0 / M0+ / M1 include a minor subset of Thumb-2 instructions 
(BL, DMB, DSB, ISB, MRS, MSR).
The Cortex-M0 / M0+ / M1 were designed to be the smallest size possible, 
thus having the fewest instructions of the Cortex-M family.
The Cortex-M3 adds 3 Thumb instructions and all Thumb-2 instructions, 
plus a 10-12 cycle hardware divide and saturated math instructions.
The Cortex-M4 adds DSP instructions and an optional single-precisionfloating-point unit.
If the Cortex-M4 has the floating point unit, then it is known as the Cortex-M4F.
| Instructions | Instruction size  | 
Cortex M0  | 
Cortex M0+  | 
Cortex M1  | 
Cortex M3  | 
Cortex M4  | 
Cortex M4F  | 
|---|---|---|---|---|---|---|---|
| ADC, ADD, ADR, AND, ASR, B, BIC, BKPT, BLX, BX, CMN, CMP, CPS, EOR, LDM, LDR, LDRB, LDRH, LDRSB, LDRSH, LSL, LSR, MOV, MUL, MVN, NOP, ORR, POP, PUSH, REV, REV16, REVSH, ROR, RSB, SBC, SEV, STM, STMIA, STR, STRB, STRH, SUB, SVC, SXTB, SXTH, TST, UXTB, UXTH, WFE, WFI, YIELD | 16-bit | Yes | Yes | Yes | Yes | Yes | Yes | 
| BL, DMB, DSB, ISB, MRS, MSR | 32-bit | Yes | Yes | Yes | Yes | Yes | Yes | 
| CBNZ, CBZ, IT | 16-bit | No | No | No | Yes | Yes | Yes | 
| ADC, ADD, ADR, AND, ASR, B, BFC, BFI, BIC, CDP, CLREX, CLZ, CMN, CMP, DBG, EOR, LDC, LDMA, LDMDB, LDR, LDRB, LDRBT, LDRD, LDREX, LDREXB, LDREXH, LDRH, LDRHT, LDRSB, LDRSBT, LDRSHT, LDRSH, LDRT, MCR, LSL, LSR, MLS, MCRR, MLA, MOV, MOVT, MRC, MRRC, MUL, MVN, NOP, ORN, ORR, PLD, PLDW, PLI, POP, PUSH, RBIT, REV, REV16, REVSH, ROR, RRX, RSB, SBC, SBFX, SDIV, SEV, SMLAL, SMULL, SSAT, STC, STMDB, STR, STRB, STRBT, STRD, STREX, STREXB, STREXH, STRH, STRHT, STRT, SUB, SXTB, SXTH, TBB, TBH, TEQ, TST, UBFX, UDIV, UMLAL, UMULL, USAT, UXTB, UXTH, WFE, WFI, YIELD | 32-bit | No | No | No | Yes | Yes | Yes | 
| PKH, QADD, QADD16, QADD8, QASX, QDADD, QDSUB, QSAX, QSUB, QSUB16, QSUB8, SADD16, SADD8, SASX, SEL, SHADD16, SHADD8, SHASX, SHSAX, SHSUB16, SHSUB8, SMLABB, SMLABT, SMLATB, SMLATT, SMLAD, SMLALBB, SMLALBT, SMLALTB, SMLALTT, SMLALD, SMLAWB, SMLAWT, SMLSD, SMLSLD, SMMLA, SMMLS, SMMUL, SMUAD, SMULBB, SMULBT, SMULTT, SMULTB, SMULWT, SMULWB, SMUSD, SSAT16, SSAX, SSUB16, SSUB8, SXTAB, SXTAB16, SXTAH, SXTB16, UADD16, UADD8, UASX, UHADD16, UHADD8, UHASX, UHSAX, UHSUB16, UHSUB8, UMAAL, UQADD16, UQADD8, UQASX, UQSAX, UQSUB16, UQSUB8, USAD8, USADA8, USAT16, USAX, USUB16, USUB8, UXTAB, UXTAB16, UXTAH, UXTB16 | 32-bit | No | No | No | No | Yes | Yes | 
| VABS, VADD, VCMP, VCMPE, VCVT, VCVTR, VDIV, VLDM, VLDR, VMLA, VMLS, VMOV, VMRS, VMSR, VMUL, VNEG, VNMLA, VNMLS, VNMUL, VPOP, VPUSH, VSQRT, VSTM, VSTR, VSUB | 32-bit | No | No | No | No | No | Yes | 
ARM Cortex-M instructions的更多相关文章
- swddude -- A SWD programmer for ARM Cortex microcontrollers.
		
Introducing swddude I love the ARM Cortex-M series of microcontrollers. The sheer computational po ...
 - Implementation of Serial Wire JTAG flash programming in ARM Cortex M3 Processors
		
Implementation of Serial Wire JTAG flash programming in ARM Cortex M3 Processors The goal of the pro ...
 - 【ARM-Linux开发】ARM7 ARM9 ARM Cortex M3 M4 有什么区别
		
ARM7 ARM9 ARM Cortex M3 M4 区别 arm7 arm9 可以类比386和奔腾, 不同代,arm9相比arm7指令集和性能都有所增强,arm7和arm9都有带mmu和无mmu的版 ...
 - 灵动微电子ARM Cortex M0 MM32F0010 UART1和UART2中断接收数据
		
灵动微电子ARM Cortex M0 MM32F0010 UART1和UART2中断接收数据 目录: 1.MM32F0010UART简介 2.MM32F0010UART特性 3.MM32F0010使用 ...
 - 灵动微电子ARM Cortex M0 MM32F0010 Timer定时器中断定时功能的配置
		
灵动微电子ARM Cortex M0 MM32F0010 Timer定时器中断定时功能的配置 目录: 1.Timer1高级定时器Timer3通用定时器Timer14基本定时器简介 2.Timer1高级 ...
 - 灵动微电子ARM Cortex M0 MM32F0010 GPIO 的配置驱动LED灯
		
灵动微电子ARM Cortex M0 MM32F0010 GPIO的配置 目录: 1.前言 2.学习方法简要说明 3.要点提示 4.注意事项 5.MM32F0010系统时钟的配置 6.MM32F001 ...
 - ARM Cortex M3系列GPIO口介绍(工作方式探讨)
		
一.Cortex M3的GPIO口特性 在介绍GPIO口功能前,有必要先说明一下M3的结构框图,这样能够更好理解总线结构和GPIO所处的位置. Cortex M3结构框图 从图中可以看出 ...
 - ARM Cortex M3(V7-M架构)硬件启动程序 二
		
解析 STM32 的启动过程 解析STM32的启动过程 当前的嵌入式应用程序开发过程里,并且C语言成为了绝大部分场合的最佳选择.如此一来main函数似乎成为了理所当然的起点——因为C程序往往从main ...
 - ARM Cortex M3(V7-M架构)硬件启动程序 一
		
Cortex-m3启动代码分析笔记 启动代码文件名是STM32F10X.S,它的作用先总结下,然后再分析. 启动代码作用一般是: 1)堆和栈的初始化: 2)中断向量表定义: 3)地址重映射及中断向量表 ...
 - ARM Cortex Design Considerations for Debug
		
JTAG was the traditional mechanism for debug connections for ARM7/9 parts, but with the Cortex-M fam ...
 
随机推荐
- c# 读取其他程序的ListView内容
			
ArcMap没找到一个导出图层字段结构的功能,自已花点时间用C#做了个小工具,专门用来导arcmap中图层属性面板中的字段信息. 使用说明: 1) 点击“查找窗口”按钮.2) 在ListView控件上 ...
 - 嵌入式 Linux进程含义知多少
			
理想情况下,您应该明白在您的系统中运行的每一个进程.要获得所有进程的列表,可以执行命令 ps -ef(POSIX 风格)或 ps ax(BSD 风格).进程名有方括号的是内核级的进程,执行辅助功能(比 ...
 - JQUERY EASYUI 验证框(VALIDATEBOX)用法
			
Query EasyUI 验证框(ValidateBox)在表单的验证方面给我们提供了很方便的方法,下面来介绍一下验证框(ValidateBox)的详细用法(查看演示):HTML 代码 <inp ...
 - web-ylbtech-数据库备份-数据库设计
			
ylbtech-DatabaseDesgin:web-ylbtech-数据库备份-数据库设计 DatabaseName:ylbtech Model:备份 Type:数据库备份设计 Url: 1.A,数 ...
 - JDBC数据源(DataSource)的简单实现
			
数据源技术是Java操作数据库的一个很关键技术,流行的持久化框架都离不开数据源的应用. 数据源提供了一种简单获取数据库连接的方式,并能在内部通过一个池的机制来复用数据库连接,这样就大大减少创建数据 ...
 - selenium python (十)浏览器多窗口处理
			
#!/usr/bin/python# -*- coding: utf-8 -*-__author__ = 'zuoanvip'#在测试过程中有时候会遇到出现多个浏览器窗口的情况,这时候我们可以通过窗口 ...
 - sql server 数据库的操作
			
Technorati 标记: sql截取,sql修改 把一个字段的部分取出来,插入到新字段 1 ) //方法二 sql server修改一个字段中的部分数据 update tablename se ...
 - STL中用erase()方法遍历删除元素 .xml
			
pre{ line-height:1; color:#f0caa6; background-color:#2d161d; font-size:16px;}.sysFunc{color:#e54ae9; ...
 - CSS3制作苹果风格键盘
			
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAtMAAAEICAIAAAASh+8XAAAgAElEQVR4nOzdaXBU14E3/FPVBVUq5X
 - JavaScript 性能优化 --By Google V8 Team Manager
			
原文:https://developers.google.com/v8/?hl=zh-CN Be Prepared before writing code[9:35] Understand how V ...