📄 main.c.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 + -