ARM-LDR
作为加载指令 立即偏移: 使用立即偏移量,前置索引立即偏移量,或后置索引立即偏移量加载 语法: LDR{type}{cond} Rt, [Rn {, #offset}] ; 立即偏移 LDR{type}{cond} Rt, [Rn, #offset]! ; 前置索引 LDR{type}{cond} Rt, [Rn], #offset ; 后置索引 LDRD{cond} Rt, Rt2, [Rn {, #offset}] ; immediate offset, doubleword LDRD{cond} Rt, Rt2, [Rn, #offset]! ; pre-indexed, doubleword LDRD{cond} Rt, Rt2, [Rn], #offset ; post-indexed, doubleword PC相对: 加载寄存器,地址是相对PC的一个偏移 语法: LDR{type}{cond}{.W} Rt, label LDRD{cond} Rt, Rt2, label ; Doubleword label是PC相对的表达式 寄存器偏移: 使用寄存器偏移,前置索引寄存器偏移,后置索引寄存器偏移加载 语法: LDR{type}{cond} Rt, [Rn, ±Rm {, shift}] ; register offset LDR{type}{cond} Rt, [Rn, ±Rm {, shift}]! ; pre-indexed ; ARM only LDR{type}{cond} Rt, [Rn], ±Rm {, shift} ; post-indexed ; ARM only LDRD{cond} Rt, Rt2, [Rn, ±Rm] ; register offset, doubleword ; ARM only LDRD{cond} Rt, Rt2, [Rn, ±Rm]! ; pre-indexed, doubleword ; ARM only LDRD{cond} Rt, Rt2, [Rn], ±Rm ; post-indexed, doubleword ; ARM only 寄存器相对: 加载寄存器,地址是相对一个基寄存器的偏移 语法: LDR{type}{cond}{.W} Rt, label LDRD{cond} Rt, Rt2, label ; Doubleword 2.作为伪指令 使用一个32位立即数或地址加载寄存器 语法: LDR{cond}{.W} Rt, =expr LDR{cond}{.W} Rt, =label_expr 使用LCR伪指令时,如果expr的值能被一个有效MOV或MVN指令加载,那么汇编器将使用这条指令; 如果有效MOV或MVN指令无法使用,或者label_expr语法使用了,那么汇编器将把值存放在一个文字池,并且生成一个PC相对的LDR指令从文字池里面读取值。