srea (Shift Right Extended Algebraic) 指令
用途
将通用寄存器的内容向左旋转指定的位数,将旋转后的数据的副本放在 MQ 寄存器中,将旋转后的字和来自通用寄存器的 32 个符号位的字合并在掩码的控制下,并将结果放入另一个通用寄存器中。
注: 斯雷亚 指令仅在 POWER ® 系列体系结构中受支持。
语法
| 位数 | VALUE |
|---|---|
| 0 - 5 | 31 |
| 6 - 10 | RS |
| 11 - 15 | RA |
| 16 - 20 | 经常预算 |
| 21 - 30 | 921 |
| 31 | rc |
描述
斯雷亚 指令将源通用寄存器 (GPR) 的内容 RS 向左旋转 32 减 N 位,其中 N 是 GPR 的第 27-31 位中指定的移位量 经常预算,将旋转后的字存储在 MQ 寄存器中,并在生成的掩码的控制下合并来自 GPR 的旋转后的字和 32 个符号位的字 RS 。 通过取通用寄存器的符号位,重复 32 次,生成一个完整的单词,生成一个 32 个符号位的单词。 此字可以是 0x0000 0000 或 0xFFFF FFFF ,具体取决于通用寄存器的值。 掩码由 N 个零后跟 32 个减 N 个零组成。 合并的单词存储在 GPR RA中。
This instruction then ANDs the rotated data with the complement of the generated mask, ORs together the 32-bit result, and ANDs the bit result with bit 0 of GPR RS to produce the Carry bit (CA).
斯雷亚 指令具有两种语法形式。 每个语法表单对条件寄存器字段 0 有不同的影响。
| 项 | 描述 | |||
|---|---|---|---|---|
| 语法表单 | 溢出 异常 (OE) | 固定点 异常寄存器 | 记录 位 (Rc) | 条件 注册字段 0 |
| 斯雷亚 | 无 | CA | 0 | 无 |
| 斯雷亚 | 无 | CA | 1 | LT ,GT, EQ , SO |
斯雷亚 指令的两种语法格式始终会影响定点异常寄存器中的 Carry 位 (CA)。 如果语法格式将记录 (Rc) 位设置为 1 , 1 指令会影响 "条件寄存器字段 0" 中的 "小于 (LT) 0" , "大于 (GT) 0" , "等于 (EQ) 0" 和 "汇总溢出 (SO)" 位。
参数
| 项 | 描述 |
|---|---|
| RA | 指定用于存储操作结果的目标通用寄存器。 |
| RS | 指定操作的源通用寄存器。 |
| 经常预算 | 指定操作的源通用寄存器。 |
示例
- 以下代码将 GPR 4 的内容向左旋转 28 位,在生成的掩码的控制下将结果与 32 个符号位合并,将旋转后的单词放置在 MQ Register 和 GPR 6 中的结果中,并在 Fixed-Point Exception Register 中设置 Carry 位以反映操作的结果:
# Assume GPR 4 contains 0x9000 3000. # Assume GPR 7 contains 0x0000 0004. srea 6,4,7 # GPR 6 now contains 0xF900 0300. # The MQ Register now contains 0x0900 0300. - 以下代码将 GPR 4 的内容向左旋转 28 位,在生成的掩码的控制下将结果与 32 个符号位合并,将旋转后的单词放入 MQ Register 和 GPR 6 中的结果 6 ,并在 Fixed-Point Exception Register 和 Condition Register Field 0 中设置 Carry 位以反映操作的结果:
# Assume GPR 4 contains 0xB004 3000. # Assume GPR 7 contains 0x0000 0004. srea. 6,4,7 # GPR 6 now contains 0xFB00 4300. # The MQ Register now contains 0x0B00 4300. # Condition Register Field 0 now contains 0x8.