⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dhry_1.s79

📁 ARM入门的好帮手.包含了从简单到相对较复杂的程序.
💻 S79
字号:
        NAME dhry_1

        RTMODEL "__code_model", "small"
        RTMODEL "__cpu_mode", "arm"
        RTMODEL "__data_model", "absolute"
        RTMODEL "__endian", "little"
        RTMODEL "__rt_version", "2"
        RTMODEL "__thumb_aware", "enabled"

        RSEG CSTACK:DATA:NOROOT(2)
        RSEG HUGE_Z:HUGEDATA:SORT:NOROOT(2)

        EXTERN Proc_7
        FUNCTION Proc_7,0202H
        EXTERN Proc_6
        FUNCTION Proc_6,0202H
        EXTERN malloc
        FUNCTION malloc,010202H
        EXTERN Func_1
        FUNCTION Func_1,0202H
        EXTERN Func_2
        FUNCTION Func_2,0202H
        EXTERN Proc_8
        FUNCTION Proc_8,0202H

        PUBWEAK ?init?tab?HUGE_Z
        PUBLIC Arr_1_Glob
        PUBLIC Arr_2_Glob
        PUBLIC Begin_Time
        PUBLIC Bool_Glob
        PUBLIC Ch_1_Glob
        PUBLIC Ch_2_Glob
        PUBLIC Dhrystones_Per_Second
        PUBLIC End_Time
        PUBLIC Int_Glob
        PUBLIC Microseconds
        PUBLIC Next_Ptr_Glob
        PUBLIC Proc_1
        FUNCTION Proc_1,0203H
        LOCFRAME CSTACK, 16, STACK
        PUBLIC Proc_2
        FUNCTION Proc_2,0203H
        LOCFRAME CSTACK, 4, STACK
        PUBLIC Proc_3
        FUNCTION Proc_3,0203H
        LOCFRAME CSTACK, 4, STACK
        PUBLIC Proc_4
        FUNCTION Proc_4,0203H
        PUBLIC Proc_5
        FUNCTION Proc_5,0203H
        PUBLIC Ptr_Glob
        PUBLIC Reg
        PUBLIC User_Time
        PUBLIC testloop
        FUNCTION testloop,0203H
        LOCFRAME CSTACK, 96, STACK

        RSEG HUGE_Z:HUGEDATA:SORT:NOROOT(2)
Arr_1_Glob:
	DS8 200
Ch_1_Glob:
	DS8 1
Ch_2_Glob:
	DS8 1
	DS8 2
Bool_Glob:
	DS8 4
Int_Glob:
	DS8 4
Next_Ptr_Glob:
	DS8 4
Ptr_Glob:
	DS8 4

        RSEG HUGE_Z:HUGEDATA:SORT:NOROOT(2)
Arr_2_Glob:
	DS8 10000

        RSEG HUGE_Z:HUGEDATA:SORT:NOROOT(2)
Reg:
	DS8 4

        RSEG HUGE_Z:HUGEDATA:SORT:NOROOT(2)
Begin_Time:
	DS8 4

        RSEG HUGE_Z:HUGEDATA:SORT:NOROOT(2)
End_Time:
	DS8 4

        RSEG HUGE_Z:HUGEDATA:SORT:NOROOT(2)
User_Time:
	DS8 4

        RSEG HUGE_Z:HUGEDATA:SORT:NOROOT(2)
Microseconds:
	DS8 4

        RSEG HUGE_Z:HUGEDATA:SORT:NOROOT(2)
Dhrystones_Per_Second:
	DS8 4

        RSEG NEARFUNC_A:CODE:NOROOT(2)
        
        CFI Names cfiNames0
        CFI StackFrame CFA SP HUGEDATA
        CFI Resource R0:32, R1:32, R2:32, R3:32, R4:32, R5:32, R6:32, R7:32
        CFI Resource R8:32, R9:32, R10:32, R11:32, R12:32, SP:32, LR:32
        CFI VirtualResource RET:32
        CFI EndNames cfiNames0
        
        CFI Common cfiCommon0 Using cfiNames0
        CFI CodeAlign 4
        CFI DataAlign 4
        CFI ReturnAddress RET CODE
        CFI CFA SP+0
        CFI R0 Undefined
        CFI R1 Undefined
        CFI R2 Undefined
        CFI R3 Undefined
        CFI R4 SameValue
        CFI R5 SameValue
        CFI R6 SameValue
        CFI R7 SameValue
        CFI R8 SameValue
        CFI R9 SameValue
        CFI R10 SameValue
        CFI R11 SameValue
        CFI R12 Undefined
        CFI LR Undefined
        CFI RET LR
        CFI EndCommon cfiCommon0
        
        CFI Block cfiBlock0 Using cfiCommon0
        CFI Function Proc_1
   CODE32   
