色yeye在线视频观看_亚洲人亚洲精品成人网站_一级毛片免费播放_91精品一区二区中文字幕_一区二区三区日本视频_成人性生交大免费看

當前位置:首頁 > 嵌入式培訓 > 嵌入式學習 > 講師博文 > ARM處理器中SWI異常中斷處理程序的實現

ARM處理器中SWI異常中斷處理程序的實現 時間:2018-09-26      來源:未知

在ARM處理器中,我們常常使用SWI指令來產生一個軟中斷。軟中斷指令SWI指令中包含了一個24位的立即數,這個立即數指示了用戶請求的特定的SWI功能,即這個立即數表示的是SWI指令所想要觸發中斷的中斷號。SWI指令的格式如圖1所示:

圖1 SWI指令編碼格式

所以,當SWI指令觸發了一次異常后進入異常處理的程序時,異常程序必須要從SWI指令中提取出來中斷號,即提出出來SWI指令中低24位的值,從而得到用戶請求的特定的SWI功能。

通常情況下,SWI異常中斷處理函數分為兩級,第一級的SWI處理函數用于從SWI指令中提取24位的立即數即中斷號,通第一級函數通過匯編語言、內嵌匯編來完成。第二級SWI異常中斷處理程序實現各個SWI的具體功能,第二級程序可以是匯編程序,也可以是C程序。

第一級SWI異常處理程序通過LR寄存器內容得到SWI指令地址,LR寄存器中保存的是該SWI指令的下一條指令的地址,并從存儲器中得到SWI指令編碼,從而提取出來24位中斷號。下面的例子顯示了提取中斷向量號的標準過程。

LDR R0, [LR, #-4]

BIC R0, R0, #0xFF000000

在這個例子中,使用LR-4得到SWI指令的地址,再通過“BIC r0, r0, #0xff000000”指令提取SWI指令中斷號。

在第一級中斷處理函數中我們已經將中斷號提取到寄存器r0中,所以根據AAPCS函數調用規則,可以直接使用BL指令跳轉到C語言函數,而且中斷向量號作為第一個參數被傳遞到C函數。例如,匯編中使用了“BL C_SWI_Handler”跳轉到C語言的第二級處理函數,在第二級程序中我們可以通過判斷SWI指令中的中斷號來執行特定的功能,第二級的C語言函數示例如下:

void C_SWI_handler(unsigned number)

{

switch(number)

{

case 0:

//中斷號是0的處理程序

break;

case 1:

//中斷號是1的處理程序

break;

… …

default:

//未知的中斷號處理程序

break;

}

}

上一篇:moc文件分析

下一篇:Shell腳本編程——for循環

熱點文章推薦
華清學員就業榜單
高薪學員經驗分享
熱點新聞推薦
前臺專線:010-82525158 企業培訓洽談專線:010-82525379 院校合作洽談專線:010-82525379 Copyright © 2004-2022 北京華清遠見科技集團有限公司 版權所有 ,京ICP備16055225號-5京公海網安備11010802025203號

回到頂部

主站蜘蛛池模板: 亚洲国产果冻传媒av在线观看 | 制服丝袜自拍另类第1页 | 人妻无码熟妇乱又伦精品 | 少妇大叫好爽受不了午夜视频 | 中国熟妇VDEOS免费视频 | 中文字幕乱码人妻综合二区三区 | 国产亚洲精品久久yy5099 | 被两个两个黑人吃奶4P | 老头把我添高潮了A片故视频 | 韩国av片女演员 | 综合精品欧美日韩国产在线 | 久久人人97超碰超碰窝窝 | 丁香五月激情综合激情综合激情 | 免费午夜爽爽爽www视频十八禁 | 日韩精品无码免费专区网站 | 日本老熟妇maturebbw | 色花堂永久网站 | 热热色国产| 日本巨大的奶头在线观看 | 啊片网站在线观看 | 免费欧洲毛片a级视频无风险 | 毛片6| 国产老师开裆丝袜喷水视频 | 欧美在线日本 | 性生交大片免费看l | 人人爽人人澡人人人人妻 | 成年女人毛片免费视频播放器 | 久久精品国产亚洲AV无码麻豆 | 少妇大叫好爽受不了午夜视频 | 国产原创麻豆 | voyeur精品偷窥 | 久久久久亚洲AV综合仓井空 | 日本乱子伦一区二区三区 | 性生交大片免费看图片 | 22精品一区二区三区 | 国产会所在线观看 | 亚洲AV无码AV在线播放 | 爱情岛亚洲AV永久入口首页 | 久久丫精品忘忧草产品购买途径 | 国产精品久久久久9999爆乳 | 亚洲AV无码精品无码麻豆 |