一直不是很会arm,做pwnable.kr上的arm时遇到了就顺便学了一点。
跳转指令有bx,blx,bl等,其中bx与blx会转换处理器状态,以bx为例:
bx r0
这个语句会跳到地址为r0值的指令处,如果这个地址最低位为1,处理器就切换为thumb状态,如果最低位为0就切换为arm状态。其中thumb状态时,pc为当前指令地址+4,arm状态时,pc为当前指令地址+8。
在arm中,立即数前都需加#。
LDR R1,=COUNT
MOV R0,#0
STR R0,[R1]
关于寄存器的存取,伪指令LDR可以将数据存入寄存器,数据前要加“=”,STR则可以将寄存器中数据存入内存中。