0x232 寻址

既然是和内存相关的,那就是两种,一种存,一种取。一般来说
L打头的基本都是取值指令,如 LDR LDP;
S打头的基本都是存值指令,如 STR STP;

例:

ldr x0, [x1]; // 从`x1`指向的地址里面取出一个 64 位大小的数存入 `x0`
ldp x1, x2, [x10, #0x10]; // 从 x10 + 0x10 指向的地址里面取出 2个 64位的数,分别存入x1, x2
str x5, [sp, #24]; // 把x5的值(64位数值)存到 sp+24 指向的内存地址上
stp x29, x30, [sp, #-16]!; // 把 x29, x30的值存到 sp-16的地址上,并且把 sp-=16. 
ldp x29, x30, [sp], #16;  // 从sp地址取出 16 byte数据,分别存入x29, x30. 然后 sp+=16;

其中寻址的格式由分为下面这3种类型:

[x10, #0x10]      // signed offset。 意思是从 x10 + 0x10的地址取值
[sp, #-16]!       // pre-index。  意思是从 sp-16地址取值,取值完后在把 sp-16  writeback 回 sp
[sp], #16         // post-index。 意思是从 sp 地址取值,取值完后在把 sp+16 writeback 回 sp

你可能感兴趣的:(0x232 寻址)