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

📄 transit_code.asm

📁 uCosII是一个小型的多任务调度内核
💻 ASM
字号:

    AREA TRANSIT, CODE, READONLY

; Linker produced symbols

LR_Limit_Ptr    
    IMPORT	|Image$$ER_INIT$$Limit|
    DCD		|Image$$ER_INIT$$Limit| 
ER_RO_Start_Ptr
    IMPORT	|Image$$ER_RO$$Base|
    DCD		|Image$$ER_RO$$Base|
ER_RO_End_Ptr
    IMPORT	|Image$$ER_RO$$Limit|
    DCD		|Image$$ER_RO$$Limit|
ER_RW_RAM_Start_Ptr    
    IMPORT	|Image$$ER_RW$$Base|
    DCD		|Image$$ER_RW$$Base|
ER_RW_BSS_Start_Ptr    
    IMPORT	|Image$$ER_RW$$ZI$$Base|
    DCD		|Image$$ER_RW$$ZI$$Base|
ER_RW_BSS_End_Ptr    
    IMPORT	|Image$$ER_RW$$ZI$$Limit|
    DCD		|Image$$ER_RW$$ZI$$Limit|
    

;;    IMPORT    cinit
;;    IMPORT    _ld_bss_start
;;    IMPORT    _ld_bss_end

    EXPORT TCT_Transit_Code
TCT_Transit_Code

    ;copy initialized code and data in ROM to RAM
    LDR	    a1,=LR_Limit_Ptr
    LDR	    a1,[a1]
    LDR	    a2,=ER_RO_Start_Ptr
    LDR	    a2,[a2]
    LDR	    a4,=ER_RO_End_Ptr
    LDR	    a4,[a4]

    CMP	    a2,a4
    BEQ	    INT_RW_Copy

INT_ROM_Code_Copy
    CMP     a2,a4
    LDRCC   a3,[a1],#4
    STRCC   a3,[a2],#4
    BCC     INT_ROM_Code_Copy

INT_RW_Copy    
    LDR	    a2,=ER_RW_RAM_Start_Ptr
    LDR	    a2,[a2]
    LDR	    a4,=ER_RW_BSS_Start_Ptr
    LDR	    a4,[a4]
    
    CMP     a1,a2
    BEQ	    INT_BSS_Clear
    
INT_ROM_Vars_Copy
    CMP     a2,a4
    LDRCC   a3,[a1],#4
    STRCC   a3,[a2],#4
    BCC     INT_ROM_Vars_Copy
    
    ; Clear the un-initialized global and static C data areas.
INT_BSS_Clear
    LDR     r0,ER_RW_BSS_Start_Ptr            ; Pickup the start of the BSS area
    MOV     r2,#0                       ; Clear value in r2
    LDR     r1,ER_RW_BSS_End_Ptr              ; Pickup the end of the BSS area

INT_BSS_Clear_Loop        
    STR     r2,[r0],#4                  ; Clear a word

INT_BSS_Clear_Check        
    CMP     r0,r1                       ; Are the start and end equal?
    BNE     INT_BSS_Clear_Loop          ; If so, continue with BSS clear

    ; Perform auto-initialization.  if cinit is -1, then there is none.
;    LDR     r0, c_cinit
;    CMN     r0, #1
;    BLNE    _auto_init

    MOV      pc, lr

    END


⌨️ 快捷键说明

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