arm匯編adrl以及l(fā)dr與adr的區(qū)別
adrl r2,men_cfg_val
本文引用地址:http://www.ex-cimer.com/article/201611/318775.htm最初對adr1相當(dāng)不解,后來發(fā)現(xiàn),那個不是數(shù)字1,而是字母l(認(rèn)真看頭部,有點區(qū)別的)
這里記錄下ADRL的用法:
功能:將相對于程序或相對于寄存器的地址載入寄存器中。與ADR指令相似。ADRL生成兩個數(shù)據(jù)處理指令,因此它比ADR加載的地址范圍要寬。
語法
ADRL{cond} Rd,label
其中:
- cond:是一個可選的條件代碼。Rd:是要加載的寄存器。label:是相對于程序或寄存器的表達式。
- 上面給出的范圍是相對于位于當(dāng)前指令地址后的、距離當(dāng)前指令四個字節(jié)(在 Thumb 代碼中)或兩個字(在 ARM 代碼中)遠(yuǎn)的點而言的。如果對齊為 16 字節(jié),或與此點的相關(guān)性更高,則遠(yuǎn)程地址的范圍可更大。
查看ADRL的同時,看到篇講述ldr與adr的區(qū)別的博文,感覺寫的很好,摘錄下來。
http://coon.blogbus.com/logs/2738861.html
看此文最大的收獲不在于說懂了這幾個命令的用法,關(guān)鍵卻在于反匯編的運用,有反匯編看出不同用法的具體差別。
注:反匯編用arm—linux_objdump就可以實現(xiàn)了。
評論