跳轉到內容

360 彙編/360 指令/LGFR

來自華夏公益教科書,開放的書籍,開放的世界

LGFR - 載入暫存器並符號擴充套件 - RRE 指令 - 操作碼 B914

LGFR 2,6 將暫存器 6 的內容複製到暫存器 2 中,從 32 位符號擴充套件到 64 位。

具體的語法是

LGFR 目標暫存器, 源暫存器.

操作碼

[編輯 | 編輯原始碼]

模板:360 操作碼 RRE

示例用法

[編輯 | 編輯原始碼]

LGFR 指令用於將第二個暫存器引數(源暫存器)的內容複製到第一個暫存器引數(目標暫存器)中,用源暫存器的內容替換目標暫存器的內容,從 32 位符號擴充套件到 64 位。以下是如何從組合語言列表中以各種形式組裝指令的示例

B914 0026        LGFR   2,6
B914 0092        LGFR   9,2
B914 00FA        LGFR   15,10

典型用法

[編輯 | 編輯原始碼]

當需要將整數的值從 32 位擴充套件為 64 位的符號擴充套件時,源值位於通用暫存器中。

可用性

[編輯 | 編輯原始碼]

LGFR 指令是 64 位的,並且僅在 390 系列和 z/System 上可用。它將在 360 和 370 系列上導致操作碼異常。

LGFR 指令將第二個引數指定的暫存器的 32 位值複製到第一個引數指定的暫存器中。

目標 64 位暫存器的位 0-31(高半部分)用源值的符號位(最高有效位)的副本填充。

暫存器 0 對任一暫存器均有效,與其他一些指令不同,不會被忽略。

條件碼

[編輯 | 編輯原始碼]

條件碼不會改變。

異常和故障

[編輯 | 編輯原始碼]
  • 360 和 370 系列:操作碼異常
  • 390 系列和 zSystem:無。
[編輯原始碼]

最密切相關的指令是邏輯加暫存器 (ALR),而不是載入地址 (LA),正如有時假設的那樣。雖然 L 從記憶體中載入值,但 LA 不會訪問記憶體;它只計算一個數字,這個數字可以是地址,但不必是地址。

32 位指令

[編輯原始碼]
  • 要從記憶體中載入 8 位位元組(字元)值,請參閱 IC.
  • 要根據掩碼將一個或多個 8 位位元組值載入到暫存器中,請參閱 ICM
  • 要從記憶體中載入 16 位半字值,請參閱 LH.
  • 要將 12 位無符號值載入到暫存器中,或將最多 4095 加到一個或兩個 32 位暫存器中的值,請參閱 LA.
  • 要將 32 位字值從一個暫存器複製到另一個暫存器,請參閱 LR.
  • 要從記憶體中載入 32 位字值,請參閱 L.
  • 要將 8 位位元組(字元)值儲存到記憶體中,請參閱 STC.
  • 要根據掩碼將一個或多個 8 位位元組值儲存到記憶體中,請參閱 STCM
  • 要將 16 位半字值儲存到記憶體中,請參閱 STH.
  • 要將 32 位字值儲存到記憶體中,請參閱 ST.

64 位指令

[編輯原始碼]
  • 要將 20 位有符號值從擴充套件的(20 位)有符號記憶體偏移載入到 32 位或 64 位暫存器中,請參閱 LAY.
  • 要將 32 位值從擴充套件的(20 位)有符號記憶體偏移載入到 64 位暫存器中,請參閱 LGF.
  • 要將 64 位值從一個 64 位暫存器複製到另一個 64 位暫存器中,請參閱 LGR.
  • 要將 64 位值從記憶體載入到 64 位暫存器中,請參閱 LG.
  • 要將 32 位值從暫存器儲存到擴充套件的(20 位)有符號記憶體偏移中,請參閱 STY.
  • 要將 64 位值從 64 位暫存器儲存到記憶體中的地址,請參閱 STG.
上一條指令
LPXR
360 彙編指令
{{{name}}}
下一條指令
LRA
上一條操作碼
17
下一條操作碼
19
360 組合語言
360 系列 簡介 · 基本常見問題 · 360 系列 · 360 架構
360 指令集 360 指令 · 分支指令 · 資料傳輸指令 · 控制流指令 · 算術指令 · 邏輯指令 · 移位和旋轉指令 · 特權指令 · 其他指令
語法和彙編器 360 彙編器· 偽指令
指令擴充套件 浮點數 · 高階語言


華夏公益教科書