关于lab5最后,创建好用户线程返回用户态后在initcode.s里的一些疑问
匿名2023/07/31 11:54:21提问
    logisticsstudentunanswered
402

想请教下大家,这段代码的作用是什么啊。在之前load_icode里设置好用户栈之后(把argc和argc依次装入用户栈),然后把tf的esp设置为相应的用户stacktop,按理说系统调用返回的时候用户栈的结构已经是维护好了,可以进入umain运行。

但为什么还要有这一段代码呢,在piazza上之前看到相关的回答,但还是不太清楚其中的机制

https://piazza.com/class/i5j09fnsl7k5x0

以下是代码

.globl _start
_start:
    # set ebp for backtrace
    movl $0x0, %ebp
# load argc and argv
movl (%esp), %ebx
lea 0x4(%esp), %ecx


# move down the esp register
# since it may cause page fault in backtrace
subl $0x20, %esp

# save argc and argv on stack
pushl %ecx
pushl %ebx

# call user-program function
call umain

1: jmp 1b

回答(0)
    推荐问答
      Simple Empty
      暂无数据