Proc_1:
   STMDB    SP!,{R4-R6,LR}     ;; Push
        CFI RET Frame(CFA, -4)
        CFI R6 Frame(CFA, -8)
        CFI R5 Frame(CFA, -12)
        CFI R4 Frame(CFA, -16)
        CFI CFA SP+16
   MOV      R4,R0
   LDR      R0,[R4, #+0]
   MOV      R5,R0
   LDR      R6,??Proc_1_0      ;; #Arr_1_Glob
   LDR      R1,[R6, #+216]
   MOV      R3,#+0x30
??Proc_1_1:
   SUBS     R3,R3,#+0x4
   LDR      R2,[R1, R3]
   STR      R2,[R0, R3]
   BNE      ??Proc_1_1
   MOV      R0,#+0x5
   STR      R0,[R4, #+12]
   STR      R0,[R5, #+12]
   LDR      R0,[R4, #+0]
   STR      R0,[R5, #+0]
   MOV      R0,R5
   LDR      R1,[R6, #+216]
   CMP      R1,#+0x0
   LDRNE    R2,[R1, #+0]
   STRNE    R2,[R0, #+0]
   LDR      R0,[R6, #+216]
   ADD      R2,R0,#+0xC
   LDR      R1,[R6, #+208]
   MOV      R0,#+0xA
   BL       Proc_7
   LDRB     R0,[R5, #+4]
   CMP      R0,#+0x0
   BNE      ??Proc_1_2
   MOV      R0,#+0x6
   STR      R0,[R5, #+12]
   ADD      R1,R5,#+0x8
   LDRB     R0,[R4, #+8]
   BL       Proc_6
   LDR      R0,[R6, #+216]
   LDR      R1,[R0, #+0]
   STR      R1,[R5, #+0]
   ADD      R2,R5,#+0xC
   MOV      R1,#+0xA
   LDR      R0,[R5, #+12]
   BL       Proc_7
   LDMIA    SP!,{R4-R6,PC}     ;; return
??Proc_1_2:
   LDR      R0,[R4, #+0]
   MOV      R2,#+0x30
??Proc_1_3:
   SUBS     R2,R2,#+0x4
   LDR      R1,[R0, R2]
   STR      R1,[R4, R2]
   BNE      ??Proc_1_3
   LDMIA    SP!,{R4-R6,PC}     ;; return
   DATA     
??Proc_1_0:
   DC32     Arr_1_Glob
        CFI EndBlock cfiBlock0

        RSEG NEARFUNC_A:CODE:NOROOT(2)
        CFI Block cfiBlock1 Using cfiCommon0
        CFI Function Proc_2
   CODE32   
Proc_2:
   STMDB    SP!,{R4}           ;; Push
        CFI R4 Frame(CFA, -4)
        CFI CFA SP+4
   LDR      R2,[R0, #+0]
   ADD      R2,R2,#+0xA
   LDR      R3,??Proc_2_0      ;; #Arr_1_Glob
   LDRB     R4,[R3, #+200]
   CMP      R4,#+0x41
   BNE      ??Proc_2_1
   SUB      R1,R2,#+0x1
   LDR      R2,[R3, #+208]
   SUB      R1,R1,R2
   STR      R1,[R0, #+0]
   B        ??Proc_2_2
??Proc_2_1:
   AND      R1,R1,#+0xFF       ;; Zero extend
   CMP      R1,#+0x0
   BNE      ??Proc_2_1
??Proc_2_2:
   LDMIA    SP!,{R4}           ;; Pop
        CFI R4 SameValue
        CFI CFA SP+0
   MOV      PC,LR              ;; return
   DATA     
??Proc_2_0:
   DC32     Arr_1_Glob
        CFI EndBlock cfiBlock1

        RSEG NEARFUNC_A:CODE:REORDER:NOROOT(2)
        CFI Block cfiBlock2 Using cfiCommon0
        CFI Function Proc_3
   CODE32   
Proc_3:
   STMDB    SP!,{LR}           ;; Push
        CFI RET Frame(CFA, -4)
        CFI CFA SP+4
   LDR      R3,??Proc_3_0      ;; #Arr_1_Glob
   LDR      R1,[R3, #+216]
   CMP      R1,#+0x0
   LDRNE    R2,[R1, #+0]
   STRNE    R2,[R0, #+0]
   LDR      R0,[R3, #+216]
   ADD      R2,R0,#+0xC
   LDR      R1,[R3, #+208]
   MOV      R0,#+0xA
   BL       Proc_7
   LDMIA    SP!,{PC}           ;; return
   DATA     
??Proc_3_0:
   DC32     Arr_1_Glob
        CFI EndBlock cfiBlock2

        RSEG NEARFUNC_A:CODE:REORDER:NOROOT(2)
        CFI Block cfiBlock3 Using cfiCommon0
        CFI Function Proc_4
   CODE32   
Proc_4:
   LDR      R0,??Proc_4_0      ;; #Arr_1_Glob
   LDRB     R1,[R0, #+200]
   CMP      R1,#+0x41
   MOVEQ    R1,#+0x1
   MOVNE    R1,#+0x0
   MOV      R2,R1
   LDR      R1,[R0, #+204]
   ORR      R1,R1,R2
   STR      R1,[R0, #+204]
   MOV      R1,#+0x42
   STRB     R1,[R0, #+201]
   MOV      PC,LR              ;; return
   DATA     
??Proc_4_0:
   DC32     Arr_1_Glob
        CFI EndBlock cfiBlock3

        RSEG NEARFUNC_A:CODE:REORDER:NOROOT(2)
        CFI Block cfiBlock4 Using cfiCommon0
        CFI Function Proc_5
   CODE32   
Proc_5:
   LDR      R0,??Proc_5_0      ;; #Arr_1_Glob
   MOV      R1,#+0x41
   STRB     R1,[R0, #+200]
   MOV      R1,#+0x0
   STR      R1,[R0, #+204]
   MOV      PC,LR              ;; return
   DATA     
??Proc_5_0:
   DC32     Arr_1_Glob
        CFI EndBlock cfiBlock4

        RSEG NEARFUNC_A:CODE:NOROOT(2)
        CFI Block cfiBlock5 Using cfiCommon0
        CFI Function testloop
   CODE32   
testloop:
   STMDB    SP!,{R4-R9,LR}     ;; Push
        CFI RET Frame(CFA, -4)
        CFI R9 Frame(CFA, -8)
        CFI R8 Frame(CFA, -12)
        CFI R7 Frame(CFA, -16)
        CFI R6 Frame(CFA, -20)
        CFI R5 Frame(CFA, -24)
        CFI R4 Frame(CFA, -28)
        CFI CFA SP+28
   SUB      SP,SP,#+0x44
        CFI CFA SP+96
   MOV      R4,R0
   LDR      R5,??testloop_0    ;; #Arr_1_Glob
   MOV      R0,#+0x30
   BL       malloc
   STR      R0,[R5, #+212]
   MOV      R0,#+0x30
   BL       malloc
   STR      R0,[R5, #+216]
   LDR      R0,[R5, #+212]
   LDR      R1,[R5, #+216]
   STR      R0,[R1, #+0]
   MOV      R0,#+0x0
   LDR      R1,[R5, #+216]
   STRB     R0,[R1, #+4]
   MOV      R0,#+0x2
   LDR      R1,[R5, #+216]
   STRB     R0,[R1, #+8]
   MOV      R0,#+0x28
   LDR      R1,[R5, #+216]
   STR      R0,[R1, #+12]
   LDR      R0,??testloop_0+4  ;; #`?<Constant "DHRYSTONE PROGRAM, SO...">`
   LDR      R1,[R5, #+216]
   ADD      R1,R1,#+0x10
??testloop_1:
   LDRB     R2,[R0], #+1
   STRB     R2,[R1], #+1
   CMP      R2,#+0x0
   BNE      ??testloop_1
   LDR      R0,??testloop_0+8  ;; #`?<Constant "DHRYSTONE PROGRAM, 1\\'...">`
   ADD      R1,SP,#+0x24
??testloop_2:
   LDRB     R2,[R0], #+1
   STRB     R2,[R1], #+1
   CMP      R2,#+0x0
   BNE      ??testloop_2
   LDR      R6,??testloop_0+12  ;; #Arr_2_Glob
   MOV      R0,#+0xA
   STR      R0,[R6, #+1628]
   MOV      R7,#+0x1
   B        ??testloop_3
??testloop_4:
   LDRB     R9,[SP, #+4]
   MOV      R1,#+0x43
   MOV      R0,R8
   BL       Func_1
   AND      R0,R0,#+0xFF       ;; Zero extend
   CMP      R9,R0
   BNE      ??testloop_5
   ADD      R1,SP,#+0x4
   MOV      R0,#+0x0
   BL       Proc_6
   LDR      R0,??testloop_0+16  ;; #`?<Constant "DHRYSTONE PROGRAM, 3\\'...">`
   ADD      R1,SP,#+0x5
??testloop_6:
   LDRB     R2,[R0], #+1
   STRB     R2,[R1], #+1
   CMP      R2,#+0x0
   BNE      ??testloop_6
   STR      R7,[R5, #+208]
??testloop_5:
   ADD      R8,R8,#+0x1
??testloop_7:
   LDRB     R0,[R5, #+201]
   AND      R8,R8,#+0xFF       ;; Zero extend
   CMP      R0,R8
   BCS      ??testloop_4
   LDRB     R1,[R5, #+200]
   CMP      R1,#+0x41
   BEQ      ??testloop_8
??testloop_9:
   AND      R0,R0,#+0xFF       ;; Zero extend
   CMP      R0,#+0x0
   BNE      ??testloop_9
??testloop_8:
   ADD      R7,R7,#+0x1
??testloop_3:
   CMP      R4,R7
   BLT      ??testloop_10
   MOV      R0,#+0x41
   STRB     R0,[R5, #+200]
   MOV      R0,#+0x1
   STR      R0,[R5, #+204]
   MOV      R0,#+0x42
   STRB     R0,[R5, #+201]
   LDR      R0,??testloop_0+20  ;; #`?<Constant "DHRYSTONE PROGRAM, 2\\'...">`
   ADD      R1,SP,#+0x5
??testloop_11:
   LDRB     R2,[R0], #+1
   STRB     R2,[R1], #+1
   CMP      R2,#+0x0
   BNE      ??testloop_11
   MOV      R0,#+0x1
   STRB     R0,[SP, #+4]
   ADD      R1,SP,#+0x5
   ADD      R0,SP,#+0x24
   BL       Func_2
   CMP      R0,#+0x0
   MOVEQ    R0,#+0x1
   MOVNE    R0,#+0x0
   STR      R0,[R5, #+204]
   MOV      R0,#+0x7
   STR      R0,[SP, #+0]
   MOV      R2,SP
   MOV      R1,#+0x3
   MOV      R0,#+0x2
   BL       Proc_7
   LDR      R3,[SP, #+0]
   MOV      R2,#+0x3
   MOV      R1,R6
   MOV      R0,R5
   BL       Proc_8
   LDR      R0,[R5, #+216]
   BL       Proc_1
   MOV      R8,#+0x41
   B        ??testloop_7
??testloop_10:
   ADD      SP,SP,#+0x44       ;; stack cleaning
        CFI CFA SP+28
   LDMIA    SP!,{R4-R9,PC}     ;; return
   DATA     
??testloop_0:
   DC32     Arr_1_Glob
   DC32     `?<Constant "DHRYSTONE PROGRAM, SO...">`
   DC32     `?<Constant "DHRYSTONE PROGRAM, 1\\'...">`
   DC32     Arr_2_Glob
   DC32     `?<Constant "DHRYSTONE PROGRAM, 3\\'...">`
   DC32     `?<Constant "DHRYSTONE PROGRAM, 2\\'...">`
        CFI EndBlock cfiBlock5

        RSEG HUGE_C:HUGECONST:SORT:NOROOT(0)
`?<Constant "DHRYSTONE PROGRAM, SO...">`:
	DC8 "DHRYSTONE PROGRAM, SOME STRING"

        RSEG HUGE_C:HUGECONST:SORT:NOROOT(0)
`?<Constant "DHRYSTONE PROGRAM, 1\\'...">`:
	DC8 "DHRYSTONE PROGRAM, 1'ST STRING"

        RSEG HUGE_C:HUGECONST:SORT:NOROOT(0)
`?<Constant "DHRYSTONE PROGRAM, 2\\'...">`:
	DC8 "DHRYSTONE PROGRAM, 2'ND STRING"

        RSEG HUGE_C:HUGECONST:SORT:NOROOT(0)
`?<Constant "DHRYSTONE PROGRAM, 3\\'...">`:
	DC8 "DHRYSTONE PROGRAM, 3'RD STRING"

        RSEG INITTAB:CODE:ROOT(2)
?init?tab?HUGE_Z:
   DCD      sfe(HUGE_Z) - sfb(HUGE_Z), sfb(HUGE_Z), sfb(HUGE_Z)

        END
; 
;    124 bytes in segment HUGE_C    
; 10 244 bytes in segment HUGE_Z    
;     12 bytes in segment INITTAB   
;    864 bytes in segment NEARFUNC_A
; 
;    864 bytes of CODE      memory (+ 12 bytes shared)
;    124 bytes of HUGECONST memory
; 10 244 bytes of HUGEDATA  memory
;
;Errors: none
;Warnings: none

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -