亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? tbench.s

?? 這個是arm的關于異常處理的匯編程序
?? S
字號:
;/*
; *  ____________________________________________________________________
; * 
; *  Copyright (c) 2004, Andrew N. Sloss, Chris Wright and Dominic Symes
; *  All rights reserved.
; *  ____________________________________________________________________
; * 
; *  NON-COMMERCIAL USE License
; *  
; *  Redistribution and use in source and binary forms, with or without 
; *  modification, are permitted provided that the following conditions 
; *  are met: 
; *  
; *  1. For NON-COMMERCIAL USE only.
; * 
; *  2. Redistributions of source code must retain the above copyright 
; *     notice, this list of conditions and the following disclaimer. 
* 
; *  3. Redistributions in binary form must reproduce the above 
; *     copyright notice, this list of conditions and the following 
; *     disclaimer in the documentation and/or other materials provided 
; *     with the distribution. 
; * 
; *  4. All advertising materials mentioning features or use of this 
; *     software must display the following acknowledgement:
; * 
; *     This product includes software developed by Andrew N. Sloss,
; *     Chris Wright and Dominic Symes. 
; * 
; *   THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS ``AS IS'' AND ANY 
; *   EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
; *   IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 
; *   PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE CONTRIBUTORS BE 
; *   LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, 
; *   OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 
; *   PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, 
; *   OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 
; *   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR 
; *   TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 
; *   OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
; *   OF SUCH DAMAGE. 
; * 
; *  If you have questions about this license or would like a different
; *  license please email :
; * 
; *  andrew@sloss.net
; * 
; * 
; */

;/*****************************************************************************
; *
; *  Module       : tbench.s
; *  Descriptions : TestBench is a very basic confidence test. It excercies 
; *               : each interrupt handler and verifies that the handler 
; *               : has not corrupted the User registers or IRQ stack. 
; *               :
; *  OS           : generic
; *  Platform     : generic
; *  History      :
; *
; *  31th December 2003
; *  - added header
; *
; ****************************************************************************/
 
; *****************************************************************************
; IMPORT
; *****************************************************************************

     IMPORT nestedInterruptHandler
     IMPORT reentrantInterruptHandler
     IMPORT prioritizedSimpleInterruptHandler
     IMPORT prioritizedStandardInterruptHandler
     IMPORT prioritizedDirectInterruptHandler
     IMPORT prioritizedGroupedInterruptHandler
     IMPORT vectorServiceRoutine

; *****************************************************************************
; MACROS/DEFINES
; *****************************************************************************

Maskmd          EQU 0x1f                ; Mask mode
SVC32md         EQU 0x13                ; SVC mode 
I_Bit           EQU 0x80                ; IRQ bit
SEMIHOSTING     EQU 0x123456            ; semihosting SWI
SYS_WRITE0      EQU 0x04                ; semihosting string output
MAXNUMTESTS     EQU 7                   ; number of tests

; *****************************************************************************
; CODE
; *****************************************************************************
     
     AREA testbench,CODE,READWRITE
     ENTRY
; -- initialize a mock USER environment
init
     BL       initUserEnvironment       ; initialize User registers
; -- output test banner               
begin
     LDR     r1,=strBanner              ; r1 = @strBanner 
     BL      printTest                  ; print Banner
     MOV     r1,#1                      ; reset r1 = 1
     B       startTest                  ; branch to start test
startTest
     LDR     r0,nextTest                ; r0 = nextTest
