想请教下大家,这段代码的作用是什么啊。在之前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