在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 協(xié)處理器及其他指令之:異常產(chǎn)生指令

            協(xié)處理器及其他指令之:異常產(chǎn)生指令

            作者: 時間:2013-09-13 來源:網(wǎng)絡(luò) 收藏

            本文引用地址:http://www.biyoush.com/article/257048.htm

            中斷服務(wù)程序的主要工作放在C__Handler中,由C語言完成,用swich_case結(jié)構(gòu)判斷中斷類型。典型的程序如下。

            void C__Handler( int swi_num, int *regs )

            {

            switch( swi_num )

            {

            case 0:

            regs[0] = regs[0] * regs[1];

            break;

            case 1:

            regs[0] = regs[0] + regs[1];

            break;

            case 2:

            regs[0] = (regs[0] * regs[1]) + (regs[2] * regs[3]);

            break;

            case 3:

            {

            int w, x, y, z;

            w = regs[0];

            x = regs[1];

            y = regs[2];

            z = regs[3];

            regs[0] = w + x + y + z;

            regs[1] = w - x - y - z;

            regs[2] = w * x * y * z;

            regs[3] =(w + x) * (y - z);

            }

            break;

            }

            }

            9.5.2 斷點(diǎn)中斷指令

            1.指令編碼格式

            斷點(diǎn)中斷指令(BreakPoint)產(chǎn)生一個預(yù)取異常(prefetch abort),它常被用來設(shè)置軟件斷點(diǎn),在調(diào)試程序時十分有用。當(dāng)系統(tǒng)中存在調(diào)試硬件時,該指令被忽略。

            指令的編碼格式如圖9.13所示。

            圖9.13 指令編碼格式

            2.指令的語法格式

            BKPT immediate>

            immediate>

            16位的立即數(shù)。該立即數(shù)可以用來保存額外的斷點(diǎn)信息。

            注意

            16位立即數(shù)在指令的編碼格式中并不是連續(xù)存放的。前12位放在bits[19∶8],而后4位放在bits[3∶0]。

            3.指令操作的偽代碼

            指令操作的偽代碼如下面程序段所示。

            If (not overridden by debug hard)

            R14_abt = address of BKPT instruction + 4

            SPSR_abt = CPSR

            CPSR[4:0] = 0b10111 /*進(jìn)入異常模式*/

            CPSR[5] = 0 /*執(zhí)行在狀態(tài)*/

            /*CPSR[6] is unchanged*/

            CPSR[7] = 1 /*禁止正常中斷*/

            If high vectors configured then

            PC = 0x0000000c

            4.指令的使用

            要正確的使用BKPT指令,必須和具體的調(diào)試系統(tǒng)相結(jié)合。一般說來,BKPT有兩種使用方法。

            (1)如果當(dāng)前使用的系統(tǒng)調(diào)試硬件沒有屏蔽BKPT指令,那么在此系統(tǒng)中預(yù)取指令異常和軟件調(diào)試命令同時使用一個中斷向量。這樣當(dāng)異常發(fā)生時,就要依靠系統(tǒng)自身來判斷是真正的預(yù)取異常還是軟件調(diào)試命令。判斷的方法,根據(jù)系統(tǒng)的不同,而有所不同。

            (2)如果當(dāng)前的系統(tǒng)調(diào)試硬件屏蔽了BKPT指令,那么系統(tǒng)會跳過BKPT指令順序執(zhí)行該指令下面的程序代碼。

            注意

            BKPT指令總是無條件執(zhí)行的,當(dāng)指令的編碼格式中的條件域不被解析為AL時,指令的執(zhí)行結(jié)果不可預(yù)知。


            上一頁 1 2 下一頁

            評論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