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

📄 main.c.s

📁 ADSV1.2可以编译的早期linux版本
💻 S
字号:
; generated by ARM C Compiler, ADS1.2 [Build 805]

; commandline [-O0 -browseinfo "0xff
" -S   -g+ -apcs /interwork -fk -J:cw:]
        CODE32

        AREA ||.text||, CODE, READONLY

Task1 PROC
        STMFD    sp!,{r4,lr}
        MOV      r4,#1
        MOV      r1,r4
        ADR      r0,|L1.28|
        BL       printk
        NOP      
|L1.24|
        B        |L1.24|
|L1.28|
        DCB      "task"
        DCB      "1 a="
        DCB      "%d\r\n"
        DCB      "\0\0\0\0"
        ENDP

Task0 PROC
        STMFD    sp!,{r3,lr}
        ADR      r0,|L1.124|
        BL       printk
        BL       _sys_fork
        CMP      r0,#0
        BNE      |L1.80|
        ADR      r0,|L1.132|
        BL       out
        BL       Task1
|L1.80|
        ADR      r0,|L1.140|
        BL       out
        LDR      r0,|L1.152|
        LDR      r1,|L1.156|
        LDR      r1,[r1,#0]  ; last_pid
        LDR      r0,[r0,r1,LSL #2]
        LDR      r1,|L1.160|
        STR      r0,[r1,#0]  ; next
        BL       switch_to
        NOP      
|L1.120|
        B        |L1.120|
|L1.124|
        DCB      "task"
        DCB      "0\r\n\0"
|L1.132|
        DCB      "sun\r"
        DCB      "\n\0\0\0"
|L1.140|
        DCB      "fath"
        DCB      "er\r\n"
        DCB      "\0\0\0\0"
|L1.152|
        DCD      task
|L1.156|
        DCD      last_pid
|L1.160|
        DCD      next
        ENDP

start_kernel PROC
        STMFD    sp!,{r3,lr}
        BL       mem_init
        BL       trap_init
        BL       time_init
        BL       sched_init
        LDR      r0,|L1.272|
        LDR      r0,[r0,#0]  ; task_stack0
        LDR      r1,|L1.276|
        STR      r0,[r1,#0]  ; task0
        LDR      r0,|L1.272|
        LDR      r0,[r0,#0]  ; task_stack0
        ADD      r0,r0,#0x700
        ADD      r0,r0,#0xff
        LDR      r1,|L1.276|
        STR      r0,[r1,#4]  ; task0
        MOV      r0,#0x55
        LDR      r1,|L1.272|
        LDR      r1,[r1,#0]  ; task_stack0
        STRB     r0,[r1,#0]
        LDR      r1,|L1.280|
        LDR      r0,|L1.272|
        LDR      r0,[r0,#0]  ; task_stack0
        ADD      r0,r0,#0x700
        ADD      r0,r0,#0xff
        BL       move_to_user_mode
        LDMFD    sp!,{r3,lr}
        BX       lr
|L1.272|
        DCD      task_stack0
|L1.276|
        DCD      task0
|L1.280|
        DCD      Task0
        ENDP



        AREA ||.data||, DATA, ALIGN=2

||.data$0||
task_stack0
        DCD      stack0


        AREA ||.bss||, NOINIT, ALIGN=2

stack0
||.bss$2||
        % 2048


        EXPORT start_kernel
        EXPORT Task0
        EXPORT Task1
        EXPORT stack0
        EXPORT task_stack0

        IMPORT move_to_user_mode
        IMPORT task0
        IMPORT sched_init
        IMPORT time_init
        IMPORT trap_init
        IMPORT mem_init
        IMPORT switch_to
        IMPORT next
        IMPORT last_pid
        IMPORT task
        IMPORT out
        IMPORT _sys_fork
        IMPORT printk
        IMPORT ||Lib$$Request$$armlib||, WEAK

        KEEP ||BuildAttributes$$THUMB_ISAv1$M$PE$A:L22$X:L11$S22$IW$USESV6$~STKCKD$USESV7$~SHL$OSPACE$PRES8||
||BuildAttributes$$THUMB_ISAv1$M$PE$A:L22$X:L11$S22$IW$USESV6$~STKCKD$USESV7$~SHL$OSPACE$PRES8|| EQU 0

        ASSERT {ENDIAN} = "little"
        ASSERT {SWST} = {FALSE}
        ASSERT {NOSWST} = {TRUE}
        ASSERT {INTER} = {TRUE}
        ASSERT {ROPI} = {FALSE}
        ASSERT {RWPI} = {FALSE}
        ASSERT {NOT_SHL} = {TRUE}
        ASSERT {FULL_IEEE} = {FALSE}
        ASSERT {SHL1} = {FALSE}
        ASSERT {SHL2} = {FALSE}
        END

⌨️ 快捷键说明

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