stp指令
stp: 入栈指令(str
的变种指令,可以同时操作两个寄存器),如:
stp x29, x30, [sp, #0x10] ; 将 x29, x30 的值存入 sp 偏移 16 个字节的位置
1. ARM64寄存器介绍:
2、STP指令详解(ARMV8手册)
我们先看一下指令格式(64bit),以及指令对于寄存机执行结果的影响
类型1、STP <Xt1>, <Xt2>, [<Xn|SP>], #<imm>
将Xt1和Xt2存入Xn|SP对应的地址内存中,然后,将Xn|SP的地址变更为Xn|SP + imm偏移量的新地址
类型2、STP <Xt1>, <Xt2>, [<Xn|SP>, #<imm>]!
将Xt1和Xt2存入Xn|SP的地址自加imm对应的地址内存中,然后,将Xn|SP的地址变更为Xn|SP + imm的offset偏移量后的新地址
类型3、STP <Xt1>, <Xt2>, [<Xn|SP>{, #<imm>}]
将Xt1和Xt2存入Xn|SP的地址自加imm对应的地址内存中
ldp指令
ldp: 出栈指令(ldr
的变种指令,可以同时操作两个寄存器),如:
ldp x29, x30, [sp, #0x10] ; 将 sp 偏移 16 个字节的位置的值取出来,存入寄存器 x29 和寄存器X30,X29是X30前64bit的值;