目录
一 移位指令
移位指令表(Table 3–22)列出了以下几种不同的移位操作:
- EXTUI:提取无符号字段立即数。它向右移动0到31位,并且与一个包含16个1的掩码进行按位与运算。
- SLLI:左逻辑移位立即数,可以移动1到31位。
- SRRI:右逻辑移位立即数,可以移动0到15位。如果需要移位超过16位,则应使用EXTUI指令。
- SRAI:右算术移位立即数,可以移动0到31位。
- SRC:右移位组合(将两个源寄存器连接起来,然后根据SAR中的值进行移位)。
- SRA:右算术移位(移位量来自SAR)。
- SLL:左逻辑移位(funnel shift AR[s]和0,移位量来自SAR)。
- SRL:右逻辑移位(funnel shift 0和AR[s],移位量来自SAR)。
- SSA8B:为大端字节对齐设置移位量寄存器(SAR)。此时t字段必须为零。
- SSA8L:为小端字节对齐设置移位量寄存器(SAR)。
- SSR:为右逻辑移位设置移位量寄存器(SAR)。此指令与WSR到SAR的不同之处在于,它只使用寄存器的最后五位最不重要的比特。
- SSL:为左逻辑移位设置移位量寄存器(SAR)。
- SSAI:为移位量寄存器(SAR)设置立即数。
这些指令提供了丰富的操作集合,同时避免了关键的时间路径。更多信息可以在第25页的第3.3.2节找到。
二 指令详解
-
EXTUI (提取无符号字段立即数)
- 格式:
EXTUI Rd, Rs, #<imm>
- 示例:
EXTUI R0, R1, #16
将R1的高16位提取出来放到R0中。 - 注意事项:EXTUI用于从Rs的指定位置提取出一个无符号字段,并将其放入Rd中。
- 格式:
-
SLLI (左逻辑移位立即数)
- 格式:
SLLI Rd, Rs, #<imm>
- 示例:
SLLI R2, R3, #4
将R3的内容左移4位后存储到R2中。 - 注意事项:SLLI用于将Rs的内容左移imm位,并将结果保存到Rd中。
- 格式:
-
SRRI (右逻辑移位立即数)
- 格式:
SRRI Rd, Rs, #<imm>
- 示例:
SRRI R4, R5, #2
将R5的内容右移2位后存储到R4中。 - 注意事项:SRRI用于将Rs的内容右移imm位,并将结果保存到Rd中。注意,imm不能大于16。
- 格式:
-
SRAI (右算术移位立即数)
- 格式:
SRAI Rd, Rs, #<imm>
- 示例:
SRAI R6, R7, #3
将R7的内容右算术移位3位后存储到R6中。 - 注意事项:SRAI用于将Rs的内容右算术移位imm位,并将结果保存到Rd中。
- 格式:
-
SRC (右移位组合)
- 格式:
SRC Rd, Rs1, Rs2
- 示例:
SRC R8, R9, R10
将Rs1和Rs2的内容连接起来,然后右移s1的内容决定的数量位,结果保存到Rd中。 - 注意事项:SRC用于将Rs1和Rs2的内容连接起来,然后根据SAR中的值进行右移。
- 格式:
-
SRA (右算术移位)
- 格式:
SRA Rd, Rs
- 示例:
SRA R11, R12
将R12的内容右算术移位s1的内容决定的数量位,结果保存到Rd中。 - 注意事项:SRA用于将Rs的内容右算术移位s1的内容决定的数量位,并将结果保存到Rd中。
- 格式:
-
SLL (左逻辑移位)
- 格式:
SLL Rd, Rs
- 示例:
SLL R13, R14
将R14的内容左移s1的内容决定的数量位,结果保存到Rd中。 - 注意事项:SLL用于将Rs的内容左移s1的内容决定的数量位,并将结果保存到Rd中。
- 格式:
-
SRL (右逻辑移位)
- 格式:
SRL Rd, Rs
- 示例:
SRL R15, R16
将R16的内容右移s1的内容决定的数量位,结果保存到Rd中。 - 注意事项:SRL用于将Rs的内容右移s1的内容决定的数量位,并将结果保存到Rd中。
- 格式:
-
SSA8B (为大端字节对齐设置移位量寄存器)
- 格式:
SSA8B t, s
- 示例:
SSA8B 0, 1
设置SAR寄存器为大端字节对齐模式,此时t字段必须为零。 - 注意事项:SSA8B用于设置SAR寄存器以实现大端字节对齐。
- 格式:
-
SSA8L (为小端字节对齐设置移位量寄存器)
- 格式:
SSA8L t, s
- 示例:
SSA8L 0, 1
设置SAR寄存器为小端字节对齐模式,此时t字段必须为零。 - 注意事项:SSA8L用于设置SAR寄存器以实现小端字节对齐。
- 格式:
-
SSR (为右逻辑移位设置移位量寄存器)
- 格式:
SSR s
- 示例:
SSR 1
使用s1的内容设置SAR寄存器,用于右逻辑移位。 - 注意事项:SSR用于设置SAR寄存器以实现右逻辑移位。
- 格式:
-
SSL (为左逻辑移位设置移位量寄存器)
- 格式:
SSL s
- 示例:
SSL 1
使用s1的内容设置SAR寄存器,用于左逻辑移位。 - 注意事项:SSL用于设置SAR寄存器以实现左逻辑移位。
- 格式:
-
SSAI (为移位量寄存器设置立即数)
- 格式:
SSAI imm
- 示例:
SSAI 16
将立即数16写入到SAR寄存器。 - 注意事项:SSAI用于将立即数写入到SAR寄存器。
- 格式:
以上是每个指令的基本格式、示例和注意事项。请注意,在实际编程过程中,您可能还需要考虑其他因素,如数据类型、内存布局等。