针对 POWER ® 系列和 PowerPC® 的 32 位旋转和移位扩展助记符
旋转和轮班指令的扩展助记符位于 POWER ® 系列和 PowerPC® 交叉区域中。
旋转和移位指令的扩展助记符位于 POWER ® 系列和 PowerPC® 交叉区域 (com 组装方式) 中。 一组旋转和移位扩展助记符提供了以下操作:
| 项 | 描述 |
|---|---|
| 抽取 | 选择源寄存器中从位位置 B 开始的 N 位的字段。 此字段在目标寄存器中为右对齐或左对齐。 目标寄存器的所有其他位将清除为 0。 |
| 插入 | 在源寄存器中选择一个左对齐或右对齐的 N 位字段。 此字段是从目标寄存器的位位置 B 开始插入的。 目标寄存器的其他位未更改。 在对双词进行操作时,未提供用于插入左对齐字段的扩展助记符,因为此类插入需要一个以上的指令。 |
| 旋转 | 在不屏蔽的情况下旋转寄存器右侧或左侧 N 位的内容。 |
| Shift | 将寄存器的内容向右或向左移动 N 位。 空位清除为 0 (逻辑移位)。 |
| 清除 | 将寄存器的最左边或最右边的 N 位清除为 0。 |
| 清除左移和左移 | 清除寄存器的最左边的 B 位,然后按 N 位来移动寄存器。 此操作可用于将已知的非负数组下标按元素的宽度进行缩放。 |
下表中显示了旋转和换档扩展助记符。 N 操作数指定要抽取,插入,旋转或移动的位的数量。 因为表达式是在扩展助记符映射到基本助记符时引入的,所以会施加某些限制以防止该表达式的结果导致 SH, MB或 ME 操作数中出现溢出。
为了保持与先前版本的 AIX®的兼容性, n 不限于值 0。 如果 N 为 0 ,那么汇编程序会将 32-N 视为值 0。
| 操作 | 扩展助记符 | 相当于 | 限制 |
|---|---|---|---|
| 抽取并左对齐立即执行 | 特德尔维 RA , RS , n , b | rlwinm RA , RS , b , 0, n-1 | 32 > N > 0 |
| 立即抽取并右对齐 | 外威 RA , RS , n , b | 勒温姆 亚美尼亚共和国,塞尔维亚共和国, b+n , 32-n , 31 | 32 > N > 0 & B+N =< 32 |
| 从左立即插入 | 因斯利维 RA , RS , n , b | 勒温姆 共和国管理局,塞尔维亚共和国, 32-b , b , (b + n)-1 | B+N <=32 & 32>N > 0 & 32 > B >= 0 |
| 从右侧立即插入 | 因斯尔维 RA , RS , n , b | 勒温姆 共和国管理局,塞尔维亚共和国, 32-(b + n) , b , (b + n))-1 | B+N <= 32 & 32>N > 0 |
| 立即向左旋转 | 罗特勒维 RA , RS , n | 勒温姆 RA , RS , n , 0, 31 | 32 > N >= 0 |
| 立即向右旋转 | 罗特维 RA , RS , n | 勒温姆 共和国管理局,塞尔维亚共和国, 32-N, 0, 31 | 32 > N >= 0 |
| 向左旋转 | 罗特卢 亚美尼亚共和国,塞尔维亚共和国, b | 勒温姆 共和国,共和国,经常预算, 0, 31 | 无 |
| 立即左移 | 斯卢维 RA , RS , n | 勒温姆 RA , RS , n , 0, 31-N | 32 > N >= 0 |
| 立即右移 | 斯尔维 RA , RS , n | 勒温姆 共和国管理局,塞尔维亚共和国, 32-n , n, 31 | 32 > N >= 0 |
| 立即清除左 | 克莱尔维 RA , RS , n | 勒温姆 共和国管理局,塞尔维亚共和国, 0, n , 31 | 32 > N >= 0 |
| 立即清除右侧 | 克莱尔维 RA , RS , n | 勒温姆 共和国管理局,塞尔维亚共和国, 0, 0, 31-N | 32 > N >= 0 |
| 清除左移并立即移动 | 克勒斯尔维 RA , RS , b , n | 勒温姆 RA , RS , b-n , 31-N | B-N >= 0 & 32 > N >= 0 & 32 > B>= 0 |
注意:
- 在 POWER ® 系列中,助记符 斯卢维[.] 为 斯利[.]。 mnemonic 斯尔维[.] 为 斯里[.]。
- 所有这些扩展助记符都可以用 final 进行编码。 (句点) ,使 Rc 位在底层指令中被设置。