共1条
1/1 1 跳转至页
arm中的饱和指令

ARMv6 及更高版本中推出了饱和指令:SSAT 和 USAT, SSAT16 和 USAT16,有符号饱和到任何位位置和无符号饱和到任何位位置,可选择在饱和前进行移位。
SSAT 可将有符号值饱和到有符号范围内。
USAT 可将有符号值饱和到无符号范围内。
语法
op{cond} Rd, #sat, Rm{, shift}
其中:
op
是 SSAT 或 USAT。
cond
是一个可选的条件代码(请参阅条件执行)。
Rd
是目标寄存器。 Rd 不能为 r15。
sat
指定要饱和到的位位置,SSAT 的范围在 1 到 32 之间,USAT 的范围在 0 到 31 之间。
Rm
是包含操作数的寄存器。 Rm 不能为 r15。
shift
是一个可选的移位。 必须为下列项之一:
ASR #n
其中,n 的范围为 1-32 (ARM) 或 1-31 (Thumb-2)
LSL #n
其中,n 的范围为 0-31。
操作
SSAT 指令会先进行指定的移位,然后将结果饱和到有符号范围 –2sat–1 ≤ x ≤ 2sat–1 –1。
USAT 指令会先进行指定的移位,然后将结果饱和到无符号范围 0 ≤ x ≤ 2sat – 1。
条件标记
如果发生饱和,则这些指令设置 Q 标记。 若要读取 Q 标记的状态,请使用 MRS 指令(请参阅MRS)。
体系结构
这些 ARM 指令可用于 ARMv6 及更高版本。
这些 32 位 Thumb 指令可用于 ARMv6T2 及更高版本。
这些指令均无 16 位 Thumb 版本。
示例
SSAT r7, #16, r7, LSL #4 USATNE r0, #7, r5
SSAT16 和 USAT16
并行半字饱和指令。
SSAT16 可将有符号值饱和到有符号范围内。
USAT16 可将有符号值饱和到无符号范围内。
语法
op{cond} Rd, #sat, Rn
其中:
op
是下列项之一:
SSAT16
有符号饱和。
USAT16
无符号饱和。
cond
是一个可选的条件代码(请参阅条件执行)。
Rd
是目标寄存器。
sat
指定要饱和到的位位置,SSAT16 的范围在 1 到 16 之间,USAT16 的范围在 0 到 15 之间。
Rn
是存放操作数的寄存器。
不要将 r15 用作 Rd 或 Rn。
操作
有符号和无符号半字饱和任何位位置。
SSAT16 指令可将每个有符号半字饱和到有符号范围 –2sat–1 ≤ x ≤ 2sat–1 –1 内。
USAT16 指令可将每个有符号半字饱和到无符号范围 0 ≤ x ≤ 2sat –1 内。
条件标记
只要有半字发生饱和,这些指令就会设置 Q 标记。 若要读取 Q 标记的状态,请使用 MRS 指令(请参阅MRS)。
体系结构
这些 ARM 指令可用于 ARMv6 及更高版本。
这些 32 位 Thumb 指令可用于 ARMv6T2 及更高版本(ARMv7-M 架构除外)。
这些指令均无 16 位 Thumb 版本。
示例
SSAT16 r7, #12, r7 USAT16 r0, #7, r5
不正确的示例
SSAT16 r1, #16, r2, LSL #4 ; shifts not permitted with halfword saturations
关键词: 中的 饱和 指令 符号
共1条
1/1 1 跳转至页
回复
打赏帖 | |
---|---|
【STM32F769】AI之与本地deepseek对接被打赏50分 | |
Buck电路工作在CCM模式下电感电流的计算公式是什么?被打赏5分 | |
buck电路工作原理被打赏5分 | |
基于MSPM0L1306的MODBUS-RTU协议通讯实验被打赏100分 | |
我想要一部加热台+多合一调试工具被打赏18分 | |
每周了解几个硬件知识+485硬件知识分享被打赏10分 | |
【换取手持数字示波器】树莓派PICO调试器官方固件本地化部署实践被打赏24分 | |
【换取手持数字示波器】分享一个KEIL无法识别CMSIS-DAP调试器的解决办法被打赏20分 | |
【换取手持数字示波器】分享一个自制的ArduinoNano扩展板底板被打赏23分 | |
【换取手持示波器】树莓派PICOW网页烟花被打赏18分 |