ARM邪獵文章,請點擊以下匯總鏈接:
《從0學(xué)arm合集》
一、MDK和GNU偽指令區(qū)別
我們在學(xué)習(xí)匯編代碼的時候經(jīng)過會看到以下兩種風(fēng)格的代碼:
gnu代碼開頭是:
.global _start
_start: @匯編入口
ldr sp,=0x41000000
.end @匯編程序結(jié)束
MDK代碼開頭是:
AREA Example,CODE,READONLY ;聲明代碼段Example
ENTRY ;程序入口
Start
MOV R0,#0
OVER
END
這兩種風(fēng)格的代碼是要使用不同的編譯器,我們之前的實例代碼都是MDK風(fēng)格的。
那么多對于我們初學(xué)者來說要學(xué)習(xí)哪種風(fēng)格呢?答案是肯定的,學(xué)習(xí)GNU風(fēng)格的匯編代碼,因為做Linux驅(qū)動開發(fā)必須掌握的linux內(nèi)核、uboot,而這兩個軟件就是GNU風(fēng)格的。
為了大家不要把過多精力浪費在暫時沒用的知識上,下面我們只講GNU風(fēng)格匯編。
二、GNU匯編書寫格式:1. 代碼行中的注釋符號:
‘@’ 整行注釋符號:‘#’ 語句分離符號:
直接操作數(shù)前綴: ‘?!?或 ‘$’
2. 全局標號:
標號只能由a~z,A~Z,0~9,“.”,_等(由點、字母、數(shù)字、下劃線等組成,除局部標號外,不能以數(shù)字開頭)字符組成,標號的后面加“:”。
段內(nèi)標號的地址值在匯編時確定;
段外標號的地址值在連接時確定。
3. 局部標號:
局部標號主要在局部范圍內(nèi)使用而且局部標號可以重復(fù)出現(xiàn)。它由兩部組成開頭是一個0-99直接的數(shù)字局部標號 后面加“:”
F:指示編譯器只向前搜索,代碼行數(shù)增加的方向 / 代碼的下一句
B:指示編譯器只向后搜索,代碼行數(shù)減小的方向
注意局部標號的跳轉(zhuǎn),就近原則「舉例:」
文件位置
arch/arm/kernel/entry-armv.S
審核編輯:符乾江
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
相關(guān)推薦
基于MIPS指令集的君正X2000處理器。有些工程師對于MIPS不怎么了解,究竟MIPS和ARM有何區(qū)別呢?本期文對MIPS做一個簡單介紹。MIPS和ARM都屬于
發(fā)表于 11-23 01:05
?45次閱讀
2024年11月5日,新唐科技正式推出了免費版的Arm? Keil? MDK Nuvoton Edition,成為全球首家向開發(fā)者提供Keil MDK完整版本的半導(dǎo)體公司。這款專業(yè)開發(fā)工具專為
發(fā)表于 11-06 11:07
?574次閱讀
基于AT91SAM7S平臺,介紹裸機開發(fā),以閃燈為藍本,涉及匯編、鏈接、C/C++、中斷等。
無處不在的ARM處理器家族得到了GNU C/C++工具鏈的良好支持。雖然許多在線和印刷資源關(guān)注
發(fā)表于 10-16 17:34
?0次下載
ARM處理器的指令集是一個龐大而復(fù)雜的系統(tǒng),它涵蓋了多種類型的指令,用于實現(xiàn)數(shù)據(jù)處理、程序控制、內(nèi)存訪問等多種功能。
發(fā)表于 09-10 11:15
?434次閱讀
ARM處理器和CISC(復(fù)雜指令集計算機)處理器在多個方面存在顯著的區(qū)別。這些區(qū)別主要體現(xiàn)在架構(gòu)原理、性能與功耗、設(shè)計目標、應(yīng)用領(lǐng)域以及市場生態(tài)等方面。
發(fā)表于 09-10 11:10
?383次閱讀
零電壓開關(guān)(Zero Voltage Switch, ZVS)和零電流開關(guān)(Zero Current Switch, ZCS)是電力電子技術(shù)中兩種重要的軟開關(guān)技術(shù),它們在提高系統(tǒng)效率、降低開關(guān)損耗、減少電磁干擾等方面具有顯著優(yōu)勢。以下將詳細探討這兩種技術(shù)的
發(fā)表于 07-25 11:18
?1974次閱讀
在PLC(可編程邏輯控制器)編程中,ALT和ALTP是兩個重要的指令,它們各自具有獨特的功能和應(yīng)用場景。本文將從多個方面對這兩個指令進行詳細的分析和比較,以便讀者能夠更深入地理解它們之間的區(qū)別。
發(fā)表于 06-17 16:42
?3106次閱讀
電子發(fā)燒友網(wǎng)站提供《GNU make中文手冊.pdf》資料免費下載
發(fā)表于 06-05 13:22
?0次下載
I2C boot 使用ARM GCC 編譯pass, 改用ARM MDK 編譯報錯如下, 怎么解決,謝謝!
cannot open source input file "
發(fā)表于 06-03 06:06
FPGA(Field-Programmable Gate Array)與ARM在多個方面存在本質(zhì)區(qū)別。
首先,從它們的定義和結(jié)構(gòu)上來看,F(xiàn)PGA是一種現(xiàn)場可編程門陣列,屬于可編程器件的一種。它的內(nèi)部
發(fā)表于 04-28 09:00
FPGA(Field-Programmable Gate Array)與ARM在多個方面存在本質(zhì)區(qū)別。
首先,從它們的定義和結(jié)構(gòu)上來看,F(xiàn)PGA是一種現(xiàn)場可編程門陣列,屬于可編程器件的一種。它的內(nèi)部
發(fā)表于 04-28 08:56
,自由流轉(zhuǎn);統(tǒng)一生態(tài),原生智能。隨著鴻蒙生態(tài)的壯大,投入鴻蒙開發(fā)的IT專業(yè)人才越來越多,對于從未接觸過此方面零基礎(chǔ)的學(xué)生而言,也是一次很不錯的職業(yè)轉(zhuǎn)向和技術(shù)提升的好機會。 什么是鴻蒙? ? 鴻蒙系統(tǒng)(HarmonyOS)是華為技
發(fā)表于 03-04 17:50
?1876次閱讀
接地和接零是一個概念嗎?接地和接零的基本目的 工作接地與保護接零的區(qū)別 保護接地與保護接零的區(qū)別
發(fā)表于 02-04 15:45
?949次閱讀
ARM架構(gòu)和x86架構(gòu)是兩種不同的計算機處理器架構(gòu),它們在體系結(jié)構(gòu)、指令集、應(yīng)用領(lǐng)域等方面有著明顯的區(qū)別。Linux操作系統(tǒng)則具有廣泛的適配性,可以運行在各種架構(gòu)上,包括x86和ARM
發(fā)表于 01-30 13:46
?1.7w次閱讀
電子發(fā)燒友網(wǎng)站提供《零基礎(chǔ)入門 Hyperlynx 仿真教程.pdf》資料免費下載
發(fā)表于 12-22 10:49
?29次下載
評論