共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 跳转至页
回复
打赏帖 | |
---|---|
汽车电子中巡航控制系统的使用被打赏10分 | |
分享汽车电子中巡航控制系统知识被打赏10分 | |
分享安全气囊系统的检修注意事项被打赏10分 | |
分享电子控制安全气囊计算机知识点被打赏10分 | |
【分享开发笔记,赚取电动螺丝刀】【OZONE】使用方法总结被打赏20分 | |
【分享开发笔记,赚取电动螺丝刀】【S32K314】芯片启动流程分析被打赏40分 | |
【分享开发笔记,赚取电动螺丝刀】【S32K146】S32DS RTD 驱动环境搭建被打赏12分 | |
【分享开发笔记,赚取电动螺丝刀】【IAR】libc标注库time相关库函数使用被打赏23分 | |
LP‑MSPM0L1306开发版试用结果被打赏10分 | |
【分享开发笔记,赚取电动螺丝刀】【LP-MSPM0L1306】适配 RT-Thread Nano被打赏23分 |