2798 lines
106 KiB
HTML
2798 lines
106 KiB
HTML
<html>
|
||
|
||
<head>
|
||
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
|
||
<meta name=Generator content="Microsoft Word 14 (filtered)">
|
||
<style>
|
||
<!--
|
||
/* Font Definitions */
|
||
@font-face
|
||
{font-family:Wingdings;
|
||
panose-1:5 0 0 0 0 0 0 0 0 0;}
|
||
@font-face
|
||
{font-family:宋体;
|
||
panose-1:2 1 6 0 3 1 1 1 1 1;}
|
||
@font-face
|
||
{font-family:黑体;
|
||
panose-1:2 1 6 9 6 1 1 1 1 1;}
|
||
@font-face
|
||
{font-family:黑体;
|
||
panose-1:2 1 6 9 6 1 1 1 1 1;}
|
||
@font-face
|
||
{font-family:方正小标宋简体;}
|
||
@font-face
|
||
{font-family:"\@黑体";
|
||
panose-1:2 1 6 9 6 1 1 1 1 1;}
|
||
@font-face
|
||
{font-family:"\@宋体";
|
||
panose-1:2 1 6 0 3 1 1 1 1 1;}
|
||
@font-face
|
||
{font-family:"\@方正小标宋简体";}
|
||
/* Style Definitions */
|
||
p.MsoNormal, li.MsoNormal, div.MsoNormal
|
||
{margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
font-size:10.5pt;
|
||
font-family:宋体;}
|
||
h1
|
||
{mso-style-link:"标题 1 Char";
|
||
margin-top:17.0pt;
|
||
margin-right:0cm;
|
||
margin-bottom:16.5pt;
|
||
margin-left:7.2pt;
|
||
text-align:center;
|
||
text-indent:-7.2pt;
|
||
page-break-after:avoid;
|
||
font-size:22.0pt;
|
||
font-family:"Times New Roman","serif";
|
||
font-weight:bold;}
|
||
h2
|
||
{mso-style-link:"标题 2 Char";
|
||
margin-top:13.0pt;
|
||
margin-right:0cm;
|
||
margin-bottom:13.0pt;
|
||
margin-left:0cm;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
text-indent:0cm;
|
||
page-break-after:avoid;
|
||
font-size:16.0pt;
|
||
font-family:"Arial","sans-serif";
|
||
font-weight:bold;}
|
||
h3
|
||
{mso-style-link:"标题 3 Char";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
text-indent:0cm;
|
||
page-break-after:avoid;
|
||
font-size:14.0pt;
|
||
font-family:"Arial","sans-serif";
|
||
font-weight:bold;}
|
||
h4
|
||
{mso-style-link:"标题 4 Char";
|
||
margin-top:0cm;
|
||
margin-right:0cm;
|
||
margin-bottom:0cm;
|
||
margin-left:28.8pt;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
text-indent:-28.8pt;
|
||
page-break-after:avoid;
|
||
font-size:12.0pt;
|
||
font-family:"Arial","sans-serif";
|
||
font-weight:bold;}
|
||
h5
|
||
{mso-style-link:"标题 5 Char";
|
||
margin-top:14.0pt;
|
||
margin-right:0cm;
|
||
margin-bottom:14.5pt;
|
||
margin-left:36.0pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
text-indent:-36.0pt;
|
||
line-height:156%;
|
||
page-break-after:avoid;
|
||
font-size:14.0pt;
|
||
font-family:"Times New Roman","serif";
|
||
font-weight:bold;}
|
||
h6
|
||
{mso-style-link:"标题 6 Char";
|
||
margin-top:12.0pt;
|
||
margin-right:0cm;
|
||
margin-bottom:3.2pt;
|
||
margin-left:43.2pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
text-indent:-43.2pt;
|
||
line-height:133%;
|
||
page-break-after:avoid;
|
||
font-size:12.0pt;
|
||
font-family:"Arial","sans-serif";
|
||
font-weight:bold;}
|
||
p.MsoHeading7, li.MsoHeading7, div.MsoHeading7
|
||
{mso-style-link:"标题 7 Char";
|
||
margin-top:12.0pt;
|
||
margin-right:0cm;
|
||
margin-bottom:3.2pt;
|
||
margin-left:50.4pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
text-indent:-50.4pt;
|
||
line-height:133%;
|
||
page-break-after:avoid;
|
||
font-size:12.0pt;
|
||
font-family:"Times New Roman","serif";
|
||
font-weight:bold;}
|
||
p.MsoHeading8, li.MsoHeading8, div.MsoHeading8
|
||
{mso-style-link:"标题 8 Char";
|
||
margin-top:12.0pt;
|
||
margin-right:0cm;
|
||
margin-bottom:3.2pt;
|
||
margin-left:57.6pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
text-indent:-72.0pt;
|
||
line-height:133%;
|
||
page-break-after:avoid;
|
||
font-size:12.0pt;
|
||
font-family:"Arial","sans-serif";}
|
||
p.MsoHeading9, li.MsoHeading9, div.MsoHeading9
|
||
{mso-style-link:"标题 9 Char";
|
||
margin-top:12.0pt;
|
||
margin-right:0cm;
|
||
margin-bottom:3.2pt;
|
||
margin-left:64.8pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
text-indent:-79.2pt;
|
||
line-height:133%;
|
||
page-break-after:avoid;
|
||
font-size:10.0pt;
|
||
font-family:"Arial","sans-serif";}
|
||
p.MsoIndex1, li.MsoIndex1, div.MsoIndex1
|
||
{margin-top:0cm;
|
||
margin-right:0cm;
|
||
margin-bottom:0cm;
|
||
margin-left:10.5pt;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
text-indent:-10.5pt;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.MsoIndex2, li.MsoIndex2, div.MsoIndex2
|
||
{margin-top:0cm;
|
||
margin-right:0cm;
|
||
margin-bottom:0cm;
|
||
margin-left:21.0pt;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
text-indent:-10.5pt;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.MsoIndex3, li.MsoIndex3, div.MsoIndex3
|
||
{margin-top:0cm;
|
||
margin-right:0cm;
|
||
margin-bottom:0cm;
|
||
margin-left:31.5pt;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
text-indent:-10.5pt;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.MsoIndex4, li.MsoIndex4, div.MsoIndex4
|
||
{margin-top:0cm;
|
||
margin-right:0cm;
|
||
margin-bottom:0cm;
|
||
margin-left:42.0pt;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
text-indent:-10.5pt;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.MsoIndex5, li.MsoIndex5, div.MsoIndex5
|
||
{margin-top:0cm;
|
||
margin-right:0cm;
|
||
margin-bottom:0cm;
|
||
margin-left:52.5pt;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
text-indent:-10.5pt;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.MsoIndex6, li.MsoIndex6, div.MsoIndex6
|
||
{margin-top:0cm;
|
||
margin-right:0cm;
|
||
margin-bottom:0cm;
|
||
margin-left:63.0pt;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
text-indent:-10.5pt;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.MsoIndex7, li.MsoIndex7, div.MsoIndex7
|
||
{margin-top:0cm;
|
||
margin-right:0cm;
|
||
margin-bottom:0cm;
|
||
margin-left:73.5pt;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
text-indent:-10.5pt;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.MsoIndex8, li.MsoIndex8, div.MsoIndex8
|
||
{margin-top:0cm;
|
||
margin-right:0cm;
|
||
margin-bottom:0cm;
|
||
margin-left:84.0pt;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
text-indent:-10.5pt;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.MsoIndex9, li.MsoIndex9, div.MsoIndex9
|
||
{margin-top:0cm;
|
||
margin-right:0cm;
|
||
margin-bottom:0cm;
|
||
margin-left:94.5pt;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
text-indent:-10.5pt;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.MsoToc1, li.MsoToc1, div.MsoToc1
|
||
{margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";
|
||
font-weight:bold;}
|
||
p.MsoToc2, li.MsoToc2, div.MsoToc2
|
||
{margin-top:0cm;
|
||
margin-right:0cm;
|
||
margin-bottom:0cm;
|
||
margin-left:21.0pt;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.MsoToc3, li.MsoToc3, div.MsoToc3
|
||
{margin-top:0cm;
|
||
margin-right:0cm;
|
||
margin-bottom:0cm;
|
||
margin-left:42.0pt;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.MsoToc4, li.MsoToc4, div.MsoToc4
|
||
{margin-top:0cm;
|
||
margin-right:0cm;
|
||
margin-bottom:0cm;
|
||
margin-left:31.5pt;
|
||
margin-bottom:.0001pt;
|
||
font-size:9.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.MsoToc5, li.MsoToc5, div.MsoToc5
|
||
{margin-top:0cm;
|
||
margin-right:0cm;
|
||
margin-bottom:0cm;
|
||
margin-left:42.0pt;
|
||
margin-bottom:.0001pt;
|
||
font-size:9.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.MsoToc6, li.MsoToc6, div.MsoToc6
|
||
{margin-top:0cm;
|
||
margin-right:0cm;
|
||
margin-bottom:0cm;
|
||
margin-left:52.5pt;
|
||
margin-bottom:.0001pt;
|
||
font-size:9.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.MsoToc7, li.MsoToc7, div.MsoToc7
|
||
{margin-top:0cm;
|
||
margin-right:0cm;
|
||
margin-bottom:0cm;
|
||
margin-left:63.0pt;
|
||
margin-bottom:.0001pt;
|
||
font-size:9.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.MsoToc8, li.MsoToc8, div.MsoToc8
|
||
{margin-top:0cm;
|
||
margin-right:0cm;
|
||
margin-bottom:0cm;
|
||
margin-left:73.5pt;
|
||
margin-bottom:.0001pt;
|
||
font-size:9.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.MsoToc9, li.MsoToc9, div.MsoToc9
|
||
{margin-top:0cm;
|
||
margin-right:0cm;
|
||
margin-bottom:0cm;
|
||
margin-left:84.0pt;
|
||
margin-bottom:.0001pt;
|
||
font-size:9.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.MsoFootnoteText, li.MsoFootnoteText, div.MsoFootnoteText
|
||
{mso-style-link:"脚注文本 Char";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
layout-grid-mode:char;
|
||
font-size:9.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.MsoCommentText, li.MsoCommentText, div.MsoCommentText
|
||
{mso-style-link:"批注文字 Char";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.MsoHeader, li.MsoHeader, div.MsoHeader
|
||
{mso-style-link:"页眉 Char";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
layout-grid-mode:char;
|
||
border:none;
|
||
padding:0cm;
|
||
font-size:9.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.MsoFooter, li.MsoFooter, div.MsoFooter
|
||
{mso-style-link:"页脚 Char";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
layout-grid-mode:char;
|
||
font-size:9.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.MsoIndexHeading, li.MsoIndexHeading, div.MsoIndexHeading
|
||
{mso-style-name:"索引标题\,索引类目\,索引类目1\,索引类目2";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.MsoCaption, li.MsoCaption, div.MsoCaption
|
||
{margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
font-size:10.0pt;
|
||
font-family:"Arial","sans-serif";}
|
||
p.MsoTof, li.MsoTof, div.MsoTof
|
||
{margin-top:0cm;
|
||
margin-right:0cm;
|
||
margin-bottom:0cm;
|
||
margin-left:42.0pt;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
text-indent:-21.0pt;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
span.MsoFootnoteReference
|
||
{vertical-align:super;}
|
||
p.MsoList, li.MsoList, div.MsoList
|
||
{margin-top:0cm;
|
||
margin-right:0cm;
|
||
margin-bottom:0cm;
|
||
margin-left:21.0pt;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
text-indent:-21.0pt;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.MsoList2, li.MsoList2, div.MsoList2
|
||
{margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.MsoList4, li.MsoList4, div.MsoList4
|
||
{margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.MsoDate, li.MsoDate, div.MsoDate
|
||
{mso-style-link:"日期 Char";
|
||
margin-top:0cm;
|
||
margin-right:0cm;
|
||
margin-bottom:0cm;
|
||
margin-left:5.0pt;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
a:link, span.MsoHyperlink
|
||
{mso-style-name:"超链接\,超级链接";
|
||
color:blue;
|
||
text-decoration:underline;}
|
||
a:visited, span.MsoHyperlinkFollowed
|
||
{color:purple;
|
||
text-decoration:underline;}
|
||
p
|
||
{mso-style-name:"普通\(网站\)\,普通 \(Web\)\,普通 \(Web\)1\,普通 \(Web\)2\,普通 \(Web\)3";
|
||
margin-right:0cm;
|
||
margin-left:0cm;
|
||
font-size:12.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
pre
|
||
{mso-style-name:"HTML 预设格式\,HTML 预先格式化\,HTML 预先格式化1\,HTML 预先格式化2\,HTML 预先格式化3";
|
||
mso-style-link:"HTML 预设格式 Char\,HTML 预先格式化 Char\,HTML 预先格式化1 Char\,HTML 预先格式化2 Char\,HTML 预先格式化3 Char";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
font-size:12.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
tt
|
||
{font-family:黑体;}
|
||
p.MsoCommentSubject, li.MsoCommentSubject, div.MsoCommentSubject
|
||
{mso-style-link:"批注主题 Char";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";
|
||
font-weight:bold;}
|
||
p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
|
||
{mso-style-link:"批注框文本 Char";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
font-size:9.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.1, li.1, div.1
|
||
{mso-style-name:样式1;
|
||
margin-top:0cm;
|
||
margin-right:0cm;
|
||
margin-bottom:0cm;
|
||
margin-left:21.0pt;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
text-indent:-21.0pt;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.a, li.a, div.a
|
||
{mso-style-name:代码程序;
|
||
mso-style-link:"代码程序 Char";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
font-size:10.0pt;
|
||
font-family:宋体;}
|
||
span.Char
|
||
{mso-style-name:"代码程序 Char";
|
||
mso-style-link:代码程序;
|
||
font-family:宋体;}
|
||
p.a0, li.a0, div.a0
|
||
{mso-style-name:图说明;
|
||
mso-style-link:"图说明 Char";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
span.Char0
|
||
{mso-style-name:"图说明 Char";
|
||
mso-style-link:图说明;
|
||
font-family:宋体;}
|
||
p.0, li.0, div.0
|
||
{mso-style-name:封面0;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:36.0pt;
|
||
font-family:"Times New Roman","serif";
|
||
font-weight:bold;}
|
||
p.10, li.10, div.10
|
||
{mso-style-name:封面1;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:18.0pt;
|
||
font-family:"Times New Roman","serif";
|
||
font-weight:bold;}
|
||
p.11, li.11, div.11
|
||
{mso-style-name:非标题1;
|
||
margin-top:7.8pt;
|
||
margin-right:0cm;
|
||
margin-bottom:7.8pt;
|
||
margin-left:0cm;
|
||
text-align:center;
|
||
font-size:22.0pt;
|
||
font-family:宋体;
|
||
font-weight:bold;}
|
||
p.a1, li.a1, div.a1
|
||
{mso-style-name:文本居中;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.3CharChar, li.3CharChar, div.3CharChar
|
||
{mso-style-name:"图中文字3 Char Char";
|
||
mso-style-link:"图中文字3 Char Char Char";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
line-height:9.0pt;
|
||
font-size:8.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
span.3CharCharChar
|
||
{mso-style-name:"图中文字3 Char Char Char";
|
||
mso-style-link:"图中文字3 Char Char";
|
||
font-family:宋体;}
|
||
p.post, li.post, div.post
|
||
{mso-style-name:邮件post;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:right;
|
||
line-height:11.0pt;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.3, li.3, div.3
|
||
{mso-style-name:图中字体3;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
span.3CharChar1CharCharChar
|
||
{mso-style-name:"图中文字3 Char Char1 Char Char Char";
|
||
font-family:宋体;}
|
||
span.3CharChar1CharChar
|
||
{mso-style-name:"图中文字3 Char Char1 Char Char";
|
||
font-family:宋体;}
|
||
p.5Char, li.5Char, div.5Char
|
||
{mso-style-name:"图中文字5号 Char";
|
||
mso-style-link:"图中文字5号 Char Char";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
span.5CharChar
|
||
{mso-style-name:"图中文字5号 Char Char";
|
||
mso-style-link:"图中文字5号 Char";
|
||
font-family:宋体;}
|
||
p.5CharChar0, li.5CharChar0, div.5CharChar0
|
||
{mso-style-name:"图中文字小5号 Char Char";
|
||
mso-style-link:"图中文字小5号 Char Char Char";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:9.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
span.5CharCharChar
|
||
{mso-style-name:"图中文字小5号 Char Char Char";
|
||
mso-style-link:"图中文字小5号 Char Char";
|
||
font-family:宋体;}
|
||
p.5Char0, li.5Char0, div.5Char0
|
||
{mso-style-name:"图中文字小5号 Char";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:9.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.5, li.5, div.5
|
||
{mso-style-name:图中文字小5号;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
layout-grid-mode:char;
|
||
font-size:9.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.2, li.2, div.2
|
||
{mso-style-name:代码程序2;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
font-size:10.0pt;
|
||
font-family:宋体;}
|
||
p.20, li.20, div.20
|
||
{mso-style-name:图说明2;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.21, li.21, div.21
|
||
{mso-style-name:文本居中2;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.3CharCharCharCharChar, li.3CharCharCharCharChar, div.3CharCharCharCharChar
|
||
{mso-style-name:"图中文字3 Char Char Char Char Char";
|
||
mso-style-link:"图中文字3 Char Char Char Char Char Char";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
line-height:9.0pt;
|
||
font-size:8.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
span.3CharCharCharCharCharChar
|
||
{mso-style-name:"图中文字3 Char Char Char Char Char Char";
|
||
mso-style-link:"图中文字3 Char Char Char Char Char";
|
||
font-family:宋体;}
|
||
p.a2, li.a2, div.a2
|
||
{mso-style-name:图居中;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.110, li.110, div.110
|
||
{mso-style-name:"样式 标题 1 + 居中1";
|
||
margin-right:0cm;
|
||
margin-left:0cm;
|
||
text-align:center;
|
||
page-break-after:avoid;
|
||
font-size:22.0pt;
|
||
font-family:"Times New Roman","serif";
|
||
font-weight:bold;}
|
||
span.1Char
|
||
{mso-style-name:"标题 1 Char";
|
||
mso-style-link:"标题 1";
|
||
font-weight:bold;}
|
||
p.22, li.22, div.22
|
||
{mso-style-name:"样式 列表 2 + 居中";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.23, li.23, div.23
|
||
{mso-style-name:列表2;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.50, li.50, div.50
|
||
{mso-style-name:图中文字5号;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.111, li.111, div.111
|
||
{mso-style-name:样式11;
|
||
margin-top:0cm;
|
||
margin-right:0cm;
|
||
margin-bottom:0cm;
|
||
margin-left:21.0pt;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
text-indent:-21.0pt;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.12, li.12, div.12
|
||
{mso-style-name:代码程序1;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
font-size:10.0pt;
|
||
font-family:宋体;}
|
||
p.13, li.13, div.13
|
||
{mso-style-name:图说明1;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.01, li.01, div.01
|
||
{mso-style-name:封面01;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:36.0pt;
|
||
font-family:"Times New Roman","serif";
|
||
font-weight:bold;}
|
||
p.112, li.112, div.112
|
||
{mso-style-name:封面11;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:18.0pt;
|
||
font-family:"Times New Roman","serif";
|
||
font-weight:bold;}
|
||
p.113, li.113, div.113
|
||
{mso-style-name:非标题11;
|
||
margin-top:7.8pt;
|
||
margin-right:0cm;
|
||
margin-bottom:7.8pt;
|
||
margin-left:0cm;
|
||
text-align:center;
|
||
font-size:22.0pt;
|
||
font-family:宋体;
|
||
font-weight:bold;}
|
||
p.14, li.14, div.14
|
||
{mso-style-name:文本居中1;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.3Char1, li.3Char1, div.3Char1
|
||
{mso-style-name:"图中文字3 Char1";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
line-height:9.0pt;
|
||
font-size:8.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.post1, li.post1, div.post1
|
||
{mso-style-name:邮件post1;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:right;
|
||
line-height:11.0pt;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.31, li.31, div.31
|
||
{mso-style-name:图中字体31;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.5Char1, li.5Char1, div.5Char1
|
||
{mso-style-name:"图中文字5号 Char1";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.5CharChar1, li.5CharChar1, div.5CharChar1
|
||
{mso-style-name:"图中文字小5号 Char Char1";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:9.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.5Char10, li.5Char10, div.5Char10
|
||
{mso-style-name:"图中文字小5号 Char1";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:9.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.51, li.51, div.51
|
||
{mso-style-name:图中文字小5号1;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:9.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.120, li.120, div.120
|
||
{mso-style-name:样式12;
|
||
margin-top:0cm;
|
||
margin-right:0cm;
|
||
margin-bottom:0cm;
|
||
margin-left:21.0pt;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
text-indent:-21.0pt;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.02, li.02, div.02
|
||
{mso-style-name:封面02;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:36.0pt;
|
||
font-family:"Times New Roman","serif";
|
||
font-weight:bold;}
|
||
p.121, li.121, div.121
|
||
{mso-style-name:封面12;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:18.0pt;
|
||
font-family:"Times New Roman","serif";
|
||
font-weight:bold;}
|
||
p.122, li.122, div.122
|
||
{mso-style-name:非标题12;
|
||
margin-top:7.8pt;
|
||
margin-right:0cm;
|
||
margin-bottom:7.8pt;
|
||
margin-left:0cm;
|
||
text-align:center;
|
||
font-size:22.0pt;
|
||
font-family:宋体;
|
||
font-weight:bold;}
|
||
p.3Char2, li.3Char2, div.3Char2
|
||
{mso-style-name:"图中文字3 Char2";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
line-height:9.0pt;
|
||
font-size:8.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.post2, li.post2, div.post2
|
||
{mso-style-name:邮件post2;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:right;
|
||
line-height:11.0pt;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.32, li.32, div.32
|
||
{mso-style-name:图中字体32;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.5Char2, li.5Char2, div.5Char2
|
||
{mso-style-name:"图中文字小5号 Char2";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:9.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.52, li.52, div.52
|
||
{mso-style-name:图中文字小5号2;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:9.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.3CharCharCharChar, li.3CharCharCharChar, div.3CharCharCharChar
|
||
{mso-style-name:"图中文字3 Char Char Char Char";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
line-height:9.0pt;
|
||
font-size:8.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.130, li.130, div.130
|
||
{mso-style-name:样式13;
|
||
margin-top:0cm;
|
||
margin-right:0cm;
|
||
margin-bottom:0cm;
|
||
margin-left:21.0pt;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
text-indent:-21.0pt;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.30, li.30, div.30
|
||
{mso-style-name:代码程序3;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
font-size:10.0pt;
|
||
font-family:宋体;}
|
||
p.03, li.03, div.03
|
||
{mso-style-name:封面03;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:36.0pt;
|
||
font-family:"Times New Roman","serif";
|
||
font-weight:bold;}
|
||
p.131, li.131, div.131
|
||
{mso-style-name:封面13;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:18.0pt;
|
||
font-family:"Times New Roman","serif";
|
||
font-weight:bold;}
|
||
p.132, li.132, div.132
|
||
{mso-style-name:非标题13;
|
||
margin-top:7.8pt;
|
||
margin-right:0cm;
|
||
margin-bottom:7.8pt;
|
||
margin-left:0cm;
|
||
text-align:center;
|
||
font-size:22.0pt;
|
||
font-family:宋体;
|
||
font-weight:bold;}
|
||
p.33, li.33, div.33
|
||
{mso-style-name:文本居中3;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.3Char3, li.3Char3, div.3Char3
|
||
{mso-style-name:"图中文字3 Char3";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
line-height:9.0pt;
|
||
font-size:8.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.post3, li.post3, div.post3
|
||
{mso-style-name:邮件post3;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:right;
|
||
line-height:11.0pt;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.330, li.330, div.330
|
||
{mso-style-name:图中字体33;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.5Char20, li.5Char20, div.5Char20
|
||
{mso-style-name:"图中文字5号 Char2";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.5CharChar2, li.5CharChar2, div.5CharChar2
|
||
{mso-style-name:"图中文字小5号 Char Char2";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:9.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.5Char3, li.5Char3, div.5Char3
|
||
{mso-style-name:"图中文字小5号 Char3";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:9.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.53, li.53, div.53
|
||
{mso-style-name:图中文字小5号3;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:9.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.3Char, li.3Char, div.3Char
|
||
{mso-style-name:"图中文字3 Char";
|
||
mso-style-link:"图中文字3 Char Char5";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
line-height:9.0pt;
|
||
font-size:8.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
span.3CharChar5
|
||
{mso-style-name:"图中文字3 Char Char5";
|
||
mso-style-link:"图中文字3 Char";
|
||
font-family:宋体;}
|
||
p.54, li.54, div.54
|
||
{mso-style-name:图中文字小5紧密;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
line-height:9.0pt;
|
||
text-autospace:ideograph-numeric;
|
||
font-size:9.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.24, li.24, div.24
|
||
{mso-style-name:居中2号粗宋体;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:22.0pt;
|
||
font-family:"Times New Roman","serif";
|
||
font-weight:bold;}
|
||
p.15, li.15, div.15
|
||
{mso-style-name:"样式 标题 1 + 居中";
|
||
margin-top:17.0pt;
|
||
margin-right:0cm;
|
||
margin-bottom:16.5pt;
|
||
margin-left:0cm;
|
||
text-align:center;
|
||
page-break-after:avoid;
|
||
font-size:22.0pt;
|
||
font-family:"Times New Roman","serif";
|
||
font-weight:bold;}
|
||
p.25, li.25, div.25
|
||
{mso-style-name:"样式 标题 2 + 行距\: 单倍行距";
|
||
margin-top:13.0pt;
|
||
margin-right:0cm;
|
||
margin-bottom:13.0pt;
|
||
margin-left:28.9pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
text-indent:-28.9pt;
|
||
page-break-after:avoid;
|
||
font-size:16.0pt;
|
||
font-family:"Arial","sans-serif";
|
||
font-weight:bold;}
|
||
span.2Char
|
||
{mso-style-name:"标题 2 Char";
|
||
mso-style-link:"标题 2";
|
||
font-family:"Arial","sans-serif";
|
||
font-weight:bold;}
|
||
p.34, li.34, div.34
|
||
{mso-style-name:列表3;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.35, li.35, div.35
|
||
{mso-style-name:表3;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.4, li.4, div.4
|
||
{mso-style-name:图说明4;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.40, li.40, div.40
|
||
{mso-style-name:列表4;
|
||
margin-top:0cm;
|
||
margin-right:0cm;
|
||
margin-bottom:0cm;
|
||
margin-left:21.0pt;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
text-indent:-21.0pt;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.41, li.41, div.41
|
||
{mso-style-name:表4;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.55, li.55, div.55
|
||
{mso-style-name:图说明5;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.56, li.56, div.56
|
||
{mso-style-name:列表5;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.57, li.57, div.57
|
||
{mso-style-name:表5;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.6, li.6, div.6
|
||
{mso-style-name:列表6;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.60, li.60, div.60
|
||
{mso-style-name:表6;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.61, li.61, div.61
|
||
{mso-style-name:图说明6;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.7, li.7, div.7
|
||
{mso-style-name:列表7;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.70, li.70, div.70
|
||
{mso-style-name:图说明7;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.71, li.71, div.71
|
||
{mso-style-name:表7;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.8, li.8, div.8
|
||
{mso-style-name:列表8;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.9, li.9, div.9
|
||
{mso-style-name:列表9;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.90, li.90, div.90
|
||
{mso-style-name:图说明9;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.100, li.100, div.100
|
||
{mso-style-name:列表10;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.101, li.101, div.101
|
||
{mso-style-name:图说明10;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.114, li.114, div.114
|
||
{mso-style-name:列表11;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.115, li.115, div.115
|
||
{mso-style-name:图说明11;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.116, li.116, div.116
|
||
{mso-style-name:表11;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.123, li.123, div.123
|
||
{mso-style-name:列表12;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.124, li.124, div.124
|
||
{mso-style-name:图说明12;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.133, li.133, div.133
|
||
{mso-style-name:图说明13;
|
||
mso-style-link:"图说明13 Char";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
span.13Char
|
||
{mso-style-name:"图说明13 Char";
|
||
mso-style-link:图说明13;
|
||
font-family:宋体;}
|
||
p.134, li.134, div.134
|
||
{mso-style-name:列表13;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.26, li.26, div.26
|
||
{mso-style-name:附录2;
|
||
margin-top:13.0pt;
|
||
margin-right:0cm;
|
||
margin-bottom:13.0pt;
|
||
margin-left:0cm;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
page-break-after:avoid;
|
||
font-size:16.0pt;
|
||
font-family:"Arial","sans-serif";
|
||
font-weight:bold;}
|
||
p.36, li.36, div.36
|
||
{mso-style-name:附录3;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
page-break-after:avoid;
|
||
font-size:14.0pt;
|
||
font-family:"Arial","sans-serif";
|
||
font-weight:bold;}
|
||
span.3Char0
|
||
{mso-style-name:"标题 3 Char";
|
||
mso-style-link:"标题 3";
|
||
font-family:"Arial","sans-serif";
|
||
font-weight:bold;}
|
||
p.16, li.16, div.16
|
||
{mso-style-name:附录1;
|
||
margin-top:17.0pt;
|
||
margin-right:0cm;
|
||
margin-bottom:16.5pt;
|
||
margin-left:0cm;
|
||
text-align:center;
|
||
page-break-after:avoid;
|
||
font-size:22.0pt;
|
||
font-family:"Times New Roman","serif";
|
||
font-weight:bold;}
|
||
p.17, li.17, div.17
|
||
{mso-style-name:附录表1;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.42, li.42, div.42
|
||
{mso-style-name:附录4;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
page-break-after:avoid;
|
||
font-size:12.0pt;
|
||
font-family:"Arial","sans-serif";
|
||
font-weight:bold;}
|
||
span.4Char
|
||
{mso-style-name:"标题 4 Char";
|
||
mso-style-link:"标题 4";
|
||
font-family:"Arial","sans-serif";
|
||
font-weight:bold;}
|
||
p.a3, li.a3, div.a3
|
||
{mso-style-name:附录图说明;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.27, li.27, div.27
|
||
{mso-style-name:序标题2;
|
||
margin-top:13.0pt;
|
||
margin-right:0cm;
|
||
margin-bottom:13.0pt;
|
||
margin-left:28.8pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
text-indent:-28.8pt;
|
||
page-break-after:avoid;
|
||
font-size:16.0pt;
|
||
font-family:"Arial","sans-serif";
|
||
font-weight:bold;}
|
||
p.a4, li.a4, div.a4
|
||
{mso-style-name:参考标题;
|
||
margin-top:7.8pt;
|
||
margin-right:0cm;
|
||
margin-bottom:7.8pt;
|
||
margin-left:0cm;
|
||
text-align:center;
|
||
page-break-after:avoid;
|
||
font-size:22.0pt;
|
||
font-family:"Times New Roman","serif";
|
||
font-weight:bold;}
|
||
p.18, li.18, div.18
|
||
{mso-style-name:索引标题1;
|
||
margin-top:7.8pt;
|
||
margin-right:0cm;
|
||
margin-bottom:7.8pt;
|
||
margin-left:0cm;
|
||
text-align:center;
|
||
page-break-after:avoid;
|
||
font-size:22.0pt;
|
||
font-family:"Times New Roman","serif";
|
||
font-weight:bold;}
|
||
p.19, li.19, div.19
|
||
{mso-style-name:列表1;
|
||
margin-top:0cm;
|
||
margin-right:0cm;
|
||
margin-bottom:0cm;
|
||
margin-left:21.25pt;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
text-indent:-21.25pt;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.1a, li.1a, div.1a
|
||
{mso-style-name:表1;
|
||
margin-top:0cm;
|
||
margin-right:0cm;
|
||
margin-bottom:0cm;
|
||
margin-left:21.25pt;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
text-indent:-21.25pt;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.37, li.37, div.37
|
||
{mso-style-name:图说明3;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.62, li.62, div.62
|
||
{mso-style-name:表中字体6号;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
layout-grid-mode:char;
|
||
font-size:7.5pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.a5, li.a5, div.a5
|
||
{mso-style-name:正文代码;
|
||
mso-style-link:"正文代码 Char";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
span.Char1
|
||
{mso-style-name:"正文代码 Char";
|
||
mso-style-link:正文代码;
|
||
font-family:宋体;}
|
||
p.43, li.43, div.43
|
||
{mso-style-name:"样式 标题 4 +";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
page-break-after:avoid;
|
||
font-size:12.0pt;
|
||
font-family:"Arial","sans-serif";
|
||
font-weight:bold;}
|
||
p.140, li.140, div.140
|
||
{mso-style-name:表14;
|
||
margin-top:0cm;
|
||
margin-right:0cm;
|
||
margin-bottom:0cm;
|
||
margin-left:21.25pt;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
text-indent:-21.25pt;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.141, li.141, div.141
|
||
{mso-style-name:图说明14;
|
||
mso-style-link:"图说明14 Char";
|
||
margin-top:0cm;
|
||
margin-right:0cm;
|
||
margin-bottom:0cm;
|
||
margin-left:21.25pt;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
text-indent:-21.25pt;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
span.14Char
|
||
{mso-style-name:"图说明14 Char";
|
||
mso-style-link:图说明14;
|
||
font-family:宋体;}
|
||
p.a6, li.a6, div.a6
|
||
{mso-style-name:文件目录表;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.a7, li.a7, div.a7
|
||
{mso-style-name:"样式 正文 +";
|
||
mso-style-link:"样式 正文 + Char";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
span.Char2
|
||
{mso-style-name:"样式 正文 + Char";
|
||
mso-style-link:"样式 正文 +";
|
||
font-family:"Times New Roman","serif";}
|
||
p.a8, li.a8, div.a8
|
||
{mso-style-name:表格题注;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.5pt;
|
||
font-family:宋体;}
|
||
p.a9, li.a9, div.a9
|
||
{mso-style-name:列表题注;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.5pt;
|
||
font-family:"Arial","sans-serif";}
|
||
p.aa, li.aa, div.aa
|
||
{mso-style-name:图题注;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.5pt;
|
||
font-family:"Arial","sans-serif";}
|
||
p.ab, li.ab, div.ab
|
||
{mso-style-name:程序题注;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.5pt;
|
||
font-family:"Arial","sans-serif";}
|
||
p.ac, li.ac, div.ac
|
||
{mso-style-name:框中文字;
|
||
margin-top:0cm;
|
||
margin-right:21.0pt;
|
||
margin-bottom:0cm;
|
||
margin-left:21.0pt;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
border:none;
|
||
padding:0cm;
|
||
font-size:9.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.125, li.125, div.125
|
||
{mso-style-name:"样式 标题 1 + 居中2";
|
||
margin-top:17.0pt;
|
||
margin-right:0cm;
|
||
margin-bottom:16.5pt;
|
||
margin-left:0cm;
|
||
text-align:center;
|
||
page-break-after:avoid;
|
||
font-size:22.0pt;
|
||
font-family:"Times New Roman","serif";
|
||
font-weight:bold;}
|
||
p.ad, li.ad, div.ad
|
||
{mso-style-name:"样式 题注 + 宋体 五号 居中";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.5pt;
|
||
font-family:黑体;}
|
||
p.1b, li.1b, div.1b
|
||
{mso-style-name:序标题1;
|
||
margin-top:17.0pt;
|
||
margin-right:0cm;
|
||
margin-bottom:16.5pt;
|
||
margin-left:0cm;
|
||
line-height:240%;
|
||
page-break-after:avoid;
|
||
font-size:16.0pt;
|
||
font-family:"Times New Roman","serif";
|
||
font-weight:bold;}
|
||
p.38, li.38, div.38
|
||
{mso-style-name:序标题3;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
page-break-after:avoid;
|
||
font-size:12.0pt;
|
||
font-family:方正小标宋简体;}
|
||
p.63, li.63, div.63
|
||
{mso-style-name:表中文字6号;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
font-size:7.5pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.64, li.64, div.64
|
||
{mso-style-name:图中文字6号左对齐;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
line-height:10.0pt;
|
||
layout-grid-mode:char;
|
||
font-size:7.5pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.65, li.65, div.65
|
||
{mso-style-name:图中文字6号;
|
||
mso-style-link:"图中文字6号 Char";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
line-height:10.0pt;
|
||
layout-grid-mode:char;
|
||
font-size:7.5pt;
|
||
font-family:"Times New Roman","serif";}
|
||
span.6Char
|
||
{mso-style-name:"图中文字6号 Char";
|
||
mso-style-link:图中文字6号;
|
||
font-family:宋体;}
|
||
p.ae, li.ae, div.ae
|
||
{mso-style-name:图标;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.28, li.28, div.28
|
||
{mso-style-name:图标2;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.af, li.af, div.af
|
||
{mso-style-name:习题标题;
|
||
margin-top:6.0pt;
|
||
margin-right:0cm;
|
||
margin-bottom:0cm;
|
||
margin-left:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
page-break-after:avoid;
|
||
font-size:14.0pt;
|
||
font-family:黑体;}
|
||
p.1c, li.1c, div.1c
|
||
{mso-style-name:部分编号1;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
font-size:16.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.af0, li.af0, div.af0
|
||
{mso-style-name:表标题;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.0pt;
|
||
font-family:"Arial","sans-serif";}
|
||
p.af1, li.af1, div.af1
|
||
{mso-style-name:"样式 题注 + 居中";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.ListTitle, li.ListTitle, div.ListTitle
|
||
{mso-style-name:ListTitle;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
font-size:10.0pt;
|
||
font-family:"Arial","sans-serif";}
|
||
p.FigureTitle, li.FigureTitle, div.FigureTitle
|
||
{mso-style-name:FigureTitle;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.0pt;
|
||
font-family:"Arial","sans-serif";}
|
||
p.TableTitle, li.TableTitle, div.TableTitle
|
||
{mso-style-name:TableTitle;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.0pt;
|
||
font-family:"Arial","sans-serif";}
|
||
p.ProgramTitle, li.ProgramTitle, div.ProgramTitle
|
||
{mso-style-name:ProgramTitle;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:center;
|
||
font-size:10.0pt;
|
||
font-family:"Arial","sans-serif";}
|
||
p.RightText, li.RightText, div.RightText
|
||
{mso-style-name:RightText;
|
||
margin-top:0cm;
|
||
margin-right:21.0pt;
|
||
margin-bottom:0cm;
|
||
margin-left:42.0pt;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
border:none;
|
||
padding:0cm;
|
||
font-size:9.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.af2, li.af2, div.af2
|
||
{mso-style-name:表中文字小五;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
font-size:9.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.af3, li.af3, div.af3
|
||
{mso-style-name:关键词;
|
||
mso-style-link:"关键词 Char";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
span.Char3
|
||
{mso-style-name:"关键词 Char";
|
||
mso-style-link:关键词;
|
||
font-family:宋体;}
|
||
p.af4, li.af4, div.af4
|
||
{mso-style-name:文件名;
|
||
mso-style-link:"文件名 Char";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
span.Char4
|
||
{mso-style-name:"文件名 Char";
|
||
mso-style-link:文件名;
|
||
font-family:宋体;}
|
||
p.af5, li.af5, div.af5
|
||
{mso-style-name:选项;
|
||
mso-style-link:"选项 Char";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
span.Char5
|
||
{mso-style-name:"选项 Char";
|
||
mso-style-link:选项;
|
||
font-family:宋体;}
|
||
p.af6, li.af6, div.af6
|
||
{mso-style-name:命令行;
|
||
mso-style-link:"命令行 Char";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
span.Char6
|
||
{mso-style-name:"命令行 Char";
|
||
mso-style-link:命令行;
|
||
font-family:宋体;}
|
||
p.af7, li.af7, div.af7
|
||
{mso-style-name:函数名;
|
||
mso-style-link:"函数名 Char";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
span.Char7
|
||
{mso-style-name:"函数名 Char";
|
||
mso-style-link:函数名;
|
||
font-family:宋体;}
|
||
p.af8, li.af8, div.af8
|
||
{mso-style-name:寄存器名;
|
||
mso-style-link:"寄存器名 Char";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
span.Char8
|
||
{mso-style-name:"寄存器名 Char";
|
||
mso-style-link:寄存器名;
|
||
font-family:"Times New Roman","serif";}
|
||
p.af9, li.af9, div.af9
|
||
{mso-style-name:变量名;
|
||
mso-style-link:"变量名 Char";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
text-align:justify;
|
||
text-justify:inter-ideograph;
|
||
font-size:10.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
span.Char9
|
||
{mso-style-name:"变量名 Char";
|
||
mso-style-link:变量名;
|
||
font-family:宋体;}
|
||
p.58, li.58, div.58
|
||
{mso-style-name:图中文字小5号左;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
font-size:9.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.59, li.59, div.59
|
||
{mso-style-name:图中文字小5号靠左;
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
layout-grid-mode:char;
|
||
font-size:9.0pt;
|
||
font-family:"Times New Roman","serif";}
|
||
p.926, li.926, div.926
|
||
{mso-style-name:"样式 代码程序 + 左侧\: 9\.26 厘米";
|
||
margin:0cm;
|
||
margin-bottom:.0001pt;
|
||
layout-grid-mode:char;
|
||
font-size:10.0pt;
|
||
font-family:宋体;}
|
||
span.5Char4
|
||
{mso-style-name:"标题 5 Char";
|
||
mso-style-link:"标题 5";
|
||
font-weight:bold;}
|
||
span.6Char0
|
||
{mso-style-name:"标题 6 Char";
|
||
mso-style-link:"标题 6";
|
||
font-family:"Arial","sans-serif";
|
||
font-weight:bold;}
|
||
span.7Char
|
||
{mso-style-name:"标题 7 Char";
|
||
mso-style-link:"标题 7";
|
||
font-weight:bold;}
|
||
span.8Char
|
||
{mso-style-name:"标题 8 Char";
|
||
mso-style-link:"标题 8";
|
||
font-family:"Arial","sans-serif";}
|
||
span.9Char
|
||
{mso-style-name:"标题 9 Char";
|
||
mso-style-link:"标题 9";
|
||
font-family:"Arial","sans-serif";}
|
||
span.Chara
|
||
{mso-style-name:"脚注文本 Char";
|
||
mso-style-link:脚注文本;
|
||
font-family:宋体;}
|
||
span.Charb
|
||
{mso-style-name:"批注文字 Char";
|
||
mso-style-link:批注文字;
|
||
font-family:宋体;}
|
||
span.Charc
|
||
{mso-style-name:"页眉 Char";
|
||
mso-style-link:页眉;
|
||
font-family:宋体;}
|
||
span.Chard
|
||
{mso-style-name:"页脚 Char";
|
||
mso-style-link:页脚;
|
||
font-family:宋体;}
|
||
span.Chare
|
||
{mso-style-name:"日期 Char";
|
||
mso-style-link:日期;
|
||
font-family:宋体;}
|
||
span.HTMLChar
|
||
{mso-style-name:"HTML 预设格式 Char\,HTML 预先格式化 Char\,HTML 预先格式化1 Char\,HTML 预先格式化2 Char\,HTML 预先格式化3 Char";
|
||
mso-style-link:"HTML 预设格式\,HTML 预先格式化\,HTML 预先格式化1\,HTML 预先格式化2\,HTML 预先格式化3";
|
||
font-family:宋体;}
|
||
span.Charf
|
||
{mso-style-name:"批注主题 Char";
|
||
mso-style-link:批注主题;
|
||
font-family:宋体;
|
||
font-weight:bold;}
|
||
span.Charf0
|
||
{mso-style-name:"批注框文本 Char";
|
||
mso-style-link:批注框文本;
|
||
font-family:宋体;}
|
||
.MsoChpDefault
|
||
{font-size:10.0pt;}
|
||
/* Page Definitions */
|
||
@page WordSection1
|
||
{size:595.3pt 841.9pt;
|
||
margin:72.0pt 54.0pt 72.0pt 54.0pt;
|
||
layout-grid:15.6pt;}
|
||
div.WordSection1
|
||
{page:WordSection1;}
|
||
/* List Definitions */
|
||
ol
|
||
{margin-bottom:0cm;}
|
||
ul
|
||
{margin-bottom:0cm;}
|
||
-->
|
||
</style>
|
||
|
||
</head>
|
||
|
||
<body lang=ZH-CN link=blue vlink=purple style='text-justify-trim:punctuation'>
|
||
|
||
<div class=WordSection1 style='layout-grid:15.6pt'>
|
||
|
||
<p class=ab><a name="_Toc53320703"><span style='font-family:黑体'>程序</span><span
|
||
lang=EN-US>16-1 linux/tools/build.c</span></a></p>
|
||
|
||
<div class=926 align=center style='text-align:center'><span lang=EN-US>
|
||
|
||
<hr size=4 width="100%" align=center>
|
||
|
||
</span></div>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>1</span></u> <b><i>/*</i></b></span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>2</span></u> <b><i> *
|
||
linux/tools/build.c</i></b></span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>3</span></u> <b><i> *</i></b></span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>4</span></u> <b><i> *
|
||
(C) 1991 Linus Torvalds</i></b></span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>5</span></u> <b><i> */</i></b></span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>6</span></u> </span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>7</span></u> <b><i>/*</i></b></span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>8</span></u> <b><i> *
|
||
This file builds a disk-image from three different files:</i></b></span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>9</span></u> <b><i> *</i></b></span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>10</span></u> <b><i> *
|
||
- bootsect: max 510 bytes of 8086 machine code, loads the rest</i></b></span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>11</span></u> <b><i> *
|
||
- setup: max 4 sectors of 8086 machine code, sets up system parm</i></b></span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>12</span></u> <b><i> *
|
||
- system: 80386 code for actual system</i></b></span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>13</span></u> <b><i> *</i></b></span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>14</span></u> <b><i> *
|
||
It does some checking that all files are of the correct type, and</i></b></span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>15</span></u> <b><i> *
|
||
just writes the result to stdout, removing headers and padding to</i></b></span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>16</span></u> <b><i> *
|
||
the right amount. It also writes some system data to stderr.</i></b></span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>17</span></u> <b><i> */</i></b></span></p>
|
||
|
||
<p class=a><span lang=EN-US> /*</span></p>
|
||
|
||
<p class=a><span lang=EN-US> * </span>该程序从三个不同的程序中创建磁盘映像文件:</p>
|
||
|
||
<p class=a><span lang=EN-US> *</span></p>
|
||
|
||
<p class=a><span lang=EN-US> * - bootsect</span>:该文件的<span
|
||
lang=EN-US>8086</span>机器码最长为<span lang=EN-US>510</span>字节,用于加载其他程序。</p>
|
||
|
||
<p class=a><span lang=EN-US> * - setup</span>:该文件的<span
|
||
lang=EN-US>8086</span>机器码最长为<span lang=EN-US>4</span>个磁盘扇区,用于设置系统参数。</p>
|
||
|
||
<p class=a><span lang=EN-US> * - system</span>:实际系统的<span
|
||
lang=EN-US>80386</span>代码。</p>
|
||
|
||
<p class=a><span lang=EN-US> *</span></p>
|
||
|
||
<p class=a><span lang=EN-US> * </span>该程序首先检查所有程序模块的类型是否正确,并将检查结果在终端上显示出来,</p>
|
||
|
||
<p class=a><span lang=EN-US> * </span>然后删除模块头部并扩充大正确的长度。该程序也会将一些系统数据写到<span
|
||
lang=EN-US>stderr</span>。</p>
|
||
|
||
<p class=a><span lang=EN-US> */</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>18</span></u> </span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>19</span></u> <b><i>/*</i></b></span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>20</span></u> <b><i> *
|
||
Changes by tytso to allow root device specification</i></b></span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>21</span></u> <b><i> *</i></b></span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>22</span></u> <b><i> *
|
||
Added swap-device specification: Linux 20.12.91</i></b></span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>23</span></u> <b><i> */</i></b></span></p>
|
||
|
||
<p class=a><span lang=EN-US> /*</span></p>
|
||
|
||
<p class=a><span lang=EN-US> * tytso</span>对该程序作了修改,以允许指定根文件设备。</p>
|
||
|
||
<p class=a><span lang=EN-US> * </span></p>
|
||
|
||
<p class=a><span lang=EN-US> * </span>添加了指定交换设备功能:<span
|
||
lang=EN-US>Linus 20.12.91</span></p>
|
||
|
||
<p class=a><span lang=EN-US> */</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>24</span></u> </span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>25</span></u>
|
||
#include <stdio.h> /* fprintf */
|
||
// </span>使用其中的<span lang=EN-US>fprintf()</span>函数。</p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>26</span></u>
|
||
#include <string.h>
|
||
// </span>字符串操作函数。</p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>27</span></u>
|
||
#include <stdlib.h> /* contains exit */
|
||
// </span>含<span lang=EN-US>exit</span>函数原型说明。</p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>28</span></u>
|
||
#include <sys/types.h> /* unistd.h needs this */ // </span>该头文件供<span
|
||
lang=EN-US>unistd.h</span>文件使用。</p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>29</span></u>
|
||
#include <sys/stat.h>
|
||
// </span>含文件状态信息结构定义。</p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>30</span></u>
|
||
#include <linux/fs.h>
|
||
// </span>文件系统头文件。</p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>31</span></u>
|
||
#include <unistd.h> /* contains read/write */
|
||
// </span>含<span lang=EN-US>read/write</span>函数原型说明。</p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>32</span></u>
|
||
#include <fcntl.h>
|
||
// </span>包含文件操作模式符号常数。</p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>33</span></u> </span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>34</span></u>
|
||
#define <u><span style='color:blue'>MINIX_HEADER</span></u> 32
|
||
// minix</span>二进制目标文件模块头部长度为<span lang=EN-US>32</span>字节。</p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>35</span></u>
|
||
#define <u><span style='color:blue'>GCC_HEADER</span></u> 1024
|
||
// GCC</span>头部信息长度为<span lang=EN-US>1024</span>字节。</p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>36</span></u> </span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>37</span></u>
|
||
#define <u><span style='color:blue'>SYS_SIZE</span></u> 0x3000
|
||
// system</span>文件最长节数<span lang=EN-US>(</span>字节数为<span lang=EN-US>SYS_SIZE*16=128KB)</span>。</p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>38</span></u> </span></p>
|
||
|
||
<p class=a><span lang=EN-US> // </span>默认地把<span lang=EN-US>Linux</span>根文件系统所在设备设置为在第<span
|
||
lang=EN-US>2</span>个硬盘的第<span lang=EN-US>1</span>个分区上(即设备号为<span lang=EN-US>0x0306</span>),</p>
|
||
|
||
<p class=a><span lang=EN-US> // </span>是因为<span lang=EN-US>Linus</span>当时开发<span
|
||
lang=EN-US>Linux</span>时,把第<span lang=EN-US>1</span>个硬盘用作<span lang=EN-US>MINIX</span>系统盘,而第<span
|
||
lang=EN-US>2</span>个硬盘用作为<span lang=EN-US>Linux</span></p>
|
||
|
||
<p class=a><span lang=EN-US> // </span>的根文件系统盘。</p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>39</span></u>
|
||
#define <u><span style='color:blue'>DEFAULT_MAJOR_ROOT</span></u> 3
|
||
// </span>默认根设备主设备号<span lang=EN-US> - 3</span>(硬盘)。</p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>40</span></u>
|
||
#define <u><span style='color:blue'>DEFAULT_MINOR_ROOT</span></u> 6 //
|
||
</span>默认根设备次设备号<span lang=EN-US> - 6</span>(第<span lang=EN-US>2</span>个硬盘的第<span
|
||
lang=EN-US>1</span>分区)。</p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>41</span></u> </span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>42</span></u>
|
||
#define <u><span style='color:blue'>DEFAULT_MAJOR_SWAP</span></u> 0
|
||
// </span>默认交换设备主设备号。</p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>43</span></u>
|
||
#define <u><span style='color:blue'>DEFAULT_MINOR_SWAP</span></u> 0
|
||
// </span>默认交换设备次设备号。</p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>44</span></u> </span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>45</span></u> <b><i>/*
|
||
max nr of sectors of setup: don't change unless you also change</i></b></span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>46</span></u> <b><i> *
|
||
bootsect etc */</i></b></span></p>
|
||
|
||
<p class=a><span lang=EN-US> /* </span>下面指定<span lang=EN-US>setup</span>模块占的最大扇区数:不要改变该值,除非也改变<span
|
||
lang=EN-US>bootsect</span>等相应文件。</p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>47</span></u>
|
||
#define <u><span style='color:blue'>SETUP_SECTS</span></u> 4
|
||
// setup</span>最大长度为<span lang=EN-US>4</span>个扇区(<span lang=EN-US>2KB</span>)。</p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>48</span></u> </span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>49</span></u>
|
||
#define <u><span style='color:blue'>STRINGIFY</span></u>(<u><span
|
||
style='color:blue'>x</span></u>) #x
|
||
// </span>把<span lang=EN-US>x</span>转换成字符串类型,用于出错显示语句中。</p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>50</span></u> </span></p>
|
||
|
||
<p class=a><span lang=EN-US> //// </span>显示出错信息,并终止程序。</p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>51</span></u>
|
||
void <u><span style='color:blue'>die</span></u>(char * <u><span
|
||
style='color:blue'>str</span></u>)</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>52</span></u> {</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>53</span></u>
|
||
fprintf(stderr,<i>"%s\n"</i>,<u><span
|
||
style='color:blue'>str</span></u>);</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>54</span></u>
|
||
<u><span style='color:blue'>exit</span></u>(1);</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>55</span></u> }</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>56</span></u> </span></p>
|
||
|
||
<p class=a><span lang=EN-US> // </span>显示程序使用方法,并退出。</p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>57</span></u>
|
||
void <u><span style='color:blue'>usage</span></u>(void)</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>58</span></u> {</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>59</span></u>
|
||
<u><span style='color:blue'>die</span></u>(<i>"Usage: build bootsect setup
|
||
system [rootdev] [> image]"</i>);</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>60</span></u> }</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>61</span></u> </span></p>
|
||
|
||
<p class=a><span lang=EN-US> // </span>主程序开始。</p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>62</span></u> int
|
||
<u><span style='color:blue'>main</span></u>(int argc, char ** <u><span
|
||
style='color:blue'>argv</span></u>)</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>63</span></u> {</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>64</span></u>
|
||
int i,c,id;</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>65</span></u>
|
||
char <u><span style='color:blue'>buf</span></u>[1024];</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>66</span></u>
|
||
char major_root, minor_root;</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>67</span></u>
|
||
char major_swap, minor_swap;</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>68</span></u>
|
||
struct <u><span style='color:blue'>stat</span></u> sb;</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>69</span></u> </span></p>
|
||
|
||
<p class=a><span lang=EN-US> // </span>首先检查<span lang=EN-US>build</span>程序执行时实际命令行参数个数,并根据参数个数作相应设置。如果<span
|
||
lang=EN-US>build</span>程序</p>
|
||
|
||
<p class=a><span lang=EN-US> // </span>命令行参数个数不是<span
|
||
lang=EN-US>4</span>到<span lang=EN-US>6</span>个(程序名算作<span lang=EN-US>1</span>个),则显示程序用法并退出。</p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>70</span></u>
|
||
if ((argc < 4) || (argc > 6))</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>71</span></u>
|
||
<u><span style='color:blue'>usage</span></u>();</span></p>
|
||
|
||
<p class=a><span lang=EN-US> // </span>若程序命令行上有多于<span
|
||
lang=EN-US>4</span>个参数,那么如果根设备名不是软盘(<span lang=EN-US>"FLOPPY"</span>),则取该设备文件的</p>
|
||
|
||
<p class=a><span lang=EN-US> // </span>状态信息。若取状态出错则显示信息并退出,否则取该设备名状态结构中的主设备号和次设备号</p>
|
||
|
||
<p class=a><span lang=EN-US> // </span>作为根设备号。如果根设备就是<span
|
||
lang=EN-US>FLOPPY</span>设备,则让主设备号和次设备号取<span lang=EN-US>0</span>。表示根设备是当前</p>
|
||
|
||
<p class=a><span lang=EN-US> // </span>启动引导设备。</p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>72</span></u>
|
||
if (argc > 4) {</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>73</span></u>
|
||
if (<u><span style='color:blue'>strcmp</span></u>(<u><span style='color:blue'>argv</span></u>[4],
|
||
<i>"FLOPPY"</i>)) {</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>74</span></u>
|
||
if (<u><span style='color:blue'>stat</span></u>(<u><span style='color:blue'>argv</span></u>[4],
|
||
&sb)) {</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>75</span></u>
|
||
perror(<u><span style='color:blue'>argv</span></u>[4]);</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>76</span></u>
|
||
<u><span style='color:blue'>die</span></u>(<i>"Couldn't stat root
|
||
device."</i>);</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>77</span></u>
|
||
}</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>78</span></u>
|
||
major_root = <u><span style='color:blue'>MAJOR</span></u>(sb.st_rdev);
|
||
// </span>取设备名状态结构中设备号。</p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>79</span></u>
|
||
minor_root = <u><span style='color:blue'>MINOR</span></u>(sb.st_rdev);</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>80</span></u>
|
||
} else {</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>81</span></u>
|
||
major_root = 0;</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>82</span></u>
|
||
minor_root =
|
||
0;</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>83</span></u>
|
||
}</span></p>
|
||
|
||
<p class=a><span lang=EN-US> // </span>若参数只有<span lang=EN-US>4</span>个,则让主设备号和次设备号等于系统默认的根设备号。</p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>84</span></u>
|
||
} else {</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>85</span></u>
|
||
major_root = <u><span style='color:blue'>DEFAULT_MAJOR_ROOT</span></u>;</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>86</span></u>
|
||
minor_root = <u><span style='color:blue'>DEFAULT_MINOR_ROOT</span></u>;</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>87</span></u>
|
||
}</span></p>
|
||
|
||
<p class=a><span lang=EN-US> // </span>若程序命令行上有<span
|
||
lang=EN-US>6</span>个参数,那么如果最后一个表示交换设备的参数不是无(<span lang=EN-US>"NONE"</span>),则取该</p>
|
||
|
||
<p class=a><span lang=EN-US> // </span>设备文件的状态信息。若取状态出错则显示信息并退出,否则取该设备名状态结构中的主设备号</p>
|
||
|
||
<p class=a><span lang=EN-US> // </span>和次设备号作为交换设备号。如果最后一个参数就是<span
|
||
lang=EN-US>"NONE"</span>,则让交换设备的主设备号和次设备</p>
|
||
|
||
<p class=a><span lang=EN-US> // </span>号取为<span lang=EN-US>0</span>。表示交换设备就是当前启动引导设备。</p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>88</span></u>
|
||
if (argc == 6) {</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>89</span></u>
|
||
if (<u><span style='color:blue'>strcmp</span></u>(<u><span style='color:blue'>argv</span></u>[5],
|
||
<i>"NONE"</i>)) {</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>90</span></u>
|
||
if (<u><span style='color:blue'>stat</span></u>(<u><span style='color:blue'>argv</span></u>[5],
|
||
&sb)) {</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>91</span></u>
|
||
perror(<u><span style='color:blue'>argv</span></u>[5]);</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>92</span></u>
|
||
<u><span style='color:blue'>die</span></u>(<i>"Couldn't stat root
|
||
device."</i>);</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>93</span></u>
|
||
}</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>94</span></u>
|
||
major_swap = <u><span style='color:blue'>MAJOR</span></u>(sb.st_rdev);
|
||
// </span>取设备名状态结构中设备号。</p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>95</span></u>
|
||
minor_swap = <u><span style='color:blue'>MINOR</span></u>(sb.st_rdev);</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>96</span></u>
|
||
} else {</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>97</span></u>
|
||
major_swap = 0;</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>98</span></u>
|
||
minor_swap = 0;</span></p>
|
||
|
||
<p class=a><span lang=EN-US> <u><span style='color:blue'>99</span></u>
|
||
}</span></p>
|
||
|
||
<p class=a><span lang=EN-US> // </span>若参数没有<span lang=EN-US>6</span>个而是<span
|
||
lang=EN-US>5</span>个,表示命令行上没有带交换设备名。于是就让交换设备主设备号和次设备</p>
|
||
|
||
<p class=a><span lang=EN-US> // </span>号等于系统默认的交换设备号。</p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>100</span></u><span
|
||
lang=EN-US> } else {</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>101</span></u><span
|
||
lang=EN-US>
|
||
major_swap = <u><span style='color:blue'>DEFAULT_MAJOR_SWAP</span></u>;</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>102</span></u><span
|
||
lang=EN-US>
|
||
minor_swap = <u><span style='color:blue'>DEFAULT_MINOR_SWAP</span></u>;</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>103</span></u><span
|
||
lang=EN-US> }</span></p>
|
||
|
||
<p class=a><span lang=EN-US> </span></p>
|
||
|
||
<p class=a><span lang=EN-US> // </span>接下来在标准错误终端上显示上面所选择的根设备主、次设备号和交换设备主、次设备号。如果</p>
|
||
|
||
<p class=a><span lang=EN-US> // </span>主设备号不等于<span
|
||
lang=EN-US>2</span>(软盘)或<span lang=EN-US>3</span>(硬盘),也不为<span lang=EN-US>0</span>(取系统默认设备),则显示出错信息并退出。</p>
|
||
|
||
<p class=926><span lang=EN-US> // </span>终端的标准输出被定向到文件<span
|
||
lang=EN-US>Image</span>,因此被用于输出保存内核代码数据,生成内核映像文件。</p>
|
||
|
||
<p class=926><u><span lang=EN-US style='color:blue'>104</span></u><span
|
||
lang=EN-US> fprintf(stderr, <i>"Root
|
||
device is (%d, %d)\n"</i>, major_root, minor_root);</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>105</span></u><span
|
||
lang=EN-US> fprintf(stderr, <i>"Swap
|
||
device is (%d, %d)\n"</i>, major_swap, minor_swap);</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>106</span></u><span
|
||
lang=EN-US> if ((major_root !=
|
||
2) && (major_root != 3) &&</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>107</span></u><span
|
||
lang=EN-US>
|
||
(major_root != 0)) {</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>108</span></u><span
|
||
lang=EN-US>
|
||
fprintf(stderr, <i>"Illegal root device (major = %d)\n"</i>,</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>109</span></u><span
|
||
lang=EN-US>
|
||
major_root);</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>110</span></u><span
|
||
lang=EN-US>
|
||
<u><span style='color:blue'>die</span></u>(<i>"Bad root device --- major
|
||
#"</i>);</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>111</span></u><span
|
||
lang=EN-US> }</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>112</span></u><span
|
||
lang=EN-US> if (major_swap
|
||
&& major_swap != 3) {</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>113</span></u><span
|
||
lang=EN-US>
|
||
fprintf(stderr, <i>"Illegal swap device (major = %d)\n"</i>,</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>114</span></u><span
|
||
lang=EN-US>
|
||
major_swap);</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>115</span></u><span
|
||
lang=EN-US>
|
||
<u><span style='color:blue'>die</span></u>(<i>"Bad root device --- major
|
||
#"</i>);</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>116</span></u><span
|
||
lang=EN-US> }</span></p>
|
||
|
||
<p class=a><span lang=EN-US> // </span>下面开始执行读取各个文件内容并进行相应的复制处理。首先初始化<span
|
||
lang=EN-US>1KB</span>的复制缓冲区,置全<span lang=EN-US>0</span>。</p>
|
||
|
||
<p class=a><span lang=EN-US> // </span>然后以只读方式打开参数<span
|
||
lang=EN-US>1</span>指定的文件(<span lang=EN-US>bootsect</span>)。从中读取<span
|
||
lang=EN-US>32</span>字节的<span lang=EN-US>MINIX</span>执行文件头结构</p>
|
||
|
||
<p class=a><span lang=EN-US> // </span>内容(参见列表后说明)到缓冲区<span
|
||
lang=EN-US>buf</span>中。</p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>117</span></u><span
|
||
lang=EN-US> for
|
||
(i=0;i<sizeof <u><span style='color:blue'>buf</span></u>; i++) <u><span
|
||
style='color:blue'>buf</span></u>[i]=0;</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>118</span></u><span
|
||
lang=EN-US> if ((id=<u><span
|
||
style='color:blue'>open</span></u>(<u><span style='color:blue'>argv</span></u>[1],<u><span
|
||
style='color:blue'>O_RDONLY</span></u>,0))<0)</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>119</span></u><span
|
||
lang=EN-US> <u><span
|
||
style='color:blue'>die</span></u>(<i>"Unable to open 'boot'"</i>);</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>120</span></u><span
|
||
lang=EN-US> if (<u><span
|
||
style='color:blue'>read</span></u>(id,<u><span style='color:blue'>buf</span></u>,<u><span
|
||
style='color:blue'>MINIX_HEADER</span></u>) != <u><span style='color:blue'>MINIX_HEADER</span></u>)</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>121</span></u><span
|
||
lang=EN-US>
|
||
<u><span style='color:blue'>die</span></u>(<i>"Unable to read header of
|
||
'boot'"</i>);</span></p>
|
||
|
||
<p class=a><span lang=EN-US> // </span>接下来根据<span lang=EN-US>MINIX</span>头部结构判断<span
|
||
lang=EN-US>bootsect</span>是否为一个有效的<span lang=EN-US>MINIX</span>执行文件。若是,则从文件中</p>
|
||
|
||
<p class=a><span lang=EN-US> // </span>读取<span lang=EN-US>512</span>字节的引导扇区代码和数据。</p>
|
||
|
||
<p class=a><span lang=EN-US> // 0x0301 - MINIX</span>头部<span
|
||
lang=EN-US>a_magic</span>魔数;<span lang=EN-US>0x10 - a_flag</span>可执行;<span
|
||
lang=EN-US>0x04 - a_cpu, Intel 8086</span>机器码。</p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>122</span></u><span
|
||
lang=EN-US> if (((long *) <u><span
|
||
style='color:blue'>buf</span></u>)[0]!=0x04100301)</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>123</span></u><span
|
||
lang=EN-US>
|
||
<u><span style='color:blue'>die</span></u>(<i>"Non-Minix header of
|
||
'boot'"</i>);</span></p>
|
||
|
||
<p class=a><span lang=EN-US> // </span>判断头部长度字段<span
|
||
lang=EN-US>a_hdrlen</span>(字节)是否正确(<span lang=EN-US>32</span>字节)。(后三字节正好没有用,是<span
|
||
lang=EN-US>0</span>)</p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>124</span></u><span
|
||
lang=EN-US> if (((long *) <u><span
|
||
style='color:blue'>buf</span></u>)[1]!=<u><span style='color:blue'>MINIX_HEADER</span></u>)</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>125</span></u><span
|
||
lang=EN-US>
|
||
<u><span style='color:blue'>die</span></u>(<i>"Non-Minix header of
|
||
'boot'"</i>);</span></p>
|
||
|
||
<p class=a><span lang=EN-US> // </span>判断数据段长<span
|
||
lang=EN-US>a_data</span>字段<span lang=EN-US>(long)</span>内容是否为<span lang=EN-US>0</span>。</p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>126</span></u><span
|
||
lang=EN-US> if (((long *) <u><span
|
||
style='color:blue'>buf</span></u>)[3]!=0)</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>127</span></u><span
|
||
lang=EN-US>
|
||
<u><span style='color:blue'>die</span></u>(<i>"Illegal data segment in
|
||
'boot'"</i>);</span></p>
|
||
|
||
<p class=a><span lang=EN-US> // </span>判断堆<span lang=EN-US>a_bss</span>字段<span
|
||
lang=EN-US>(long)</span>内容是否为<span lang=EN-US>0</span>。</p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>128</span></u><span
|
||
lang=EN-US> if (((long *) <u><span
|
||
style='color:blue'>buf</span></u>)[4]!=0)</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>129</span></u><span
|
||
lang=EN-US>
|
||
<u><span style='color:blue'>die</span></u>(<i>"Illegal bss in 'boot'"</i>);</span></p>
|
||
|
||
<p class=a><span lang=EN-US> // </span>判断执行点<span lang=EN-US>a_entry</span>字段<span
|
||
lang=EN-US>(long)</span>内容是否为<span lang=EN-US>0</span>。</p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>130</span></u><span
|
||
lang=EN-US> if (((long *) <u><span
|
||
style='color:blue'>buf</span></u>)[5] != 0)</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>131</span></u><span
|
||
lang=EN-US>
|
||
<u><span style='color:blue'>die</span></u>(<i>"Non-Minix header of
|
||
'boot'"</i>);</span></p>
|
||
|
||
<p class=a><span lang=EN-US> // </span>判断符号表长字段<span
|
||
lang=EN-US>a_sym</span>的内容是否为<span lang=EN-US>0</span>。</p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>132</span></u><span
|
||
lang=EN-US> if (((long *) <u><span
|
||
style='color:blue'>buf</span></u>)[7] != 0)</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>133</span></u><span
|
||
lang=EN-US>
|
||
<u><span style='color:blue'>die</span></u>(<i>"Illegal symbol table in
|
||
'boot'"</i>);</span></p>
|
||
|
||
<p class=a><span lang=EN-US> // </span>在上述判断都正确的条件下读取文件中随后的实际代码数据,应该返回读取字节数为<span
|
||
lang=EN-US>512</span>字节。</p>
|
||
|
||
<p class=a><span lang=EN-US> // </span>因为<span lang=EN-US>bootsect</span>文件中包含的是<span
|
||
lang=EN-US>1</span>个扇区的引导扇区代码和数据,并且最后<span lang=EN-US>2</span>字节应该是可引导</p>
|
||
|
||
<p class=a><span lang=EN-US> // </span>标志<span lang=EN-US>0xAA55</span>。</p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>134</span></u><span
|
||
lang=EN-US> i=<u><span
|
||
style='color:blue'>read</span></u>(id,<u><span style='color:blue'>buf</span></u>,sizeof
|
||
<u><span style='color:blue'>buf</span></u>);</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>135</span></u><span
|
||
lang=EN-US> fprintf(stderr,<i>"Boot
|
||
sector %d bytes.\n"</i>,i);</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>136</span></u><span
|
||
lang=EN-US> if (i != 512)</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>137</span></u><span
|
||
lang=EN-US>
|
||
<u><span style='color:blue'>die</span></u>(<i>"Boot block must be exactly
|
||
512 bytes"</i>);</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>138</span></u><span
|
||
lang=EN-US> if ((*(unsigned
|
||
short *)(<u><span style='color:blue'>buf</span></u>+510)) != 0xAA55)</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>139</span></u><span
|
||
lang=EN-US>
|
||
<u><span style='color:blue'>die</span></u>(<i>"Boot block hasn't got boot
|
||
flag (0xAA55)"</i>);</span></p>
|
||
|
||
<p class=a><span lang=EN-US> // </span>引导扇区的<span lang=EN-US>506</span>、<span
|
||
lang=EN-US>507</span>偏移处需存放交换设备号,<span lang=EN-US>508</span>、<span lang=EN-US>509</span>偏移处需存放根设备号。</p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>140</span></u><span
|
||
lang=EN-US> <u><span
|
||
style='color:blue'>buf</span></u>[506] = (char) minor_swap;</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>141</span></u><span
|
||
lang=EN-US> <u><span
|
||
style='color:blue'>buf</span></u>[507] = (char) major_swap;</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>142</span></u><span
|
||
lang=EN-US> <u><span
|
||
style='color:blue'>buf</span></u>[508] = (char) minor_root;</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>143</span></u><span
|
||
lang=EN-US> <u><span
|
||
style='color:blue'>buf</span></u>[509] = (char) major_root; </span></p>
|
||
|
||
<p class=a><span lang=EN-US> // </span>然后将该<span lang=EN-US>512</span>字节的数据写到标准输出<span
|
||
lang=EN-US>stdout</span>,若写出字节数不对,则显示出错信息并退出。</p>
|
||
|
||
<p class=a><span lang=EN-US> // </span>在<span lang=EN-US>linux/Makefile</span>中,<span
|
||
lang=EN-US>build</span>程序标准输出被重定向到内核映像文件名<span lang=EN-US>Image</span>上,因此引导</p>
|
||
|
||
<p class=a><span lang=EN-US> // </span>扇区代码和数据会被写到<span
|
||
lang=EN-US>Image</span>开始的<span lang=EN-US>512</span>字节处。最后关闭<span lang=EN-US>bootsect</span>模块文件。</p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>144</span></u><span
|
||
lang=EN-US> i=<u><span
|
||
style='color:blue'>write</span></u>(1,<u><span style='color:blue'>buf</span></u>,512);</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>145</span></u><span
|
||
lang=EN-US> if (i!=512)</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>146</span></u><span
|
||
lang=EN-US>
|
||
<u><span style='color:blue'>die</span></u>(<i>"Write call failed"</i>);</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>147</span></u><span
|
||
lang=EN-US> <u><span
|
||
style='color:blue'>close</span></u> (id);</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>148</span></u><span
|
||
lang=EN-US> </span></p>
|
||
|
||
<p class=a><span lang=EN-US> // </span>下面以只读方式打开参数<span
|
||
lang=EN-US>2</span>指定的文件(<span lang=EN-US>setup</span>)。从中读取<span lang=EN-US>32</span>字节的<span
|
||
lang=EN-US>MINIX</span>执行文件头结构</p>
|
||
|
||
<p class=a><span lang=EN-US> // </span>内容到缓冲区<span
|
||
lang=EN-US>buf</span>中。处理方式与上面相同。首先以只读方式打开指定的文件<span lang=EN-US>setup</span>。从中读</p>
|
||
|
||
<p class=a><span lang=EN-US> // </span>取<span lang=EN-US>32</span>字节的<span
|
||
lang=EN-US>MINIX</span>执行文件头结构内容到缓冲区<span lang=EN-US>buf</span>中。</p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>149</span></u><span
|
||
lang=EN-US> if ((id=<u><span
|
||
style='color:blue'>open</span></u>(<u><span style='color:blue'>argv</span></u>[2],<u><span
|
||
style='color:blue'>O_RDONLY</span></u>,0))<0)</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>150</span></u><span
|
||
lang=EN-US>
|
||
<u><span style='color:blue'>die</span></u>(<i>"Unable to open
|
||
'setup'"</i>);</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>151</span></u><span
|
||
lang=EN-US> if (<u><span
|
||
style='color:blue'>read</span></u>(id,<u><span style='color:blue'>buf</span></u>,<u><span
|
||
style='color:blue'>MINIX_HEADER</span></u>) != <u><span style='color:blue'>MINIX_HEADER</span></u>)</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>152</span></u><span
|
||
lang=EN-US>
|
||
<u><span style='color:blue'>die</span></u>(<i>"Unable to read header of
|
||
'setup'"</i>);</span></p>
|
||
|
||
<p class=a><span lang=EN-US> // </span>接下来根据<span lang=EN-US>MINIX</span>头部结构判断<span
|
||
lang=EN-US>setup</span>是否为一个有效的<span lang=EN-US>MINIX</span>执行文件。若是,则从文件中</p>
|
||
|
||
<p class=a><span lang=EN-US> // </span>读取<span lang=EN-US>512</span>字节的引导扇区代码和数据。</p>
|
||
|
||
<p class=a><span lang=EN-US> // 0x0301- MINIX</span>头部<span
|
||
lang=EN-US>a_magic</span>魔数;<span lang=EN-US>0x10- a_flag</span>可执行;<span
|
||
lang=EN-US>0x04- a_cpu, Intel 8086</span>机器码。</p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>153</span></u><span
|
||
lang=EN-US> if (((long *) <u><span
|
||
style='color:blue'>buf</span></u>)[0]!=0x04100301)</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>154</span></u><span
|
||
lang=EN-US>
|
||
<u><span style='color:blue'>die</span></u>(<i>"Non-Minix header of
|
||
'setup'"</i>);</span></p>
|
||
|
||
<p class=a><span lang=EN-US> // </span>判断头部长度字段<span
|
||
lang=EN-US>a_hdrlen</span>(字节)是否正确(<span lang=EN-US>32</span>字节)。(后三字节正好没有用,是<span
|
||
lang=EN-US>0</span>)</p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>155</span></u><span
|
||
lang=EN-US> if (((long *) <u><span
|
||
style='color:blue'>buf</span></u>)[1]!=<u><span style='color:blue'>MINIX_HEADER</span></u>)</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>156</span></u><span
|
||
lang=EN-US>
|
||
<u><span style='color:blue'>die</span></u>(<i>"Non-Minix header of
|
||
'setup'"</i>);</span></p>
|
||
|
||
<p class=926><span lang=EN-US> // </span>判断数据段长字段<span
|
||
lang=EN-US>a_data</span>、堆字段<span lang=EN-US>a_bss</span>、起始执行点字段<span
|
||
lang=EN-US>a_entry</span>和符号表字段<span lang=EN-US>a_sym</span>的内容</p>
|
||
|
||
<p class=926><span lang=EN-US> // </span>是否为<span lang=EN-US>0</span>。必须都为<span
|
||
lang=EN-US>0</span>。</p>
|
||
|
||
<p class=926><u><span lang=EN-US style='color:blue'>157</span></u><span
|
||
lang=EN-US> if (((long *) <u><span
|
||
style='color:blue'>buf</span></u>)[3]!=0)
|
||
// </span>数据段长<span lang=EN-US>a_data</span>字段。</p>
|
||
|
||
<p class=926><u><span lang=EN-US style='color:blue'>158</span></u><span
|
||
lang=EN-US>
|
||
<u><span style='color:blue'>die</span></u>("Illegal data segment in
|
||
'setup'");</span></p>
|
||
|
||
<p class=926><u><span lang=EN-US style='color:blue'>159</span></u><span
|
||
lang=EN-US> if (((long *) <u><span
|
||
style='color:blue'>buf</span></u>)[4]!=0)
|
||
// </span>堆<span lang=EN-US>a_bss</span>字段。</p>
|
||
|
||
<p class=926><u><span lang=EN-US style='color:blue'>160</span></u><span
|
||
lang=EN-US>
|
||
<u><span style='color:blue'>die</span></u>(<i>"Illegal bss in
|
||
'setup'"</i>);</span></p>
|
||
|
||
<p class=926><u><span lang=EN-US style='color:blue'>161</span></u><span
|
||
lang=EN-US> if (((long *) <u><span
|
||
style='color:blue'>buf</span></u>)[5] != 0)
|
||
// </span>执行起始点<span lang=EN-US>a_entry</span>字段。</p>
|
||
|
||
<p class=926><u><span lang=EN-US style='color:blue'>162</span></u><span
|
||
lang=EN-US>
|
||
<u><span style='color:blue'>die</span></u>("Non-Minix header of
|
||
'setup'");</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>163</span></u><span
|
||
lang=EN-US> if (((long *) <u><span
|
||
style='color:blue'>buf</span></u>)[7] != 0)</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>164</span></u><span
|
||
lang=EN-US>
|
||
<u><span style='color:blue'>die</span></u>(<i>"Illegal symbol table in
|
||
'setup'"</i>);</span></p>
|
||
|
||
<p class=926><span lang=EN-US> // </span>在上述判断都正确的条件下读取文件中随后的实际代码数据,并且写到终端标准输出。同时统计</p>
|
||
|
||
<p class=926><span lang=EN-US> // </span>写的长度(<span
|
||
lang=EN-US>i</span>),并在操作结束后关闭<span lang=EN-US>setup</span>文件。之后判断一下利用<span
|
||
lang=EN-US>setup</span>执行写操作的代码</p>
|
||
|
||
<p class=926><span lang=EN-US> // </span>和数据长度值,该值不能大于<span
|
||
lang=EN-US>(SETUP_SECTS * 512)</span>字节,否则就得重新修改<span lang=EN-US>build</span>、<span
|
||
lang=EN-US>bootsect</span></p>
|
||
|
||
<p class=926><span lang=EN-US> // </span>和<span lang=EN-US>setup</span>程序中设定的<span
|
||
lang=EN-US>setup</span>所占扇区数并重新编译内核。若一切正常就显示<span lang=EN-US>setup</span>实际长度值。</p>
|
||
|
||
<p class=926><u><span lang=EN-US style='color:blue'>165</span></u><span
|
||
lang=EN-US> for (i=0 ; (c=<u><span
|
||
style='color:blue'>read</span></u>(id,<u><span style='color:blue'>buf</span></u>,sizeof
|
||
<u><span style='color:blue'>buf</span></u>))>0 ; i+=c )</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>166</span></u><span
|
||
lang=EN-US>
|
||
if (<u><span style='color:blue'>write</span></u>(1,<u><span style='color:blue'>buf</span></u>,c)!=c)</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>167</span></u><span
|
||
lang=EN-US>
|
||
<u><span style='color:blue'>die</span></u>(<i>"Write call failed"</i>);</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>168</span></u><span
|
||
lang=EN-US> <u><span
|
||
style='color:blue'>close</span></u> (id);
|
||
//</span>关闭<span lang=EN-US>setup</span>模块文件。</p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>169</span></u><span
|
||
lang=EN-US> if (i > <u><span
|
||
style='color:blue'>SETUP_SECTS</span></u>*512)</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>170</span></u><span
|
||
lang=EN-US>
|
||
<u><span style='color:blue'>die</span></u>(<i>"Setup exceeds "</i> <u><span
|
||
style='color:blue'>STRINGIFY</span></u>(<u><span style='color:blue'>SETUP_SECTS</span></u>)</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>171</span></u><span
|
||
lang=EN-US>
|
||
<i>" sectors - rewrite build/boot/setup"</i>);</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>172</span></u><span
|
||
lang=EN-US> fprintf(stderr,<i>"Setup
|
||
is %d bytes.\n"</i>,i);</span></p>
|
||
|
||
<p class=926><span lang=EN-US> // </span>在将缓冲区<span
|
||
lang=EN-US>buf</span>清零之后,判断实际写的<span lang=EN-US>setup</span>长度与<span
|
||
lang=EN-US>(SETUP_SECTS4*512)</span>的数值差,若<span lang=EN-US>setup</span></p>
|
||
|
||
<p class=926><span lang=EN-US> // </span>长度小于该长度(<span
|
||
lang=EN-US>4*512</span>字节),则用<span lang=EN-US>NULL</span>字符将<span lang=EN-US>setup</span>填足为<span
|
||
lang=EN-US>4*512</span>字节。</p>
|
||
|
||
<p class=926><u><span lang=EN-US style='color:blue'>173</span></u><span
|
||
lang=EN-US> for (c=0 ;
|
||
c<sizeof(<u><span style='color:blue'>buf</span></u>) ; c++)</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>174</span></u><span
|
||
lang=EN-US>
|
||
<u><span style='color:blue'>buf</span></u>[c] = <i>'\0'</i>;</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>175</span></u><span
|
||
lang=EN-US> while (i<<u><span
|
||
style='color:blue'>SETUP_SECTS</span></u>*512) {</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>176</span></u><span
|
||
lang=EN-US>
|
||
c = <u><span style='color:blue'>SETUP_SECTS</span></u>*512-i;</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>177</span></u><span
|
||
lang=EN-US>
|
||
if (c > sizeof(<u><span style='color:blue'>buf</span></u>))</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>178</span></u><span
|
||
lang=EN-US>
|
||
c = sizeof(<u><span style='color:blue'>buf</span></u>);</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>179</span></u><span
|
||
lang=EN-US>
|
||
if (<u><span style='color:blue'>write</span></u>(1,<u><span style='color:blue'>buf</span></u>,c)
|
||
!= c)</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>180</span></u><span
|
||
lang=EN-US>
|
||
<u><span style='color:blue'>die</span></u>(<i>"Write call failed"</i>);</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>181</span></u><span
|
||
lang=EN-US>
|
||
i += c;</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>182</span></u><span
|
||
lang=EN-US> }</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>183</span></u><span
|
||
lang=EN-US> </span></p>
|
||
|
||
<p class=926><span lang=EN-US> // </span>下面开始处理<span
|
||
lang=EN-US>system</span>模块文件。该文件使用<span lang=EN-US>gas</span>编译,因此具有<span
|
||
lang=EN-US>GNU a.out</span>目标文件格式。</p>
|
||
|
||
<p class=926><span lang=EN-US> // </span>首先以只读方式打开文件,并读取其中<span
|
||
lang=EN-US>a.out</span>格式头部结构信息(<span lang=EN-US>1KB</span>长度)。在判断<span
|
||
lang=EN-US>system</span></p>
|
||
|
||
<p class=926><span lang=EN-US> // </span>是一个有效的<span
|
||
lang=EN-US>a.out</span>格式文件之后,就把该文件随后的所有数据都写到标准输出(<span lang=EN-US>Image</span>文件)</p>
|
||
|
||
<p class=926><span lang=EN-US> // </span>中,并关闭该文件。然后显示<span
|
||
lang=EN-US>system</span>模块的长度。若<span lang=EN-US>system</span>代码和数据长度超过<span
|
||
lang=EN-US>SYS_SIZE</span>节</p>
|
||
|
||
<p class=926><span lang=EN-US> // </span>(即<span lang=EN-US>128KB</span>字节),则显示出错信息并退出。若无错,则返回<span
|
||
lang=EN-US>0</span>,表示正常退出。</p>
|
||
|
||
<p class=926><u><span lang=EN-US style='color:blue'>184</span></u><span
|
||
lang=EN-US> if ((id=<u><span
|
||
style='color:blue'>open</span></u>(<u><span style='color:blue'>argv</span></u>[3],<u><span
|
||
style='color:blue'>O_RDONLY</span></u>,0))<0)</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>185</span></u><span
|
||
lang=EN-US>
|
||
<u><span style='color:blue'>die</span></u>(<i>"Unable to open
|
||
'system'"</i>);</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>186</span></u><span
|
||
lang=EN-US> if (<u><span
|
||
style='color:blue'>read</span></u>(id,<u><span style='color:blue'>buf</span></u>,<u><span
|
||
style='color:blue'>GCC_HEADER</span></u>) != <u><span style='color:blue'>GCC_HEADER</span></u>)</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>187</span></u><span
|
||
lang=EN-US>
|
||
<u><span style='color:blue'>die</span></u>(<i>"Unable to read header of
|
||
'system'"</i>);</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>188</span></u><span
|
||
lang=EN-US> if (((long *) <u><span
|
||
style='color:blue'>buf</span></u>)[5] != 0) //
|
||
</span>执行入口点字段<span lang=EN-US>a_entry</span>值应为<span lang=EN-US>0</span>。</p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>189</span></u><span
|
||
lang=EN-US>
|
||
<u><span style='color:blue'>die</span></u>(<i>"Non-GCC header of
|
||
'system'"</i>);</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>190</span></u><span
|
||
lang=EN-US> for (i=0 ; (c=<u><span
|
||
style='color:blue'>read</span></u>(id,<u><span style='color:blue'>buf</span></u>,sizeof
|
||
<u><span style='color:blue'>buf</span></u>))>0 ; i+=c )</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>191</span></u><span
|
||
lang=EN-US>
|
||
if (<u><span style='color:blue'>write</span></u>(1,<u><span style='color:blue'>buf</span></u>,c)!=c)</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>192</span></u><span
|
||
lang=EN-US>
|
||
<u><span style='color:blue'>die</span></u>(<i>"Write call failed"</i>);</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>193</span></u><span
|
||
lang=EN-US> <u><span
|
||
style='color:blue'>close</span></u>(id);</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>194</span></u><span
|
||
lang=EN-US> fprintf(stderr,<i>"System
|
||
is %d bytes.\n"</i>,i);</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>195</span></u><span
|
||
lang=EN-US> if (i > <u><span
|
||
style='color:blue'>SYS_SIZE</span></u>*16)</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>196</span></u><span
|
||
lang=EN-US>
|
||
<u><span style='color:blue'>die</span></u>(<i>"System is too big"</i>);</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>197</span></u><span
|
||
lang=EN-US> return(0);</span></p>
|
||
|
||
<p class=a><u><span lang=EN-US style='color:blue'>198</span></u><span
|
||
lang=EN-US> }</span></p>
|
||
|
||
<p class=926><u><span lang=EN-US style='color:blue'>199</span></u><span
|
||
lang=EN-US> </span></p>
|
||
|
||
<div class=926 align=center style='text-align:center'><span lang=EN-US>
|
||
|
||
<hr size=4 width="100%" align=center>
|
||
|
||
</span></div>
|
||
|
||
<p class=MsoNormal><span lang=EN-US> </span></p>
|
||
|
||
<p class=MsoNormal><span lang=EN-US> </span></p>
|
||
|
||
</div>
|
||
|
||
</body>
|
||
|
||
</html>
|