專題3-ARM僞指令

1、ARM機器碼
這裏寫圖片描述
可以通過反彙編查看機器碼:
arm-linux-objdump -D -S start.elf
這裏寫圖片描述

機器碼錶示的意義:

這裏寫圖片描述

因爲源操作數只有12位(實際上只有8位是存儲數據的,另外4位用於移位。),當數值超過其大小時(超過8位)就會報錯,此時需要用到僞指令

2、定義類僞指令

僞指令本身沒有所對應的機器碼,它只是在編譯的時候起作用,或者轉化爲其他的實際指令來運行。(nop轉化爲mov來執行)
GNU彙編的特點:在僞指令前面加一個點
2.1 global:定義成全局的符號
2.2 data :定義數據段
2.3 ascii:定義一個字符串的數據
2.4 byte:定義一個字節的數據
2.5 word:定義一個字的數據
這裏寫圖片描述

編譯後,可以用readelf工具將start.S的格式全讀出來,查看data段對應符號的地址和內容。

這裏寫圖片描述

這裏寫圖片描述

2.6 equ:定義宏指令

這裏寫圖片描述

2.7 align:對齊

用法:.align 4

3、操作類僞指令
3.1 ldr:用於轉移大於8位的立即數(因爲mov不能大於8位的數)ldr除了僞指令還是操作內存的指令,是將內存的值賦值到寄存器
這裏寫圖片描述
可以通過反彙編來查看ldr執行的實質:
這裏寫圖片描述
這裏寫圖片描述

3.3 nop:空操作,可用於延時
nop 等價於 mov r0,r0
這裏寫圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章