ZHDU116G January 2018 – June 2024 CC1312PSIP , CC1312R , CC1352P , CC1352R , CC2642R , CC2642R-Q1 , CC2652P , CC2652PSIP , CC2652R , CC2652RB , CC2652RSIP , CC2662R-Q1
处理器实现 ARMv7-M Thumb 指令集。表 3-25 列出了 Arm® Cortex®-M4F 指令及其周期数。周期计数基于具有零等待状态的系统。
在汇编器语法中,根据操作的不同,<op2> 字段可替换为以下选项之一:
RmRm, LSL #4Rm, LSL Rs#0xE000E000为简洁起见,并未显示所有加载和存储寻址模式。有关更多信息,请参阅 ARMv7-M 架构参考手册。
表 3-25 在周期 列中使用以下缩写:
| 运行 | 说明 | 汇编器 | 周期 |
|---|---|---|---|
| 移动 | 寄存器 | | 1 |
| 16 位立即 | | 1 | |
| 立即进入顶部 | | 1 | |
| 至 PC | | 1 + P | |
| 向 | 向 | | 1 |
| 添加到 PC | | 1 + P | |
| 随携带添加 | | 1 | |
| 表单地址 | | 1 | |
| 减法 | 减法 | | 1 |
| 用借位减去 | | 1 | |
| 反向 | | 1 | |
| 乘法 | 乘法 | | 1 |
| 乘累加 | | 1 | |
| 乘减 | | 1 | |
| 有符号长整型 | | 1 | |
| 无符号长整型 | | 1 | |
| 有符号长整型累加器 | | 1 | |
| 无符号长整型累加器 | | 1 | |
| 分频 | 有符号 | | 2 至 12(1) |
| 无符号 | | 2 至 12(1) | |
| 饱和 | 有符号 | | 1 |
| 无符号 | | 1 | |
| 比较 | 比较 | | 1 |
| 负 | | 1 | |
| 逻辑 | 和 | | 1 |
| 异或 | | 1 | |
| 或 | | 1 | |
| 或非 | | 1 | |
| 位清零 | | 1 | |
| 不移动 | | 1 | |
| 和测试 | | 1 | |
| 异或测试 | | 1 | |
| 移位 | 逻辑左移 | | 1 |
| 逻辑左移 | | 1 | |
| 逻辑右移 | | 1 | |
| 逻辑右移 | | 1 | |
| 算术右移 | | 1 | |
| 算术右移 | | 1 | |
| 旋转 | 向右旋转 | | 1 |
| 向右旋转 | | 1 | |
| 带延长 | | 1 | |
| 数量 | 前导零 | | 1 |
| 负载 | 字 | | 2(2) |
| 至 PC | | 2(2) + P | |
| 半字 | | 2(2) | |
| 字节 | | 2(2) | |
| 有符号半字 | | 2(2) | |
| 有符号字节 | | 2(2) | |
| 用户字 | | 2(2) | |
| 用户半字 | | 2(2) | |
| 用户字节 | | 2(2) | |
| 用户签名的半字 | | 2(2) | |
| 用户签名字节 | | 2(2) | |
| PC 相对 | | 2(2) | |
| 双字 | | 1 + N | |
| 多个 | | 1 + N | |
| 多个,包括 PC | | 1 + N + P | |
| 存储 | 字 | | 2(2) |
| 半字 | | 2(2) | |
| 字节 | | 2(2) | |
| 有符号半字 | | 2(2) | |
| 有符号字节 | | 2(2) | |
| 用户字 | | 2(2) | |
| 用户半字 | | 2(2) | |
| 用户字节 | | 2(2) | |
| 用户签名的半字 | | 2(2) | |
| 用户签名字节 | | 2(2) | |
| 双字 | | 1 + N | |
| 多个 | | 1 + N | |
| 推入 | 推入 | | 1 + N |
| 带连接寄存器的推入 | | 1 + N | |
| 弹出 | 弹出 | | 1 + N |
| 弹出并返回 | | 1 + N + P | |
| 信标 | 加载独占项 | | 2 |
| 加载独占半字 | | 2 | |
| 加载独占字节 | | 2 | |
| 存储独占 | | 2 | |
| 存储独占半字 | | 2 | |
| 存储独占字节 | | 2 | |
| 清除独占监视器 | | 1 | |
| 转移 | 条件 | | 1 或 1 + P(3) |
| 无条件 | | 1 + P | |
| 带链接 | | 1 + P | |
| 带交换 | | 1 + P | |
| 带链路和交换 | | 1 + P | |
| 如果为零,则转移 | | 1 或 1 + P(3) | |
| 如果不为零,则转移 | | 1 或 1 + P(3) | |
| 字节表转移 | | 2 + P | |
| 半字表转移 | | 2 + P | |
| 状态变化 | 管理程序调用 | | – |
| If-then-else | | 1(4) | |
| 禁用中断 | | 1 或 2 | |
| 启用中断 | | 1 或 2 | |
| 读取特殊寄存器 | | 1 或 2 | |
| 写入特殊寄存器 | | 1 或 2 | |
| Breakpoint | | – | |
| 扩展 | 有符号半字到字 | | 1 |
| 有符号字节到字 | | 1 | |
| 无符号半字 | | 1 | |
| 无符号字节 | | 1 | |
| 位字段 | 提取无符号 | | 1 |
| 提取有符号 | | 1 | |
| 清除 | | 1 | |
| 插入 | | 1 | |
| 反向 | 字中的字节 | | 1 |
| 两个半字中的字节 | | 1 | |
| 有符号底部半字 | | 1 | |
| 字中的位 | | 1 | |
| 提示 | 发送事件 | | 1 |
| 等待事件 | | 1 + W | |
| 等待中断 | | 1 + W | |
| 无操作 | | 1 | |
| 栅 | 指令同步 | | 1 + B |
| 数据存储器 | | 1 + B | |
| 数据同步 | | 1 + B |
表 3-26 列出了 Arm® Cortex®-M4F 处理器实现的 DSP 指令。
| 运行 | 说明 | 汇编器 | 周期 |
|---|---|---|---|
| 乘法 | 32 位乘法加 32 个最高有效位累加 | | 1 |
| 32 位乘法与 32 个最高有效位相减 | | 1 | |
| 32 位乘法会返回 32 个最高有效位 | | 1 | |
| 32 位乘法,其中四舍五入的 32 个最高有效位累加 | | 1 | |
| 32 位乘法,其中四舍五入的 32 个最高有效位减法 | | 1 | |
| 32 位乘法返回四舍五入的 32 个最高有效位 | | 1 | |
| 有符号的乘法 | Q 设置 16 位有符号乘法,并进行 32 位累加,低乘低 | | 1 |
| Q 设置 16 位有符号乘法与 32 位累加,低乘高 | | 1 | |
| 16 位有符号乘法,并进行 64 位累加,低乘低 | | 1 | |
| 16 位有符号乘法与 64 位累加,低乘高 | | 1 | |
| 双 16 位有符号乘法,采用单个 64 位累加器 | | 1 | |
| 16 位有符号乘法,并进行 64 位累加,高乘低 | | 1 | |
| 16 位有符号乘法与 64 位累加,高乘高 | | 1 | |
| 16 位有符号乘法,生成 32 位结果,低乘低 | | 1 | |
| 16 位有符号乘法,生成 32 位结果,低乘高 | | 1 | |
| 16 位有符号乘法,生成 32 位结果,高乘低 | | 1 | |
| 16 位有符号乘法,生成 32 位结果,高乘高 | | 1 | |
| 16 位乘以 32 位有符号乘法,返回 32 个最高有效位,低 | | 1 | |
| 16 位乘以 32 位有符号乘法,返回 32 个最高有效位,高 | | 1 | |
| 双通道 16 位有符号乘法返回差异 | | 1 | |
| Q 设置 16 位有符号乘法,累加 32 位,高乘低 | | 1 | |
| Q 设置 16 位有符号乘法,累加 32 位,高乘高 | | 1 | |
| Q 设置双 16 位有符号乘法,采用单个 32 位累加器 | | 1 | |
| Q 设置 16 位乘 32 位有符号乘法,累加 32 位,低 | | 1 | |
| Q 设置 16 位乘 32 位有符号乘法,累加 32 位,高 | | 1 | |
| Q 设置双 16 位有符号乘减,累加 32 位 | | 1 | |
| Q 设置双 16 位有符号乘减,采用 64 位累加器 | | 1 | |
| Q 设置双路 16 位有符号乘法的总和 | | 1 | |
| 无符号的乘法 | 32 位无符号乘法,双精度 32 位累加,生成 64 位结果 | | 1 |
| 饱和 | Q 设置双 16 位饱和 | | 1 |
| Q 设置双 16 位无符号饱和 | | 1 | |
| 紧凑和非紧凑 | 将移位后的低半字打包至高半字位置 | | |
| 将移位后的高半字打包至低半字位置 | | 1 | |
| 提取 8 位,并将符号扩展到 32 位 | | 1 | |
| 双提取 8 位,并将每个符号扩展到 16 位 | | 1 | |
| 提取 16 位,并将符号扩展到 32 位 | | 1 | |
| 提取 8 位,并将零扩展到 32 位 | | 1 | |
| 双路提取 8 位,并将零扩展到 16 位 | | 1 | |
| 提取 16 位,并将零扩展到 32 位 | | 1 | |
| 提取 8 位至 32 位无符号加法 | | 1 | |
| 双提取 8 位至 16 位无符号加法 | | 1 | |
| 提取的 16 位至 32 位无符号加法 | | 1 | |
| 提取的 8 位至 32 位有符号加法 | | 1 | |
| 双路提取 8 位至 16 位有符号加法 | | 1 | |
| 提取的 16 位至 32 位有符号加法 | | 1 | |
| 其他数据处理 | 根据 GE 位选择字节 | | 1 |
| 四通道 8 位无符号绝对差值的无符号和 | | 1 | |
| 32 位累加时四路 8 位无符号绝对差的无符号和 | | 1 | |
| 加法 | 两路 16 位无符号饱和加法 | | 1 |
| 四路 8 位无符号饱和加法 | | 1 | |
| Q 设置饱和加法 | | 1 | |
| Q 设置两路 16 位饱和加法 | | 1 | |
| Q 设置四路 8 位饱和加法 | | 1 | |
| Q 设置饱和倍乘和加法 | | 1 | |
| GE 设置四路 8 位有符号加法 | | 1 | |
| GE 设置双 16 位有符号加法 | | 1 | |
| 两路 16 位有符号加法,结果减半 | | 1 | |
| 四路 8 位有符号加法,结果减半 | | 1 | |
| GE 设置双 16 位无符号加法 | | 1 | |
| GE 设置四路 8 位无符号加法 | | 1 | |
| 双 16 位无符号加法,结果减半 | | 1 | |
| 四路 8 位无符号加法,结果减半 | | 1 | |
| 减法 | Q 设置饱和倍减 | | 1 |
| 两路 16 位无符号饱和减法 | | 1 | |
| 四路 8 位无符号饱和减法 | | 1 | |
| Q 设置饱和减法 | | 1 | |
| Q 设置两路 16 位饱和减法 | | 1 | |
| Q 设置四路 8 位饱和减法 | | 1 | |
| 两路 16 位有符号减法,结果减半 | | 1 | |
| 四路 8 位有符号减法,结果减半 | | 1 | |
| GE 设置两路 16 位有符号减法 | | 1 | |
| GE 设置四路 8 位有符号减法 | | 1 | |
| 两路 16 位无符号减法,结果减半 | | 1 | |
| 四路 8 位无符号减法,结果减半 | | 1 | |
| GE 设置两路 16 位无符号减法 | | 1 | |
| GE 设置四路 8 位无符号减法 | | 1 | |
| 并行加法和减法 | 具有交换的双路 16 位无符号饱和加法和减法 | | 1 |
| 具有交换的双路 16 位无符号饱和减法和加法 | | 1 | |
| GE 设置带交换的双路 16 位加法和减法 | | 1 | |
| Q 设置双路 16 位加法并使用交换 | | 1 | |
| Q 设置双路 16 位减法与加法(通过交换) | | 1 | |
| 两路 16 位有符号加法和减法,结果减半 | | 1 | |
| 两路 16 位有符号减法与加法,结果减半 | | 1 | |
| GE 设置具有交换功能的双 16 位有符号减法和加法 | | 1 | |
| GE 设置带交换的双 16 位无符号加法和减法 | | 1 | |
| 两路 16 位无符号加法和减法,可实现结果减半和交换 | | 1 | |
| 双 16 位无符号减法与加法,可得到一半的结果和交换 | | 1 | |
| GE 设置双路 16 位无符号减法与加法(通过交换) | | 1 |