<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

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

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

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

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

中斷服務(wù)程序的主要工作放在C__Handler中,由C語(yǔ)言完成,用swich_case結構判斷中斷類(lèi)型。典型的程序如下。

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)生一個(gè)預取異常(prefetch abort),它常被用來(lái)設置軟件斷點(diǎn),在調試程序時(shí)十分有用。當系統中存在調試硬件時(shí),該指令被忽略。

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

圖9.13 指令編碼格式

2.指令的語(yǔ)法格式

BKPT immediate>

immediate>

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

注意

16位立即數在指令的編碼格式中并不是連續存放的。前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 /*執行在狀態(tài)*/

/*CPSR[6] is unchanged*/

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

If high vectors configured then

PC = 0x0000000c

4.指令的使用

要正確的使用BKPT指令,必須和具體的調試系統相結合。一般說(shuō)來(lái),BKPT有兩種使用方法。

(1)如果當前使用的系統調試硬件沒(méi)有屏蔽BKPT指令,那么在此系統中預取指令異常和軟件調試命令同時(shí)使用一個(gè)中斷向量。這樣當異常發(fā)生時(shí),就要依靠系統自身來(lái)判斷是真正的預取異常還是軟件調試命令。判斷的方法,根據系統的不同,而有所不同。

(2)如果當前的系統調試硬件屏蔽了BKPT指令,那么系統會(huì )跳過(guò)BKPT指令順序執行該指令下面的程序代碼。

注意

BKPT指令總是無(wú)條件執行的,當指令的編碼格式中的條件域不被解析為AL時(shí),指令的執行結果不可預知。


上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>