共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 跳转至页
回复
打赏帖 | |
---|---|
【Zephyr】使用Zephyr外设初始化过程解析被打赏30分 | |
【S32K146】S32DS watchdog 配置使用被打赏20分 | |
【Zephyr】使用 IAR 调试 Zephyr 镜像被打赏20分 | |
赚取电动螺丝刀+电源电路理论知识分享1被打赏5分 | |
我想要一部加热台+分享常见运算放大器电路的应用被打赏5分 | |
【Zephyr】MCXN947 Zephyr 开发入门适配shell被打赏20分 | |
我想要一部加热台+常见的MOS管驱动电路被打赏5分 | |
【我要开发板】6.联合MATLAB记录数据被打赏50分 | |
【换取手持数字示波器】MicrochipMPLABHarmony框架下串口调试printf输出记录被打赏29分 | |
【瑞萨RA2E1开发板】:使用ADC功能实现位移传感器采集方案被打赏20分 |