stdcx。 (存储双字条件索引) 指令

用途

根据现有预留,有条件地将通用寄存器的内容存储到存储位置。

语法

位数 VALUE
0 - 5 31
6 - 10 S
11 -- 15 A
16 - 20 B
21 - 30 214
31 1
POWER ® 系列
stdcx。 RS RA RB

描述

如果存在预留,那么为 stdcx 指定的内存地址。 指令与建立保留的装入和保留指令指定的指令相同, RS 的内容存储在由有效地址 (EA) 寻址的内存中的双字中; 清除保留。

如果 GPR RA 不是 0 ,那么 EA 是 GPR RAD (位移大小) 的内容总和, 16 位,带符号的两个补码整数,全字对齐,符号扩展为 64 位。 如果 GPR RA 为 0 ,那么 EA 为 D

如果存在预留,但存在 stdcx 指定的内存地址。 指令与建立保留的装入和保留指令指定的指令不同,将清除保留,并且未定义 RS 的内容是否存储到 EA 寻址的内存中的双字中。

如果不存在保留,那么该指令将在不改变内存的情况下完成。

如果成功执行存储,那么条件寄存器字段 0 的位 0-2 将设置为 0b001,否则,它们将设置为 0b000。 XER 的 SO 位将复制到条件寄存器字段 0 的位 4。

EA 必须是 8 的倍数。 如果未执行此操作,那么将调用系统对齐异常处理程序或未定义结果。

请注意,当正确使用时,装入和保留以及存储条件指令可以为内存的单个对齐字 (装入字和保留和存储字条件) 或双字 (装入双字和保留和存储双字条件) 提供原子更新函数。

通常,正确的使用要求 load word 和 reserve 与 store word 条件配对, load double word 和 reserve 与 store double word 条件配对,具有对的两个指令指定的相同内存地址。 唯一的例外是,未配对的存储字条件或存储对任何 (scratch) EA 的双字条件指令可用于清除处理器持有的任何预留。

如果发生以下任何事件,那么将清除预留:

  • 保留保留的处理器执行另一个装入和保留指令; 这将清除第一个保留并建立新的保留。
  • 保存预留的处理器对任何地址执行存储条件指令。
  • 另一个处理器对与预留关联的地址执行任何存储指令
  • 除保留的处理器以外的任何机制都将存储到与保留关联的地址。

参数

描述
RS 指定存储数据的源通用寄存器。
RA 指定用于 EA 计算的源通用寄存器。
经常预算 指定用于 EA 计算的源通用寄存器。

实现

仅为 64 位实现定义此指令。 在 32 位实现上使用它将导致调用系统非法指令错误处理程序。