ARM邪獵文章,請點擊以下匯總鏈接:
《從0學arm合集》
一、MDK和GNU偽指令區別
我們在學習匯編代碼的時候經過會看到以下兩種風格的代碼:
gnu代碼開頭是:
.global _start
_start: @匯編入口
ldr sp,=0x41000000
.end @匯編程序結束
MDK代碼開頭是:
AREA Example,CODE,READONLY ;聲明代碼段Example
ENTRY ;程序入口
Start
MOV R0,#0
OVER
END
這兩種風格的代碼是要使用不同的編譯器,我們之前的實例代碼都是MDK風格的。
那么多對于我們初學者來說要學習哪種風格呢?答案是肯定的,學習GNU風格的匯編代碼,因為做Linux驅動開發必須掌握的linux內核、uboot,而這兩個軟件就是GNU風格的。
為了大家不要把過多精力浪費在暫時沒用的知識上,下面我們只講GNU風格匯編。
二、GNU匯編書寫格式:1. 代碼行中的注釋符號:
‘@’ 整行注釋符號:‘#’ 語句分離符號:
直接操作數前綴: ‘#’ 或 ‘$’
2. 全局標號:
標號只能由a~z,A~Z,0~9,“.”,_等(由點、字母、數字、下劃線等組成,除局部標號外,不能以數字開頭)字符組成,標號的后面加“:”。
段內標號的地址值在匯編時確定;
段外標號的地址值在連接時確定。
3. 局部標號:
局部標號主要在局部范圍內使用而且局部標號可以重復出現。它由兩部組成開頭是一個0-99直接的數字局部標號 后面加“:”
F:指示編譯器只向前搜索,代碼行數增加的方向 / 代碼的下一句
B:指示編譯器只向后搜索,代碼行數減小的方向
注意局部標號的跳轉,就近原則「舉例:」
文件位置
arch/arm/kernel/entry-armv.S
-
ARM
+關注
關注
134文章
9097瀏覽量
367585 -
偽指令
+關注
關注
0文章
12瀏覽量
10516
發布評論請先 登錄
相關推薦
評論