moreTests
     LDR     r1,[pc,r0,LSL#2]           ; load address of the test string 
     B       printAndTest               ; print and test the interrupt handler
     DCD     strTest1                   ; nested interrupt handler
     DCD     strTest2                   ; reentrant interrupt handler
     DCD     strTest3                   ; prioritized simple interrupt handler
     DCD     strTest4                   ; prioritized standard interrupt handler
     DCD     strTest5                   ; prioritized direct interrupt handler
     DCD     strTest6                   ; prioritized grouped interrupt handler
     DCD     strTest7                   ; vector service routine 
; -- print test and run
printAndTest
     BL      printTest                  ; output test string
     BL      setUpMode                  ; set IRQ mode 
     BL      setUpMockInterruptController ; setup the mock int cntrl
     ADR     r14,verify+4               ; branch verify routine
testInterruptHandler	
     LDR     r0,nextTest                ; r0 = test number
     LDR     pc,[pc,r0,LSL#2]           ; jump to a interrupt handler
     NOP
     DCD     nestedInterruptHandler
     DCD     reentrantInterruptHandler
     DCD     prioritizedSimpleInterruptHandler
     DCD     prioritizedStandardInterruptHandler
     DCD     prioritizedDirectInterruptHandler
     DCD     prioritizedGroupedInterruptHandler
     DCD     vectorServiceRoutine       
; -- verify interrupt handler hasn't corrupted registers and IRQ stack 
verify
     BL      verifyRegisters            ; verify registers 
     LDR     r0,nextTest                ; r0 = test number
     ADD     r0,r0,#1                   ; increment test number
     ADR     r1,nextTest                ; r1 = @nextTest
     STR     r0,[r1]                    ; store test number
     CMP     r0,#MAXNUMTESTS            ; if r0<MAXNUMTESTS
     BLT     moreTests                  ;   then branch to moreTest
     B       completeTest               ; completed tests
nextTest
     DCD     0x0                        ; store next test
completeTest
     LDR     r1,=strCompleteTest        ; r1 = string
     BL      printTest                  ; print test string
passed
     B       passed                     ; infinite loop

; *****************************************************************************
; * ROUTINES
; *****************************************************************************

; void setUpMockInterruptController (void);
; POST: mem32[0x80000000] = 0x00000001
; POST: r13_irq = 0x9000
;
setUpMockInterruptController
     LDR     r0,=0x80000000             ; ic_Base = @0x80000000
     MOV     r13,#1                     ; set r13 to show one interrupt
     STR     r13,[r0]                   ; 0x80000000=1
     MOV     r13,#0x9000                ; r13_irq=0x9000
     MOV     pc,lr                      ; return

; void verifyRegisters (void);
; POST: outputs PASS | FAIL 
; 
verifyRegisters
     CMP     r1,#1                      ; if r1!=1
     BNE     testFailed                 ;    then testFailed
     CMP     r2,#2                      ; if r2!=2
     BNE     testFailed                 ;    then testFailed
     CMP     r3,#3                      ; if r3!=3
     BNE     testFailed                 ;    then testFailed
     CMP     r4,#4                      ; if r4!=4
     BNE     testFailed                 ;    then testFailed
     CMP     r5,#5                      ; if r5!=5
     BNE     testFailed                 ;    then testFailed
     CMP     r6,#6                      ; if r6!=6
     BNE     testFailed                 ;    then testFailed
     CMP     r7,#7                      ; if r7!=7
     BNE     testFailed                 ;    then testFailed
     CMP     r8,#8                      ; if r8!=8
     BNE     testFailed                 ;    then testFailed
     CMP     r9,#9                      ; if r9!=9
     BNE     testFailed                 ;    then testFailed
     CMP     r10,#10                    ; if r10!=10
     BNE     testFailed                 ;    then testFailed
     CMP     r11,#11                    ; if r11!=11
     BNE     testFailed                 ;    then testFailed
     CMP     r12,#12                    ; if r12!=12
     BNE     testFailed                 ;    then testFailed
     MRS     r1,CPSR			; copy CPSR to r1
     BIC     r1,r1,#Maskmd		; mask the mode
     ORR     r1,r1,#0x12                ; CPSR=IFt_IRQ
     MSR     CPSR_cxsf,r1		; change to IRQ mode
     CMP     r13,#0x9000                ; if r13_usr!=0x9000
     BNE     testFailed                 ;    then testFailed
     MRS     r1,CPSR                    ; copy CPSR to r1
     BIC     r1,r1,#Maskmd              ; mask the mode
     ORR     r1,r1,#0x1f                ; CPSR=ift_SYS
     MSR     CPSR_cxsf,r1               ; change to SYSTEM mode
testPassed
     MOV     r0,#SYS_WRITE0             ; r0=SYS_WRITE0 (0x4)
     LDR     r1,=strPassed               ; r1 = @strPassed
     SWI     0x123456                   ; semihosting SWI
     B       continue                   ; jump to continue
testFailed
     MOV     r0,#SYS_WRITE0             ; r0=SYS_WRITE0 (0x4)
     LDR     r1,=strFailed               ; r1 = @strFailed
     SWI     0x123456                   ; semihosting SWI
continue     
     MOV     r1,#1                      ; reset r1=1
     MOV     pc,lr                      ; return

; void setUpMode (void);
; POST: CPSR = IFt_IRQ SPSR = ift_SYSTEM
setUpMode
     MOV     r0,lr                      ; copy the link register into r0
     MRS     r1,CPSR                    ; copy CPSR to r1
     BIC     r1,r1,#Maskmd              ; mask the mode
     ORR     r1,r1,#0x12|I_Bit          ; copy of CPSR = ift_IRQ
     MSR     CPSR_cxsf,r1		; change to IRQ mode
     MRS     r1,SPSR                    ; copy SPSR to r1
     BIC     r1,r1,#Maskmd              ; mask the mode
     ORR     r1,r1,#0x1f                ; SPSR_IRQ = ift_SYS
     MSR     SPSR_cxsf,r1               ; change SPSR to SYSTEM mode
     MOV     r1,#1                      ; reset r1=1
     MOV     pc,r0                      ; return

; void printTest (r1-address of string);
; POST: output zero terminated string in pointed to by r1
printTest
     MOV     r0,#SYS_WRITE0
     SWI     0x123456
     MOV     r1,#1
     MOV     pc,lr
; void initUserEnvironment (void);
; POST: r<n>_usr = n where n=1 to 12 
; POST: (note User and System mode registers are the same)
initUserEnvironment
; -- change to System mode
     MOV     r0,lr
     MRS     r1,CPSR			; copy CPSR to r1
     BIC     r1,r1,#Maskmd              ; mask the mode
     ORR     r1,r1,#0x1f                ; CPSR = ift_SYS
     MSR     CPSR_cxsf,r1		; change to SYSTEM mode
; -- set-up register values
     MOV     r1,#1                      ; r1 = 1
     MOV     r2,#2                      ; r2 = 3
     MOV     r3,#3                      ; r3 = 3
     MOV     r4,#4                      ; r4 = 4
     MOV     r5,#5                      ; r5 = 5
     MOV     r6,#6                      ; r6 = 6
     MOV     r7,#7                      ; r7 = 7
     MOV     r8,#8                      ; r8 = 8
     MOV     r9,#9                      ; r9 = 9
     MOV     r10,#10                    ; r10 = 10
     MOV     r11,#11                    ; r11 = 11
     MOV     r12,#12                    ; r12 = 12
     MOV     pc,r0                      ; return
     
; *****************************************************************************
; DATA
; *****************************************************************************

strBanner
     DCB     "Basic Confidence Test\n\n",0 ; banner string 
     ALIGN
strCompleteTest
     DCB     "\n\nComplete !!!\n",0     ; string to show completion
     ALIGN     
strPassed
     DCB     "PASSED \n",0              ; string "PASSED"
     ALIGN
strFailed
     DCB     "FAILED \n",0              ; string "FAILED"
     ALIGN
strTest1
     DCB     "Test[1] : Nested interrupt handler               - ",0
     ALIGN
strTest2
     DCB     "Test[2] : Reentrant interrupt handler            - ",0
     ALIGN
strTest3
     DCB     "Test[3] : Prioritized simple interrupt handler   - ",0
     ALIGN     
strTest4
     DCB     "Test[4] : Prioritized standard interrupt handler - ",0
     ALIGN
strTest5
     DCB     "Test[5] : Prioritized direct interrupt handler   - ",0
     ALIGN
strTest6
     DCB     "Test[6] : Prioritized grouped interrupt handler  - ",0
     ALIGN
strTest7
     DCB     "Test[7] : Vector interrupt handler               - ",0
     ALIGN

     END

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲欧美日韩在线不卡| 亚洲精品一线二线三线无人区| 欧美激情综合五月色丁香小说| 国产精品一级二级三级| 国产欧美精品一区二区色综合| 丁香亚洲综合激情啪啪综合| 国产精品妹子av| 91色.com| 日韩成人av影视| 日韩一级成人av| 国产精品综合一区二区| 中文字幕制服丝袜一区二区三区 | 国产精品久久久久影视| 91视频国产资源| 亚洲成av人片| 精品美女一区二区| jlzzjlzz欧美大全| 亚洲自拍欧美精品| 欧美videos中文字幕| 成人禁用看黄a在线| 亚洲午夜激情网站| 精品第一国产综合精品aⅴ| 99在线精品一区二区三区| 亚洲大尺度视频在线观看| 久久在线观看免费| 色婷婷一区二区| 麻豆成人av在线| 《视频一区视频二区| 正在播放亚洲一区| 99久久精品99国产精品| 午夜激情久久久| 亚洲国产精品成人综合| 欧美日韩一区 二区 三区 久久精品| 韩国女主播一区| 亚洲一区二区三区影院| 久久色在线观看| 欧美精品日韩综合在线| 成人免费高清视频| 久久国产婷婷国产香蕉| 精品一区二区日韩| 亚洲欧洲av在线| 久久这里只有精品首页| 欧美久久久久免费| 99久久99久久免费精品蜜臀| 国产综合成人久久大片91| 亚洲成人免费电影| 亚洲天堂2014| 久久这里只精品最新地址| 欧美精品123区| 欧洲亚洲精品在线| 99久久综合精品| 激情综合一区二区三区| 无吗不卡中文字幕| 夜夜嗨av一区二区三区| 欧美激情中文字幕| 精品国产三级电影在线观看| 欧美精品一二三| 日本精品视频一区二区| 欧美日本一区二区| 成人影视亚洲图片在线| 久久99精品久久久久婷婷| 亚洲国产综合91精品麻豆| 亚洲视频 欧洲视频| 国产亚洲成av人在线观看导航| 欧美一区二区三区精品| 欧美午夜精品一区二区蜜桃| 91玉足脚交白嫩脚丫在线播放| 国产99一区视频免费| 国产精品一区在线| 激情深爱一区二区| 寂寞少妇一区二区三区| 理论片日本一区| 日本女优在线视频一区二区| 无吗不卡中文字幕| 视频精品一区二区| 蜜臀av性久久久久av蜜臀妖精| 午夜精品免费在线观看| 丝袜美腿高跟呻吟高潮一区| 午夜成人在线视频| 日本亚洲一区二区| 人妖欧美一区二区| 蜜臀精品久久久久久蜜臀| 久久国产精品第一页| 黄色成人免费在线| 国产一区二区久久| 高清免费成人av| 97精品国产97久久久久久久久久久久 | 国产女人18水真多18精品一级做| 精品国产乱码久久久久久浪潮 | 国产福利精品一区二区| 国产成人精品三级麻豆| 成人一区在线看| 色先锋久久av资源部| 欧美人伦禁忌dvd放荡欲情| 欧美日韩激情一区| 亚洲精品一区二区三区影院| 精品国产伦一区二区三区观看方式 | 五月天中文字幕一区二区| 日本vs亚洲vs韩国一区三区二区| 理论片日本一区| 丁香一区二区三区| 欧洲精品在线观看| 91精品国产免费久久综合| 精品理论电影在线| 国产精品免费看片| 天天操天天综合网| 国产一区二区三区日韩| 色综合天天狠狠| 日韩无一区二区| 国产精品免费免费| 日韩**一区毛片| 国产精品69久久久久水密桃| 色综合久久天天| 精品国产露脸精彩对白| 中文字幕日韩一区| 日本不卡不码高清免费观看| 岛国av在线一区| 欧美日韩亚洲国产综合| 国产三级三级三级精品8ⅰ区| 亚洲码国产岛国毛片在线| 蜜桃一区二区三区在线| 97超碰欧美中文字幕| 欧美一级搡bbbb搡bbbb| 亚洲欧美另类小说| 国内外成人在线| 91高清视频免费看| 国产婷婷色一区二区三区| 亚洲午夜国产一区99re久久| 国产精品一级片在线观看| 欧美日韩在线电影| 国产精品久久久久久久久免费樱桃| 人人精品人人爱| 色狠狠一区二区| xnxx国产精品| 日韩国产欧美一区二区三区| 99在线精品免费| 久久综合九色综合97婷婷女人| 一区二区三区在线高清| 懂色av中文一区二区三区| 日韩一区二区电影网| 亚洲chinese男男1069| av中文字幕亚洲| 久久久久久久久久久99999| 亚洲成a人片综合在线| 91视频91自| 一色桃子久久精品亚洲| 国产黄人亚洲片| 日韩精品最新网址| 奇米四色…亚洲| 欧美日韩成人高清| 亚洲国产中文字幕在线视频综合| 99久久99久久免费精品蜜臀| 亚洲国产精品高清| 国产精品亚洲第一区在线暖暖韩国 | 国产午夜精品一区二区三区视频| 日韩精品91亚洲二区在线观看| 色老头久久综合| 成人欧美一区二区三区小说| 国产河南妇女毛片精品久久久| 精品国产成人在线影院| 久久精品久久99精品久久| 91精品国产综合久久精品图片| 亚洲国产一区视频| 欧美日韩久久一区| 日韩电影在线观看网站| 欧美精品在线一区二区| 天天射综合影视| 337p亚洲精品色噜噜| 日韩激情一二三区| 4438成人网| 美女性感视频久久| 日韩欧美在线影院| 经典一区二区三区| 久久久精品影视| 成人午夜在线视频| 中文字幕综合网| 在线观看国产精品网站| 亚洲成人av福利| 精品人伦一区二区色婷婷| 狠狠色丁香九九婷婷综合五月 | 国产精品麻豆一区二区| aaa国产一区| 亚洲免费在线视频一区 二区| 在线一区二区三区四区五区 | 精品国产一区久久| 国产在线视频一区二区三区| 国产天堂亚洲国产碰碰| 99久久精品免费| 亚洲高清免费观看| 日韩精品一区二区三区四区 | 91麻豆国产香蕉久久精品| 亚洲精品成人悠悠色影视| 欧美性感一区二区三区| 免费亚洲电影在线| 久久精品一区二区三区四区| 91视频观看视频| 男女性色大片免费观看一区二区| 久久精品男人天堂av| 色综合久久久久久久久久久| 日韩黄色小视频|