📄 schedule.s
字号:
.file "schedule.c" .section .textLC0: .ascii "Error task_init()...\12\0".globl _task_init_task_init: pushl %ebp movl %esp, %ebp pushl %ebx subl $20, %esp movl $1, -12(%ebp)L2: movl -12(%ebp), %edx movl %edx, %eax sall $4, %eax addl %edx, %eax sall $3, %eax addl %edx, %eax sall $2, %eax movl _task(%eax), %eax cmpl $-1, %eax je L3 cmpl $2, -12(%ebp) setle %al incl -12(%ebp) testb %al, %al jne L2L3: cmpl $3, -12(%ebp) jne L5 subl $12, %esp pushl $LC0 call _print addl $16, %esp jmp L10L5: movl -12(%ebp), %edx movl _process_id, %ecx movl %ecx, %ebx movl %edx, %eax sall $4, %eax addl %edx, %eax sall $3, %eax addl %edx, %eax sall $2, %eax movl %ebx, _task(%eax) leal 1(%ecx), %eax movl %eax, _process_id movl -12(%ebp), %edx movl %edx, %eax sall $4, %eax addl %edx, %eax sall $3, %eax addl %edx, %eax sall $2, %eax movb $84, _task+4(%eax) movl -12(%ebp), %edx movl %edx, %eax sall $4, %eax addl %edx, %eax sall $3, %eax addl %edx, %eax sall $2, %eax movb $0, _task+5(%eax) movl -12(%ebp), %edx movl %edx, %eax sall $4, %eax addl %edx, %eax sall $3, %eax addl %edx, %eax sall $2, %eax movl $3, _task+20(%eax) movl -12(%ebp), %edx movl -12(%ebp), %eax sall $4, %eax addl $40, %eax movl %eax, %ecx movl %edx, %eax sall $4, %eax addl %edx, %eax sall $3, %eax addl %edx, %eax sall $2, %eax movl %ecx, _task+28(%eax) movl -12(%ebp), %edx movl -12(%ebp), %eax sall $4, %eax addl $32, %eax movl %eax, %ecx movl %edx, %eax sall $4, %eax addl %edx, %eax sall $3, %eax addl %edx, %eax sall $2, %eax movl %ecx, _task+32(%eax) movl __ldt0, %ecx movl -12(%ebp), %edx movl %edx, %eax sall $4, %eax addl %edx, %eax sall $3, %eax addl %edx, %eax sall $2, %eax addl $32, %eax addl $_task, %eax addl $4, %eax subl $4, %esp pushl $32 pushl %ecx pushl %eax call _memcopy addl $16, %esp movl __tss0, %ecx movl -12(%ebp), %edx movl %edx, %eax sall $4, %eax addl %edx, %eax sall $3, %eax addl %edx, %eax sall $2, %eax addl $64, %eax addl $_task, %eax addl $4, %eax subl $4, %esp pushl $104 pushl %ecx pushl %eax call _memcopy addl $16, %esp movl -12(%ebp), %edx movl 8(%ebp), %ecx movl %edx, %eax sall $4, %eax addl %edx, %eax sall $3, %eax addl %edx, %eax sall $2, %eax movl %ecx, _task+100(%eax) movl -12(%ebp), %edx movl -12(%ebp), %eax sall $4, %eax addl $40, %eax movl %eax, %ecx movl %edx, %eax sall $4, %eax addl %edx, %eax sall $3, %eax addl %edx, %eax sall $2, %eax movl %ecx, _task+164(%eax) movl -12(%ebp), %ecx movl -12(%ebp), %edx movl %edx, %eax sall $4, %eax addl %edx, %eax sall $3, %eax addl %edx, %eax sall $2, %eax addl $176, %eax addl $_task, %eax addl $115, %eax movl %eax, %edx movl %ecx, %eax sall $4, %eax addl %ecx, %eax sall $3, %eax addl %ecx, %eax sall $2, %eax movl %edx, _task+72(%eax) movl -12(%ebp), %ecx movl -12(%ebp), %edx movl %edx, %eax sall $4, %eax addl %edx, %eax sall $3, %eax addl %edx, %eax sall $2, %eax addl $288, %eax addl $_task, %eax addl $4, %eax addl $255, %eax movl %eax, %edx movl %ecx, %eax sall $4, %eax addl %ecx, %eax sall $3, %eax addl %ecx, %eax sall $2, %eax movl %edx, _task+124(%eax) movl -12(%ebp), %edx movl %edx, %eax sall $4, %eax addl %edx, %eax sall $3, %eax addl %edx, %eax sall $2, %eax addl $32, %eax addl $_task, %eax addl $4, %eax subl $8, %esp pushl %eax pushl -12(%ebp) call _set_ldt_desc addl $16, %esp movl -12(%ebp), %edx movl %edx, %eax sall $4, %eax addl %edx, %eax sall $3, %eax addl %edx, %eax sall $2, %eax addl $64, %eax addl $_task, %eax addl $4, %eax subl $8, %esp pushl %eax pushl -12(%ebp) call _set_tss_desc addl $16, %esp movl _p_ready, %eax testl %eax, %eax jne L8 movl -12(%ebp), %edx movl %edx, %eax sall $4, %eax addl %edx, %eax sall $3, %eax addl %edx, %eax sall $2, %eax addl $_task, %eax movl %eax, _p_ready movl _p_ready, %eax movl %eax, _p_head movl _p_ready, %edx movl _p_ready, %eax movl %eax, 172(%edx) jmp L10L8: movl _p_ready, %eax movl 172(%eax), %eax movl %eax, -8(%ebp) movl _p_ready, %ecx movl -12(%ebp), %edx movl %edx, %eax sall $4, %eax addl %edx, %eax sall $3, %eax addl %edx, %eax sall $2, %eax addl $_task, %eax movl %eax, 172(%ecx) movl _p_ready, %eax movl 172(%eax), %edx movl -8(%ebp), %eax movl %eax, 172(%edx)L10: movl -4(%ebp), %ebx leave ret.globl _do_timer_do_timer: pushl %ebp movl %esp, %ebp subl $8, %esp movl _p_ready, %eax testl %eax, %eax je L16 movl _p_current, %eax testl %eax, %eax je L14 movl _p_current, %eax movl 24(%eax), %edx decl %edx movl %edx, 24(%eax)L14: call _scheduleL16: leave ret.globl _schedule_schedule: pushl %ebp movl %esp, %ebp subl $16, %esp movl _p_current, %eax testl %eax, %eax je L18 movl _p_current, %eax movl 24(%eax), %eax testl %eax, %eax jns L21L18: movl _p_current, %eax movl %eax, _p_previous movl _p_ready, %eax movl %eax, _p_current movl _p_ready, %eax movl 172(%eax), %eax movl %eax, _p_ready movl _p_current, %eax movl $18, 24(%eax) movl _p_current, %eax movl 32(%eax), %edx/APP movl %edx,-4(%ebp) ljmp *-8(%ebp) /NO_APPL21: leave ret.comm _desc,1008.comm _task,1648.comm _process_id,16.comm _p_current,16.comm _p_previous,16.comm _p_ready,16.comm _p_head,16 .ident "GCC: (GNU) 4.2.1"
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -