跳转到内容

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 汇编器· 伪指令
指令扩展 浮点数 · 高级语言


华夏公益教科书