xtensa架构(指令篇)学习(八)--移位指令概述

目录

一 移位指令概述

二 指令详述

1. EXTUI (Extract Unsigned Immediate Field)

2. SLLI (Shift Left Logical Immediate)

3. SRRLI (Shift Right Logical Immediate)

4. SRAI (Shift Right Arithmetic Immediate)

5. SRC (Shift Right Combined)

6. SRA (Shift Right Arithmetic)

7. SLL (Shift Left Logical)

8. SRL (Shift Right Logical)

9. SSA8B (Set Shift Amount for Big Endian)

10. SSA8L (Set Shift Amount for Little Endian)

11. SSR (Set Shift Right Register)

12. SSL (Set Shift Left Register)

13. SSAI (Set Shift Amount Immediate)

注意事项:


一 移位指令概述

表3-22中的移位指令提供了一组丰富的操作,同时避免了关键的定时路径。参阅第25页的第3.3.2节以获得更多信息。

表3-22. 移位指令

指令格式定义
EXTUIRRR提取无符号字段立即数(右移0...31位,AND掩码为1...16个1)
SLLIRRR左移逻辑立即数1...31位(参阅第744页的立即数编码)。
SRRLIRRR右移逻辑立即数0...15位位置
SRAIRRR右移算术立即数0...31位位置
SRCRRR右移组合(从SAR提取的通道移位)
SRARRR右移算术(从SAR移位数量)
SLLRRR左移逻辑(从SAR移位数量的通道移位)
SRLRRR右移逻辑(从SAR移位数量的通道移位)
SSA8BRRR设置大端字节对齐的移位量寄存器(SAR)
SSA8LRRR设置小端字节对齐的移位量寄存器(SAR)
SSRRRR设置右移逻辑的移位量寄存器(SAR),该指令不同于WSSRtoSAR,只使用寄存器的五位最不重要位
SSLRRR设置左移逻辑的移位量寄存器(SAR)
SSAIRRR设置移位量寄存器(SAR)的立即数

二 指令详述

这些指令是用于处理器中数据操作的一些基本命令,主要用于位移操作。下面我将根据指令的格式、使用实例和注意事项来逐一介绍这些指令。

1. EXTUI (Extract Unsigned Immediate Field)

格式: EXTUI Rd, Rn, #imm, #mask

  • Rd: 目标寄存器
  • Rn: 源寄存器
  • #imm: 右移的位数(0-31)
  • #mask: AND掩码(1-16个连续的1)

实例: EXTUI R0, R1, #4, #0x0F

  • 将R1的内容右移4位后与0x0F进行AND操作,结果存储到R0。

注意事项:

  • 确保掩码的长度与右移后的位宽匹配。
  • 移位后的结果会被截断到指定的位宽。

2. SLLI (Shift Left Logical Immediate)

格式: SLLI Rd, Rn, #imm

  • Rd: 目标寄存器
  • Rn: 源寄存器
  • #imm: 左移位数(1-31)

实例: SLLI R0, R1, #2

  • 将R1的内容左移2位,结果存储到R0。

注意事项:

  • 确保移位不会导致溢出。

3. SRRLI (Shift Right Logical Immediate)

格式: SRRLI Rd, Rn, #imm

  • Rd: 目标寄存器
  • Rn: 源寄存器
  • #imm: 右移位数(0-15)

实例: SRRLI R0, R1, #3

  • 将R1的内容右移3位(逻辑),结果存储到R0。

注意事项:

  • 移位位数不能超过15位。

4. SRAI (Shift Right Arithmetic Immediate)

格式: SRAI Rd, Rn, #imm

  • Rd: 目标寄存器
  • Rn: 源寄存器
  • #imm: 右移位数(0-31)

实例: SRAI R0, R1, #2

  • 将R1的内容右移2位(算术),结果存储到R0。

注意事项:

  • 算术移位会保持符号位。

5. SRC (Shift Right Combined)

格式: SRC Rd, Rn, SAR

  • Rd: 目标寄存器
  • Rn: 源寄存器
  • SAR: 移位量寄存器

实例: SRC R0, R1, SAR

  • 将R1的内容根据SAR寄存器中的值进行右移(逻辑/算术,取决于实现),结果存储到R0。

注意事项:

  • 确保SAR寄存器的值符合预期。

6. SRA (Shift Right Arithmetic)

格式: SRA Rd, Rn, SAR

  • Rd: 目标寄存器
  • Rn: 源寄存器
  • SAR: 移位量寄存器

实例: SRA R0, R1, SAR

  • 将R1的内容根据SAR寄存器中的值进行算术右移,结果存储到R0。

注意事项:

  • 确保SAR寄存器的值不超过最大移位位数。

7. SLL (Shift Left Logical)

格式: SLL Rd, Rn, SAR

  • Rd: 目标寄存器
  • Rn: 源寄存器
  • SAR: 移位量寄存器

实例: SLL R0, R1, SAR

  • 将R1的内容根据SAR寄存器中的值进行逻辑左移,结果存储到R0。

注意事项:

  • 确保SAR寄存器的值不超过最大移位位数。

8. SRL (Shift Right Logical)

格式: SRL Rd, Rn, SAR

  • Rd: 目标寄存器
  • Rn: 源寄存器
  • SAR: 移位量寄存器

实例: SRL R0, R1, SAR

  • 将R1的内容根据SAR寄存器中的值进行逻辑右移,结果存储到R0。

注意事项:

  • 确保SAR寄存器的值不超过最大移位位数。

9. SSA8B (Set Shift Amount for Big Endian)

格式: SSA8B SAR, Rn

  • SAR: 移位量寄存器
  • Rn: 源寄存器

实例: SSA8B SAR, R1

  • 将R1的内容的大端字节对齐值写入SAR寄存器。

注意事项:

  • 适用于大端模式。

10. SSA8L (Set Shift Amount for Little Endian)

格式: SSA8L SAR, Rn

  • SAR: 移位量寄存器
  • Rn: 源寄存器

实例: SSA8L SAR, R1

  • 将R1的内容的小端字节对齐值写入SAR寄存器。

注意事项:

  • 适用于小端模式。

11. SSR (Set Shift Right Register)

格式: SSR SAR, Rn

  • SAR: 移位量寄存器
  • Rn: 源寄存器

实例: SSR SAR, R1

  • 将R1的低五位写入SAR寄存器作为移位量。

注意事项:

  • 只使用源寄存器的最低五位。

12. SSL (Set Shift Left Register)

格式: SSL SAR, Rn

  • SAR: 移位量寄存器
  • Rn: 源寄存器

实例: SSL SAR, R1

  • 将R1的内容写入SAR寄存器作为移位量。

注意事项:

  • 通常用于设置左移的移位量。

13. SSAI (Set Shift Amount Immediate)

格式: SSAI SAR, #imm

  • SAR: 移位量寄存器
  • #imm: 立即数移位量

实例: SSAI SAR, #4

  • 将4写入SAR寄存器作为移位量。

注意事项:

  • 确保立即数符合指令要求的范围。
  • 28
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值