ARM 教材 - cortex-m - 3 - load/store instruction

Hackpad


  • LOAD
e.g. LDR R5, [R1]
R1 : 位置, 會從此位置 載入 32-bit 值, 存入 R5

e.g. LDR R6, [R1, 4]

  • STORE
e.g. STR R3, [R1]

LDR / STR 資訊流相反, LDR : 後面到前面, STR : 前面到後面

Literal Addressing
e.g. .equ JENNY, 8675309
LDR R0, =JENNY 
他還是會載入值 8675309, 但是是在memory (假設位置是這邊 PC 值往後加  24)
造一個 ".word 8675309"
整行變為 LDR R0, [PC,24]

  • pre-indexed addressing 是指地址經過運算不寫回基址暫存器
  • post-indexed addressing 回寫到基址暫存器
  • 比如 , 兩個所用的實際位置值都是 r1+0x10
  • pre-indexed addressing:
  • STR r0, [r1, #0x10]       ; 不回寫入r1,在此句之后,r1=0
  • post-indexed addressing:
  • STR r0, [r1], #0x10       ; 0x10 回寫入 r1,此句之后,r1=0x10




LDMxy / SDMxy 
x : I  Increase 遞增 ; D Decrease 遞減
y : A After 訪問後動作; B Before 訪問前動作

LDMIA R0, {R1, R2, R3, R4}
   R1 = [R0]
   R2= [R0+4]
   R3 = [R0+8]
   R4 = [R0+C]
 

留言

熱門文章