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
+關注
關注
135文章
9553瀏覽量
391889 -
偽指令
+關注
關注
0文章
12瀏覽量
10832
發布評論請先 登錄
RISC-V指令集手冊中F指令部分
【教程】零基礎!手把手教你使用STM32F4進行E22-400T22S編程通信
RISC-V和ARM有何區別?
零基礎學習LuatOS編程:快速上手開發實戰教程!
跟老齊學Python:從入門到精通
STC8H 單片機 + RA8889/RA6809:重新定義嵌入式觸控交互_高流暢、低延遲、零基礎的人機界面(一)
零基礎學ARM:MDK和GNU偽指令區別
評論