一 XTUI 指令
EXTUI
是 Xtensa 架构中的一个指令,用于从内存中提取指定数量的无符号位,并将它们扩展为 32 位无符号整数。这个指令主要用于处理位字段或从内存中读取固定宽度的数据。
指令格式
asm
深色版本
1EXTUI at, bt, width, offset
at
: 目标寄存器,用于存放提取后的位字段。bt
: 基址寄存器,用于提供内存地址。width
: 要提取的位字段的宽度(位数)。offset
: 从内存地址开始提取位字段的起始位位置。
指令行为
EXTUI
指令从由 bt
寄存器中的值表示的内存地址处读取数据,并从中提取一个指定宽度的位字段。位字段的起始位置由 offset
参数指定,宽度由 width
参数指定。提取后的位字段被扩展为 32 位无符号整数,并存储到 at
寄存器中。
示例
假设 a1
寄存器中的值为 0x500093b0,表示一个内存地址,而内存中的值为 0x12345678。如果我们要从该地址处提取一个 8 位的无符号整数,起始位位置为第 16 位(即从高位开始的第 16 位),则以下指令可以实现这一操作:
asm
深色版本
1EXTUI a2, a1, 8, 16
- 解释: 从地址 0x500093b0 处读取数据,并从中提取一个宽度为 8 位的位字段,起始位位置为第 16 位。提取的位字段为
0x56
,它将被扩展为 32 位无符号整数,并存储到寄存器a2
中。