共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 跳转至页
回复
我要赚赏金打赏帖 |
|
|---|---|
| 基于ArduinoUNO开发板的AT24C02读写测试被打赏¥16元 | |
| TCS3472S传感器及其色彩检测被打赏¥19元 | |
| 【S32DS】S32K3 RTD7.0.1 HSE 组件配置报错问题解决被打赏¥27元 | |
| 【S32K3XX】MCME 启动 CORE1被打赏¥23元 | |
| AG32VH407下温度大气压传感器及其检测被打赏¥20元 | |
| AG32VH407下光照强度传感器BH1750及其检测被打赏¥22元 | |
| AT32VH407下使用温湿度传感器DHT22进行检测被打赏¥20元 | |
| DIY一个婴儿澡盆温度计被打赏¥34元 | |
| 【FreeRtos】FreeRtos+MPU region 配置规则被打赏¥23元 | |
| 【分享开发笔记,赚取电动螺丝刀】三分钟快速上手驱动墨水屏(ArduinoIDE)被打赏¥28元 | |
我要赚赏金
