|
|
|
@ -1057,7 +1057,7 @@ handle_syscall()函数的定义也在kernel/strap.c文件中:
|
|
|
|
|
|
|
|
|
|
但是,做实验的时候,需要读者思考在handle_syscall()函数中调用do_syscall()函数,后者的参数怎么办?毕竟有8个long类型(因为我们的机器是RV64G,long类型占据8个字节)的参数,另外,do_syscall()函数的返回值怎么处理?毕竟do_syscall()函数有一个long类型的返回值,而这个返回值是要通知应用程序它发出的系统调用是否成功的。
|
|
|
|
|
|
|
|
|
|
除了实验内容之外,在handle_syscall()函数的第19行,有一个`tf->epc += 4;`语句,**这里请读者思考为什么要将tf->epc的值进行加4处理?**这个问题请结合你对RISC-V指令集架构的理解,以及系统调用的原理回答。另外,**我们的PKE操作系统内核是如何得到应用程序中“hello world!”字符串的地址的呢**?
|
|
|
|
|
除了实验内容之外,在handle_syscall()函数的第19行,有一个`tf->epc += 4;`语句,**这里请读者思考为什么要将tf->epc的值进行加4处理**?这个问题请结合你对RISC-V指令集架构的理解,以及系统调用的原理回答。另外,**我们的PKE操作系统内核是如何得到应用程序中“hello world!”字符串的地址的呢**?
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|