lscbx (装入字符串并比较已建立索引的字节) 指令
用途
将存储器中的连续字节装入到连续寄存器中。
注: lscbx 指令仅在 POWER ® 系列体系结构中受支持。
语法
| 位数 | VALUE |
|---|---|
| 0 - 5 | 31 |
| 6 - 10 | RT |
| 11 - 15 | 亚美尼亚共和国 |
| 16 - 20 | 经常预算 |
| 21 - 30 | 277 |
| 31 | rc |
描述
lscbx 指令将由有效地址 (EA) 寻址的 N 个连续字节装入到通用寄存器 (GPR) RT中,从寄存器 RT中最左边的字节开始,通过 RT + NR -1 ,并在需要时通过 GPR 0 回绕,直到找到与 XER16-23 或 N 字节匹配的字节为止。 如果找到字节匹配,那么还会装入该字节。
如果 GPR RA 不是 0 ,那么 EA 是 GPR RA 的内容与存储在 GPR RB中的地址的总和。 如果 RA 为 0 ,那么 EA 是 GPR RB的内容。
使用 lscbx 指令时,请考虑以下事项:
- XER (16-23) 包含要比较的字节。
- XER (25-31) 包含在调用指令之前的字节计数以及在指令完成之后装入的字节数。
- 如果 XER (25-31) = 0 ,那么不会改变 GPR RT 。
- N 是 XER (25-31) ,这是要装入的字节数。
- NR 是上限 (N/4) ,这是包含连续字节所需的寄存器总数。
在寄存器中始终从左到右装入字节。 在装入 N 字节之前找到匹配项的情况下,未从该寄存器装入最右边的字节的内容以及所有后续寄存器的内容 (包括寄存器 RT + NR -1) 都未定义。 另外,在找到匹配的字节之后,不会对存储器进行任何引用。 在找不到匹配项的情况下,未从寄存器 RT + NR -1 装入的最右边字节的内容未定义。
如果 GPR RA 不是 0 ,并且 GPRs RA 和 RB 在要装入的范围内,那么不会写入 GPRs RA 和 RB 。 将废弃将写入到这些数据中的数据,并且该操作将正常继续执行。 如果 XER (16-23) 中的字节与已装入到 GPR RA 或 RB中但由于可重新启动而被废弃的任何 4 字节进行比较,那么未定义 "条件寄存器" 中的 EQ 位以及 XER (25-31) 中返回的计数。 乘商 (MQ) 寄存器不受此操作影响。
lscbx 指令有两种语法形式。 每种语法形式对条件寄存器字段 0 都有不同的影响。
| 项 | 描述 | 描述 | 描述 | 描述 |
|---|---|---|---|---|
| 语法 表单 | 溢出 异常 (OE) | 固定点 异常寄存器 | 记录 位 (RC) | 条件 注册字段 0 |
| lscbx | 无 | XER (25-31) = 已装入的字节数 | 0 | 无 |
| lscbx。 | 无 | XER (25-31) = 已装入的字节数 | 1 | LT ,GT, EQ 和 SO |
lscbx 指令的两种语法形式将装入定点异常寄存器 (XER) 位的字节数放置在 25-31。 如果语法格式将记录 (Rc) 位设置为 1 ,那么指令会影响条件寄存器字段 0 中的 "小于 (LT) 0" , "大于 (GT) 0" , "等于 (EQ) 0" 和 "摘要溢出 (SO)" 位。 如果 rc = 1 且 XER (25-31) = 0 ,那么未定义条件寄存器字段 0。 If Rc = 1 and XER(25-31) <> 0, then Condition Register Field 0 is set as follows:
LT, GT, EQ, SO = b'00'||match||XER(SO)
注: 此指令可由数据存储器中断中断。 当发生此类中断时,将从头开始重新启动指令。
参数
| 项 | 描述 |
|---|---|
| RT | 指定起始目标通用寄存器。 |
| RA | 指定用于 EA 计算的源通用寄存器。 |
| 经常预算 | 指定用于 EA 计算的源通用寄存器。 |
示例
- 以下代码将连续字节装入 GPR$tag1 , 7 和 8:
.csect data[rw] string: "Hello, world" # Assume XER16-23 = 'a. # Assume XER25-31 = 9. # Assume GPR 5 contains the address of csect data[rw]. # Assume GPR 4 contains the displacement of string relative # to csect data[rw]. .csect text[pr] lscbx 6,5,4 # GPR 6 now contains 0x4865 6c6c. # GPR 7 now contains 0x6f2c 2077. # GPR 8 now contains 0x6fXX XXXX. - 以下代码将连续字节装入 GPR$tag1 , 7 和 8:
# Assume XER16-23 = 'e. # Assume XER25-31 = 9. # Assume GPR 5 contains the address of csect data[rw]. # Assume GPR 4 contains the displacement of string relative # to csect data[rw]. .csect text[pr] lscbx. 6,5,4 # GPR 6 now contains 0x4865 XXXX. # GPR 7 now contains 0xXXXX XXXX. # GPR 8 now contains 0xXXXX XXXX. # XER25-31 = 2. # CRF 0 now contains 0x2.