【ARM 常见汇编指令学习 2 -- 存储指令 STP 与 LDP】

文章目录

    • STP 存储指令
    • LDP 加载指令

上篇文章:ARM 常见汇编指令学习 1 – 跳转指令 BL 与 BLR 区别
下篇文章:ARM 常见汇编指令学习 3 – ARM64 无符号位域提取指令 UBFX

STP 存储指令

在 ARMv8 架构中,STP指令用于将两个通用寄存器的值存储到内存中。STP指令的语法如下:

STP <Wt1>, <Wt2>, [<Xn|SP>{, #<imm>}]

STP <Xt1>, <Xt2>, [<Xn|SP>{, #<imm>}]

其中:

  • 表示两个要存储的32位通用寄存器,
  • 表示两个要存储的64位通用寄存器。
  • []表示存储的目标内存地址,是一个可选的偏移量。

STP指令将 的值存储到目标内存地址中,并且递增目标内存地址以便下一次存储。存储的数据可以是32位或64位,具体取决于使用的寄存器。

例如,下面的示例演示了如何使用STP指令将两个通用寄存器的值存储到内存中:

STP X0, X1, [X2]      ; 将X0和X1的值存储到[X2]地址中
STP W3, W4, [SP, #16] ; 将W3和W4的值存储到[SP+16]地址中

请注意,STP指令在ARMv8架构中引入了64位寄存器,因此可以存储更大的数据量。

LDP 加载指令

LDP指令用于从内存中加载两个通用寄存器的值。LDP指令的语法如下:

LDP <Wt1>, <Wt2>, [<Xn|SP>{, #<imm>}]

LDP <Xt1>, <Xt2>, [<Xn|SP>{, #<imm>}]

其中:

  • 表示要加载的两个32位通用寄存器,
  • 表示要加载的两个64位通用寄存器。
  • []表示要加载的内存地址,是一个可选的偏移量。

LDP指令从目标内存地址中加载数据,并将其存储到和或和寄存器中。加载的数据可以是32位或64位,具体取决于使用的寄存器。
以下示例演示了如何使用LDP指令从内存中加载两个通用寄存器的值:

LDP X0, X1, [X2]      ;[X2]地址中加载值到X0和X1寄存器
LDP W3, W4, [SP, #16] ;[SP+16]地址中加载值到W3和W4寄存器

请注意,LDP指令在ARMv8架构中引入了64位寄存器,因此可以加载更大的数据量。

上篇文章:ARM 常见汇编指令学习 1 – 跳转指令 BL 与 BLR 区别
下篇文章:ARM 常见汇编指令学习 3 – ARM64 无符号位域提取指令 UBFX

你可能感兴趣的:(#,ARM64,常见汇编指令学习,STP,LDP,ARM,STP,ARM,LDP,ARM,BL,ARM,BLR,BLR与BL区别)