⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 handbook.htm

📁 国内一位牛人自己开发的操作系统
💻 HTM
📖 第 1 页 / 共 5 页
字号:
<p class="MsoNormalIndent" style="line-height: 125%"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
run_point point;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*ip,cs,flag,sp,ss */</span></p>
<p class="MsoNormalIndent" style="line-height: 125%"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
int (*function)(int thread_id,struct thread *t,</span></p>
<p class="MsoNormalIndent" style="line-height: 125%"><span lang="EN-US">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; struct return_stack *rt,struct thread_environment *env,</span></p>
<p class="MsoNormalIndent" style="line-height: 125%"><span lang="EN-US">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; union kernel_call_parameter *parameter);</span></p>
<p class="MsoNormalIndent" style="line-height: 125%"><span lang="EN-US">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
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 
&nbsp; ax&nbsp;&nbsp;&nbsp; system_call</span></p>
<p class="MsoNormalIndent" style="line-height: 125%"><span lang="EN-US">#define 
&nbsp; bx&nbsp;&nbsp;&nbsp; system_call_arg1</span></p>
<p class="MsoNormalIndent" style="line-height: 125%"><span lang="EN-US">#define 
&nbsp; cx&nbsp;&nbsp;&nbsp; system_call_arg2</span></p>
<p class="MsoNormalIndent" style="line-height: 125%"><span lang="EN-US">#define 
&nbsp; dx&nbsp;&nbsp;&nbsp; system_call_arg3</span></p>
<p class="MsoNormalIndent" style="line-height: 125%"><span lang="EN-US">#define 
&nbsp; si&nbsp;&nbsp;&nbsp;&nbsp; system_call_arg4</span></p>
<p class="MsoNormalIndent" style="line-height: 125%"><span lang="EN-US">#define 
&nbsp; di&nbsp;&nbsp;&nbsp;&nbsp; system_call_arg5</span></p>
<p class="MsoNormalIndent" style="line-height: 125%"><span lang="EN-US">#define 
&nbsp; bp&nbsp;&nbsp;&nbsp; system_call_arg6</span></p>
<p class="MsoNormalIndent" style="line-height: 125%"><span lang="EN-US">#define 
&nbsp; r7&nbsp;&nbsp;&nbsp; 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">&nbsp;</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">&nbsp;</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">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</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">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
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;&nbsp;&nbsp;&nbsp; </span></p>
<p class="MsoNormalIndent" style="line-height: 125%; margin-left: 21.0pt">
<span lang="EN-US">call_kernel(&amp;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">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</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-&gt;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 + -