📄 handbook.htm
字号:
<p class="MsoNormalIndent" style="line-height: 125%"><span lang="EN-US">
run_point point; /*ip,cs,flag,sp,ss */</span></p>
<p class="MsoNormalIndent" style="line-height: 125%"><span lang="EN-US">
int (*function)(int thread_id,struct thread *t,</span></p>
<p class="MsoNormalIndent" style="line-height: 125%"><span lang="EN-US">
struct return_stack *rt,struct thread_environment *env,</span></p>
<p class="MsoNormalIndent" style="line-height: 125%"><span lang="EN-US">
union kernel_call_parameter *parameter);</span></p>
<p class="MsoNormalIndent" style="line-height: 125%"><span lang="EN-US">
union kernel_call_parameter parameter;</span></p>
<p class="MsoNormalIndent" style="line-height: 125%"><span lang="EN-US">};</span></p>
<p class="MsoNormalIndent" style="line-height: 125%"><span lang="EN-US">#define
ax system_call</span></p>
<p class="MsoNormalIndent" style="line-height: 125%"><span lang="EN-US">#define
bx system_call_arg1</span></p>
<p class="MsoNormalIndent" style="line-height: 125%"><span lang="EN-US">#define
cx system_call_arg2</span></p>
<p class="MsoNormalIndent" style="line-height: 125%"><span lang="EN-US">#define
dx system_call_arg3</span></p>
<p class="MsoNormalIndent" style="line-height: 125%"><span lang="EN-US">#define
si system_call_arg4</span></p>
<p class="MsoNormalIndent" style="line-height: 125%"><span lang="EN-US">#define
di system_call_arg5</span></p>
<p class="MsoNormalIndent" style="line-height: 125%"><span lang="EN-US">#define
bp system_call_arg6</span></p>
<p class="MsoNormalIndent" style="line-height: 125%"><span lang="EN-US">#define
r7 system_call_arg7</span></p>
<p class="MsoNormalIndent" style="line-height: 125%"><span lang="EN-US">typedef
struct thread_environment REG;</span></p>
<p class="MsoNormalIndent" style="line-height: 125%"><span lang="EN-US"> </span></p>
<p class="MsoNormalIndent" style="line-height: 125%">
<span style="font-family: 宋体">函数</span><span lang="EN-US">void
call_kernel(struct thread_environment *env)</span><span style="font-family: 宋体">的定义为(完全用内嵌汇编实现):</span></p>
<p class="MsoNormalIndent" style="line-height: 125%"><span lang="EN-US"> </span></p>
<p class="MsoNormalIndent" style="line-height: 125%"><span lang="EN-US">extern
void call_kernel(struct thread_environment *env)</span><span style="font-family: 宋体">;</span></p>
<h3 style="line-height: 125%"><!--mstheme--><font color="#666633"><span lang="EN-US">2.2</span><span style="font-family: 宋体">一个调用的内核中系统功能调用的例子</span><!--mstheme--></font></h3>
<p class="MsoNormalIndent" style="text-indent: -21.0pt; line-height: 125%; margin-left: 42.0pt">
<span lang="EN-US">1.<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7.0pt; font-family: Times New Roman">
</span></span><span style="font-family: 宋体">仅仅通过寄存器传递参数:</span></p>
<p class="MsoNormalIndent" style="line-height: 125%"><span lang="EN-US">
#include”../include/os.h”</span></p>
<p class="MsoNormalIndent" style="line-height: 125%"><span lang="EN-US">{</span></p>
<p class="MsoNormalIndent" style="line-height: 125%"><span lang="EN-US">
REG r;</span></p>
<p class="MsoNormalIndent" style="line-height: 125%; margin-left: 21.0pt">
<span lang="EN-US">r.ax=0;</span></p>
<p class="MsoNormalIndent" style="line-height: 125%; margin-left: 21.0pt">
<span lang="EN-US">r.bx=2; </span></p>
<p class="MsoNormalIndent" style="line-height: 125%; margin-left: 21.0pt">
<span lang="EN-US">call_kernel(&r);</span></p>
<p class="MsoNormalIndent" style="line-height: 125%; margin-left: 42.0pt">
<span lang="EN-US">/*</span><span style="font-family: 宋体">调用内核的</span><span lang="EN-US">0</span><span style="font-family: 宋体">号功能,执行线程迁移,线程迁移至</span><span lang="EN-US">2</span><span style="font-family: 宋体">号进程)</span><span lang="EN-US">
*/</span></p>
<p class="MsoNormalIndent" style="line-height: 125%"><span lang="EN-US">}</span></p>
<p class="MsoNormalIndent" style="text-indent: -21.0pt; line-height: 125%; margin-left: 42.0pt">
<span lang="EN-US">2.<span style="font-style: normal; font-variant: normal; font-weight: normal; font-size: 7.0pt; font-family: Times New Roman">
</span></span><span style="font-family: 宋体">通过寄存器传递参数,也通过内核参数区传递参数的例子</span></p>
<p class="MsoNormalIndent" style="line-height: 125%"><span lang="EN-US">
#include”../include/os.h”</span></p>
<p class="MsoNormalIndent" style="line-height: 125%"><span lang="EN-US">{</span></p>
<p class="MsoNormalIndent" style="line-height: 125%; margin-left: 21.0pt">
<span lang="EN-US">REG r;</span></p>
<p class="MsoNormalIndent" style="line-height: 125%; margin-left: 21.0pt">
<span lang="EN-US">union system_call_parameter *par;</span></p>
<p class="MsoNormalIndent" style="line-height: 125%; margin-left: 21.0pt">
<span lang="EN-US">par=get_kernel_parameter();</span></p>
<p class="MsoNormalIndent" style="line-height: 125%; margin-left: 21.0pt">
<span lang="EN-US">r.ax=22;</span></p>
<p class="MsoNormalIndent" style="line-height: 125%; margin-left: 21.0pt">
<span lang="EN-US">r.bx=0;</span></p>
<p class="MsoNormalIndent" style="line-height: 125%; margin-left: 21.0pt">
<span lang="EN-US">r.cx=0;</span></p>
<p class="MsoNormalIndent" style="line-height: 125%; margin-left: 21.0pt">
<span lang="EN-US">r.dx=0; </span></p>
<p class="MsoNormalIndent" style="line-height: 125%; margin-left: 21.0pt">
<span lang="EN-US">r.si=512; </span></p>
<p class="MsoNormalIndent" style="line-height: 125%; margin-left: 21.0pt">
<span lang="EN-US">r.di=READ_WRITE;</span></p>
<p class="MsoNormalIndent" style="line-height: 125%; margin-left: 21.0pt">
<span lang="EN-US">RESET_CAPABILITY(par->capability.capability_1); /*</span><span style="font-family: 宋体">设置参数区中的参数</span><span lang="EN-US">*</span><span style="font-family: 宋体">/</span></p>
<p class="MsoNormalIndent" style="text-indent: 42.0pt; line-height: 125%">
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -