天天看點

ARM64基礎5:A64的存儲和加載指令

ldr和str指令

ARMv8也是基于指令加載和存儲的架構,即不能直接操作記憶體;

LDR <reg_dst>,<addr>  //把存儲器位址的資料加載到目的寄存器中;
STC <reg_src>,<addr> //把原寄存器的值,存儲到記憶體中;
           

ldr指令尋址1:位址偏移模式

.global ldr_test //申明全局函數
ldr_test:
	// 1. ldr位址偏移模式
	mov x1, 0x80000
	mov x3, 16

	/* 讀取0x80000位址的值, 到x0寄存器*/
	ldr x0, [x1]

	/* 讀取0x80000+8位址的值*/
	ldr x2, [x1, #8]

	/* 讀取x1+x3位址=0x80000+16的值*/
	ldr x4, [x1, x3]

	/* 讀取(x1+ x3<<3) =0x80080位址的值*/
	ldr x5, [x1, x3, lsl #3]

	ret
           

用qemu+Eclipse單步調試,檢視寄存器值如下

ARM64基礎5:A64的存儲和加載指令

繼續閱讀