在ARM架構(gòu)中,異常向量表是一組固定位置的內(nèi)存地址,它們包含了處理器在遇到異常時(shí)需要跳轉(zhuǎn)到的處理程序的入口地址。每個(gè)異常類型都有一個(gè)對應(yīng)的向量地址。當(dāng)異常發(fā)生時(shí),處理器會自動跳轉(zhuǎn)到對應(yīng)的向量地址,并開始執(zhí)行異常處理程序。
(相關(guān)資料圖)
ARM處理器的異常向量表位于內(nèi)存的低地址空間。具體地址如下:
異常類型 | 向量地址 |
---|---|
復(fù)位(Reset) | 0x00000000 |
未定義指令(Undefined Instruction) | 0x00000004 |
軟件中斷(SWI) | 0x00000008 |
預(yù)取指令異常(Prefetch Abort) | 0x0000000C |
數(shù)據(jù)異常(Data Abort) | 0x00000010 |
保留(Reserved) | 0x00000014 |
外部中斷(IRQ) | 0x00000018 |
快速外部中斷(FIQ) | 0x0000001C |
在ARM匯編開發(fā)中,我們需要在程序開始時(shí)初始化異常向量表。初始化過程包括將每個(gè)向量地址設(shè)置為對應(yīng)的異常處理程序的入口地址。這通常通過將異常處理程序的地址存儲在向量表中的相應(yīng)位置來完成。
以下是一個(gè)初始化異常向量表的示例代碼:
AREA Vectors, CODE, READONLY ; 復(fù)位向量 LDR PC, Reset_Addr ; 未定義指令向量 LDR PC, Undefined_Addr ; 軟件中斷向量 LDR PC, SWI_Addr ; 預(yù)取指令異常向量 LDR PC, Prefetch_Abort_Addr ; 數(shù)據(jù)異常向量 LDR PC, Data_Abort_Addr ; 保留向量 NOP ; 外部中斷向量 LDR PC, IRQ_Addr ; 快速外部中斷向量 LDR PC, FIQ_Addr ; 異常處理程序地址 Reset_Addr DCD _start Undefined_Addr DCD Undefined_Handler SWI_Addr DCD SWI_Handler Prefetch_Abort_Addr DCD Prefetch_Abort_Handler Data_Abort_Addr DCD Data_Abort_Handler IRQ_Addr DCD IRQ_Handler FIQ_Addr DCD FIQ_Handler
在這個(gè)示例中,我們首先使用AREA
指令定義一個(gè)名為Vectors
的代碼段。接下來,我們將每個(gè)異常向量設(shè)置為對應(yīng)的處理程序地址。例如,對于軟件中斷(SWI),我們將其向量地址設(shè)置為SWI_Handler
。
在向量表的末尾,我們使用DCD
指令定義每個(gè)異常處理程序的入口地址。這些地址將在處理器遇到異常時(shí)被加載到程序計(jì)數(shù)器(PC)寄存器,從而實(shí)現(xiàn)異常處理的跳轉(zhuǎn)。
以下是一個(gè)簡單的示例代碼,演示了如何使用異常向量表處理軟件中斷(SWI):
; 初始化異常向量表 AREA Vectors, CODE, READONLY LDR PC, Reset_Addr LDR PC, Undefined_Addr LDR PC, SWI_Addr LDR PC, Prefetch_Abort_Addr LDR PC, Data_Abort_Addr NOP LDR PC, IRQ_Addr LDR PC, FIQ_Addr Reset_Addr DCD _start Undefined_Addr DCD Undefined_Handler SWI_Addr DCD SWI_Handler Prefetch_Abort_Addr DCD Prefetch_Abort_Handler Data_Abort_Addr```assemblyDCD Data_Abort_HandlerIRQ_Addr DCD IRQ_HandlerFIQ_Addr DCD FIQ_Handler; 主程序AREA Main, CODE, READONLY_start ; 觸發(fā)軟件中斷 SWI 0; 異常處理程序AREA Handlers, CODE, READONLYUndefined_Handler B Undefined_HandlerSWI_Handler ; 在此處編寫軟件中斷處理程序 ; ... ; 返回到主程序 MOV PC, LRPrefetch_Abort_Handler B Prefetch_Abort_HandlerData_Abort_Handler B Data_Abort_HandlerIRQ_Handler B IRQ_HandlerFIQ_Handler B FIQ_Handler
在這個(gè)示例中,我們首先初始化異常向量表,然后在_start
標(biāo)簽下的主程序中觸發(fā)一個(gè)軟件中斷(SWI)。當(dāng)軟件中斷發(fā)生時(shí),處理器會自動跳轉(zhuǎn)到SWI_Handler
異常處理程序。
在SWI_Handler
中,你可以編寫相應(yīng)的處理代碼。處理完成后,使用MOV PC, LR
指令返回到主程序。
需要注意的是,這個(gè)示例僅用于演示異常向量表的基本概念和用法。在實(shí)際開發(fā)中,你可能需要根據(jù)具體的硬件平臺和需求進(jìn)行相應(yīng)的調(diào)整和優(yōu)化。
小結(jié)本節(jié)我們介紹了ARM處理器的異常向量表,包括其位置、初始化過程以及如何使用異常向量表處理異常。通過學(xué)習(xí)本節(jié)內(nèi)容,你應(yīng)該對ARM匯編開發(fā)中的異常處理有了基本的了解。在之后的學(xué)習(xí)中,你可以更深入地探討各種異常類型以及如何編寫高效、穩(wěn)定的異常處理程序。推薦閱讀:
https://mp.weixin.qq.com/s/dV2JzXfgjDdCmWRmE0glDA
https://mp.weixin.qq.com/s/an83QZOWXHqll3SGPYTL5g
相關(guān)推薦
- (2023-06-18)[ARM 匯編]進(jìn)階篇—異常處理與中斷—2.4.2 ARM處理器的異常向量表_全球快看點(diǎn)
- (2023-06-18)環(huán)球通訊!直擊上影節(jié)入圍影片《658公里,陽子之旅》:與原生家庭和解好難
- (2023-06-18)環(huán)球今日訊!葡萄牙領(lǐng)先!C羅做球B費(fèi)直塞,B席插上單刀挑射破門
- (2023-06-18)360點(diǎn)睛營銷平臺是什么_360點(diǎn)睛營銷平臺
- (2023-06-18)薪酬管理的職能 薪酬管理的任務(wù)是什么薪酬有哪些基本功能
- (2023-06-18)【獨(dú)家】單側(cè)矯正視力不低于5.0難嗎 單側(cè)矯正視力低于50不合格是什么意思
- (2023-06-18)今熱點(diǎn):選號器00-99_選號器
- (2023-06-18)當(dāng)前最新:煤田地質(zhì)與勘探_煤田
- (2023-06-18)天天看點(diǎn):川主周天南斗醮詞
- (2023-06-18)山萸肉與山茱萸的區(qū)別功效與主治_山茱萸有什么功效
- (2023-06-18)每日訊息!千金藤素抗新冠病毒(千金藤素)
- (2023-06-18)3歲小孩眼屎多是什么原因引起的(小狗眼屎多是什么原因引起的)
- (2023-06-17)新定位 新名片 釋放強(qiáng)磁力——佳木斯“中國牙城”蓄勢前行 世界微頭條
- (2023-06-17)全球今日報(bào)丨衣服染色劑使用方法_衣服染色劑
- (2023-06-17)快播:采購降本遭遇3大挑戰(zhàn),最大的阻力來自中層
- (2023-06-17)戶外露營、作業(yè)的全能拍檔!正浩德DELTA 2 Max深度評測
- (2023-06-17)全球微動態(tài)丨物流提速 備戰(zhàn)“618”
- (2023-06-17)新楚留香傳奇張智堯解說_新楚留香傳奇張智堯|世界百事通
- (2023-06-17)焦點(diǎn)!纏繞線描畫(纏繞)
- (2023-06-17)一千零一個(gè)愿望4inlove_一千零一個(gè)愿望
- (2023-06-17)一站辦、一窗結(jié)、一次出!蘇州首次實(shí)現(xiàn)長三角示范區(qū)“1+N”證照聯(lián)辦通取|每日快報(bào)
- (2023-06-17)天天熱資訊!秦檜為什么害死岳飛(秦檜)
- (2023-06-17)天天熱點(diǎn)評!1.6億專利數(shù)據(jù)洞察產(chǎn)業(yè)發(fā)展,氫能無人機(jī)翱翔3小時(shí)……上交會發(fā)布已推介456個(gè)優(yōu)秀項(xiàng)目
- (2023-06-17)韓國首爾市7月起對學(xué)校供餐進(jìn)行全面輻射檢測 新視野
- (2023-06-17)游泳愛好者群_各位游泳愛好者-當(dāng)前關(guān)注
- (2023-06-17)環(huán)球熱點(diǎn)評!國海證券:2023年銅電鍍中試驗(yàn)證有望加速 首予行業(yè)“推薦”評級
- (2023-06-17)狐臭肥皂推薦,選擇哪種肥皂能有效去除狐臭 每日快報(bào)
- (2023-06-17)安邰鉉
- (2023-06-17)美光宣布對西安工廠投資43億元 43億元投資到哪里 焦點(diǎn)快看
- (2023-06-17)畢業(yè)祝福語成語 勵(lì)志
每日推薦
- ETF聯(lián)接基金是什么意思?ETF基金和ETF聯(lián)
- 貨幣基金的收益高嗎?貨幣基金一般年收益
- 基金賣出了怎么還有收益顯示?基金已經(jīng)贖
- 投資的基金買了幾天可以賣掉?基金入手多
- 基金終于回本了該不該贖回?基金終于回本
- 二月出境復(fù)飛航線超40條 節(jié)后部分機(jī)票價(jià)
- 重大事項(xiàng)變更!網(wǎng)易寶獲批增加注冊資本至
- 信達(dá)證券上市首日漲幅44%
- 總投資約486億元 北京今年首批50個(gè)重大
- 新年北京首月二手住宅網(wǎng)簽量再探底 價(jià)格
- 股價(jià)大漲 博云新材股東高創(chuàng)投擬趁機(jī)減持
- 2019華人歌曲音樂盛典在澳門舉行
- 喜迎十九大?歡度中秋節(jié)—傳統(tǒng)文化進(jìn)社區(qū)
- 突發(fā)!吳敏霞夫婦挑婚戒被曝光!兩百萬鉆
- 《鐘山說事》 熱點(diǎn)聚焦:胡鵬飛的最美鄉(xiāng)
- 湖南御福天益生物公司被指涉嫌傳銷進(jìn)行非
- 大同市城投公司劉建婷遭群眾舉報(bào)
- 魯能集團(tuán) “一帶一路”履責(zé)行動暨“海南
圖片新聞
48小時(shí)頻道點(diǎn)擊排行
-
0
1[ARM 匯編]進(jìn)階篇—異常處理與中斷 -
0
2360點(diǎn)睛營銷平臺是什么_360點(diǎn)睛營銷 -
0
3今熱點(diǎn):選號器00-99_選號器 -
0
4每日訊息!千金藤素抗新冠病毒(千金 -
0
5快播:采購降本遭遇3大挑戰(zhàn),最大的 -
0
6新楚留香傳奇張智堯解說_新楚留香傳 -
0
7一站辦、一窗結(jié)、一次出!蘇州首次實(shí) -
0
8韓國首爾市7月起對學(xué)校供餐進(jìn)行全面 -
0
9狐臭肥皂推薦,選擇哪種肥皂能有效去 -
0
10畢業(yè)祝福語成語 勵(lì)志 -
0
11全球球精選!天和云脈:與用戶共同創(chuàng) -
0
12環(huán)球頭條:神之雫02(關(guān)于神之雫02介 -
0
13信用卡逾期被強(qiáng)制銷戶后果是什么?會 -
0
14環(huán)球速遞!北京豐臺開展城市家具精細(xì) -
0
15天龍八部手游禮包碼 天龍八部手游禮 -
0
16水皺眉樹搖頭草彎腰云逃走打一自然景 -
0
17北京交通委:已有431輛單位通勤班車 -
0
18神仙友誼!謝娜:何炅是無條件愛我的 -
0
19每日觀點(diǎn):蓮花縣氣象臺發(fā)布雷電黃色 -
0
20牙髓炎要怎么治療吃什么藥_牙髓炎要