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
發布評論請先 登錄
相關推薦
你聽說過MIPS嗎?它和ARM有何區別?
![你聽說過MIPS嗎?它和<b class='flag-5'>ARM</b>有何<b class='flag-5'>區別</b>?](https://file.elecfans.com/web2/M00/50/DA/pYYBAGLH6TyAB71EAAAPQ7KgtYA038.png)
新唐科技率先發布免費版Arm Keil MDK,助力嵌入式開發
用GNU構建裸機系統
ARM處理器和CISC處理器的區別
零電壓開關與零電流開關的區別
PLC中ALT和ALTP指令的區別
I2C boot使用ARM GCC編譯pass, 改用ARM MDK編譯報錯怎么解決?
FPGA與ARM的本質區別
FPGA與ARM的本質區別是什么?
零基礎小白適不適合學鴻蒙開發?
![<b class='flag-5'>零基</b>礎小白適不適合<b class='flag-5'>學</b>鴻蒙開發?](https://file1.elecfans.com/web2/M00/C2/8F/wKgZomXlmIWAdrzJAAB8WcDqJxU239.png)
評論