From c20c866d22f810cd9edfd867408c6f314b0dbc44 Mon Sep 17 00:00:00 2001 From: oldlinux-web <160371214+oldlinux-web@users.noreply.github.com> Date: Sun, 17 Mar 2024 14:28:14 +0800 Subject: [PATCH] Fix display problems --- Book-Lite/code-list/html/P13-1.html | 2404 +++++++++++++------------- Book-Lite/code-list/html/P13-2.html | 630 +++---- Book-Lite/code-list/html/P13-3.html | 1256 +++++++------- Book-Lite/code-list/html/P14-1.html | 842 ++++----- Book-Lite/code-list/html/P14-10.html | 1352 +++++++-------- Book-Lite/code-list/html/P14-11.html | 680 ++++---- Book-Lite/code-list/html/P14-2.html | 628 +++---- Book-Lite/code-list/html/P14-3.html | 690 ++++---- Book-Lite/code-list/html/P14-4.html | 740 ++++---- Book-Lite/code-list/html/P14-5.html | 742 ++++---- Book-Lite/code-list/html/P14-6.html | 842 ++++----- Book-Lite/code-list/html/P14-7.html | 684 ++++---- Book-Lite/code-list/html/P14-8.html | 622 +++---- Book-Lite/code-list/html/P14-9.html | 1764 +++++++++---------- 14 files changed, 6938 insertions(+), 6938 deletions(-) diff --git a/Book-Lite/code-list/html/P13-1.html b/Book-Lite/code-list/html/P13-1.html index 1847eb0..45a7e14 100644 --- a/Book-Lite/code-list/html/P13-1.html +++ b/Book-Lite/code-list/html/P13-1.html @@ -11,24 +11,24 @@ {font-family:Wingdings; panose-1:5 0 0 0 0 0 0 0 0 0;} @font-face - {font-family:����; + {font-family:宋体; panose-1:2 1 6 0 3 1 1 1 1 1;} @font-face - {font-family:����; + {font-family:黑体; panose-1:2 1 6 9 6 1 1 1 1 1;} @font-face - {font-family:����; + {font-family:黑体; panose-1:2 1 6 9 6 1 1 1 1 1;} @font-face - {font-family:����С���μ���;} + {font-family:方正小标宋简体;} @font-face - {font-family:"\@����"; + {font-family:"\@黑体"; panose-1:2 1 6 9 6 1 1 1 1 1;} @font-face - {font-family:"\@����"; + {font-family:"\@宋体"; panose-1:2 1 6 0 3 1 1 1 1 1;} @font-face - {font-family:"\@����С���μ���";} + {font-family:"\@方正小标宋简体";} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {margin:0cm; @@ -36,9 +36,9 @@ text-align:justify; text-justify:inter-ideograph; font-size:10.5pt; - font-family:����;} + font-family:宋体;} h1 - {mso-style-link:"���� 1 Char"; + {mso-style-link:"标题 1 Char"; margin-top:17.0pt; margin-right:0cm; margin-bottom:16.5pt; @@ -47,10 +47,10 @@ h1 text-indent:-7.2pt; page-break-after:avoid; font-size:22.0pt; - font-family:����; + font-family:宋体; font-weight:bold;} h2 - {mso-style-link:"���� 2 Char"; + {mso-style-link:"标题 2 Char"; margin-top:13.0pt; margin-right:0cm; margin-bottom:13.0pt; @@ -63,7 +63,7 @@ h2 font-family:"Arial","sans-serif"; font-weight:bold;} h3 - {mso-style-link:"���� 3 Char"; + {mso-style-link:"标题 3 Char"; margin:0cm; margin-bottom:.0001pt; text-align:justify; @@ -74,7 +74,7 @@ h3 font-family:"Arial","sans-serif"; font-weight:bold;} h4 - {mso-style-link:"���� 4 Char"; + {mso-style-link:"标题 4 Char"; margin-top:0cm; margin-right:0cm; margin-bottom:0cm; @@ -88,7 +88,7 @@ h4 font-family:"Arial","sans-serif"; font-weight:bold;} h5 - {mso-style-link:"���� 5 Char"; + {mso-style-link:"标题 5 Char"; margin-top:14.0pt; margin-right:0cm; margin-bottom:14.5pt; @@ -99,10 +99,10 @@ h5 line-height:156%; page-break-after:avoid; font-size:14.0pt; - font-family:����; + font-family:宋体; font-weight:bold;} h6 - {mso-style-link:"���� 6 Char"; + {mso-style-link:"标题 6 Char"; margin-top:12.0pt; margin-right:0cm; margin-bottom:3.2pt; @@ -116,7 +116,7 @@ h6 font-family:"Arial","sans-serif"; font-weight:bold;} p.MsoHeading7, li.MsoHeading7, div.MsoHeading7 - {mso-style-link:"���� 7 Char"; + {mso-style-link:"标题 7 Char"; margin-top:12.0pt; margin-right:0cm; margin-bottom:3.2pt; @@ -127,10 +127,10 @@ p.MsoHeading7, li.MsoHeading7, div.MsoHeading7 line-height:133%; page-break-after:avoid; font-size:12.0pt; - font-family:����; + font-family:宋体; font-weight:bold;} p.MsoHeading8, li.MsoHeading8, div.MsoHeading8 - {mso-style-link:"���� 8 Char"; + {mso-style-link:"标题 8 Char"; margin-top:12.0pt; margin-right:0cm; margin-bottom:3.2pt; @@ -143,7 +143,7 @@ p.MsoHeading8, li.MsoHeading8, div.MsoHeading8 font-size:12.0pt; font-family:"Arial","sans-serif";} p.MsoHeading9, li.MsoHeading9, div.MsoHeading9 - {mso-style-link:"���� 9 Char"; + {mso-style-link:"标题 9 Char"; margin-top:12.0pt; margin-right:0cm; margin-bottom:3.2pt; @@ -165,7 +165,7 @@ p.MsoIndex1, li.MsoIndex1, div.MsoIndex1 text-justify:inter-ideograph; text-indent:-10.5pt; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.MsoIndex2, li.MsoIndex2, div.MsoIndex2 {margin-top:0cm; margin-right:0cm; @@ -176,7 +176,7 @@ p.MsoIndex2, li.MsoIndex2, div.MsoIndex2 text-justify:inter-ideograph; text-indent:-10.5pt; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.MsoIndex3, li.MsoIndex3, div.MsoIndex3 {margin-top:0cm; margin-right:0cm; @@ -187,7 +187,7 @@ p.MsoIndex3, li.MsoIndex3, div.MsoIndex3 text-justify:inter-ideograph; text-indent:-10.5pt; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.MsoIndex4, li.MsoIndex4, div.MsoIndex4 {margin-top:0cm; margin-right:0cm; @@ -198,7 +198,7 @@ p.MsoIndex4, li.MsoIndex4, div.MsoIndex4 text-justify:inter-ideograph; text-indent:-10.5pt; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.MsoIndex5, li.MsoIndex5, div.MsoIndex5 {margin-top:0cm; margin-right:0cm; @@ -209,7 +209,7 @@ p.MsoIndex5, li.MsoIndex5, div.MsoIndex5 text-justify:inter-ideograph; text-indent:-10.5pt; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.MsoIndex6, li.MsoIndex6, div.MsoIndex6 {margin-top:0cm; margin-right:0cm; @@ -220,7 +220,7 @@ p.MsoIndex6, li.MsoIndex6, div.MsoIndex6 text-justify:inter-ideograph; text-indent:-10.5pt; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.MsoIndex7, li.MsoIndex7, div.MsoIndex7 {margin-top:0cm; margin-right:0cm; @@ -231,7 +231,7 @@ p.MsoIndex7, li.MsoIndex7, div.MsoIndex7 text-justify:inter-ideograph; text-indent:-10.5pt; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.MsoIndex8, li.MsoIndex8, div.MsoIndex8 {margin-top:0cm; margin-right:0cm; @@ -242,7 +242,7 @@ p.MsoIndex8, li.MsoIndex8, div.MsoIndex8 text-justify:inter-ideograph; text-indent:-10.5pt; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.MsoIndex9, li.MsoIndex9, div.MsoIndex9 {margin-top:0cm; margin-right:0cm; @@ -253,14 +253,14 @@ p.MsoIndex9, li.MsoIndex9, div.MsoIndex9 text-justify:inter-ideograph; text-indent:-10.5pt; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.MsoToc1, li.MsoToc1, div.MsoToc1 {margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; font-size:10.5pt; - font-family:����; + font-family:宋体; font-weight:bold;} p.MsoToc2, li.MsoToc2, div.MsoToc2 {margin-top:0cm; @@ -271,7 +271,7 @@ p.MsoToc2, li.MsoToc2, div.MsoToc2 text-align:justify; text-justify:inter-ideograph; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.MsoToc3, li.MsoToc3, div.MsoToc3 {margin-top:0cm; margin-right:0cm; @@ -281,7 +281,7 @@ p.MsoToc3, li.MsoToc3, div.MsoToc3 text-align:justify; text-justify:inter-ideograph; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.MsoToc4, li.MsoToc4, div.MsoToc4 {margin-top:0cm; margin-right:0cm; @@ -289,7 +289,7 @@ p.MsoToc4, li.MsoToc4, div.MsoToc4 margin-left:31.5pt; margin-bottom:.0001pt; font-size:9.0pt; - font-family:����;} + font-family:宋体;} p.MsoToc5, li.MsoToc5, div.MsoToc5 {margin-top:0cm; margin-right:0cm; @@ -297,7 +297,7 @@ p.MsoToc5, li.MsoToc5, div.MsoToc5 margin-left:42.0pt; margin-bottom:.0001pt; font-size:9.0pt; - font-family:����;} + font-family:宋体;} p.MsoToc6, li.MsoToc6, div.MsoToc6 {margin-top:0cm; margin-right:0cm; @@ -305,7 +305,7 @@ p.MsoToc6, li.MsoToc6, div.MsoToc6 margin-left:52.5pt; margin-bottom:.0001pt; font-size:9.0pt; - font-family:����;} + font-family:宋体;} p.MsoToc7, li.MsoToc7, div.MsoToc7 {margin-top:0cm; margin-right:0cm; @@ -313,7 +313,7 @@ p.MsoToc7, li.MsoToc7, div.MsoToc7 margin-left:63.0pt; margin-bottom:.0001pt; font-size:9.0pt; - font-family:����;} + font-family:宋体;} p.MsoToc8, li.MsoToc8, div.MsoToc8 {margin-top:0cm; margin-right:0cm; @@ -321,7 +321,7 @@ p.MsoToc8, li.MsoToc8, div.MsoToc8 margin-left:73.5pt; margin-bottom:.0001pt; font-size:9.0pt; - font-family:����;} + font-family:宋体;} p.MsoToc9, li.MsoToc9, div.MsoToc9 {margin-top:0cm; margin-right:0cm; @@ -329,22 +329,22 @@ p.MsoToc9, li.MsoToc9, div.MsoToc9 margin-left:84.0pt; margin-bottom:.0001pt; font-size:9.0pt; - font-family:����;} + font-family:宋体;} p.MsoFootnoteText, li.MsoFootnoteText, div.MsoFootnoteText - {mso-style-link:"��ע�ı� Char"; + {mso-style-link:"脚注文本 Char"; margin:0cm; margin-bottom:.0001pt; layout-grid-mode:char; font-size:9.0pt; - font-family:����;} + font-family:宋体;} p.MsoCommentText, li.MsoCommentText, div.MsoCommentText - {mso-style-link:"��ע���� Char"; + {mso-style-link:"批注文字 Char"; margin:0cm; margin-bottom:.0001pt; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.MsoHeader, li.MsoHeader, div.MsoHeader - {mso-style-link:"ҳü Char"; + {mso-style-link:"页眉 Char"; margin:0cm; margin-bottom:.0001pt; text-align:center; @@ -352,22 +352,22 @@ p.MsoHeader, li.MsoHeader, div.MsoHeader border:none; padding:0cm; font-size:9.0pt; - font-family:����;} + font-family:宋体;} p.MsoFooter, li.MsoFooter, div.MsoFooter - {mso-style-link:"ҳ�� Char"; + {mso-style-link:"页脚 Char"; margin:0cm; margin-bottom:.0001pt; layout-grid-mode:char; font-size:9.0pt; - font-family:����;} + font-family:宋体;} p.MsoIndexHeading, li.MsoIndexHeading, div.MsoIndexHeading - {mso-style-name:"��������\,������Ŀ\,������Ŀ1\,������Ŀ2"; + {mso-style-name:"索引标题\,索引类目\,索引类目1\,索引类目2"; margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.MsoCaption, li.MsoCaption, div.MsoCaption {margin:0cm; margin-bottom:.0001pt; @@ -385,7 +385,7 @@ p.MsoTof, li.MsoTof, div.MsoTof text-justify:inter-ideograph; text-indent:-21.0pt; font-size:10.5pt; - font-family:����;} + font-family:宋体;} span.MsoFootnoteReference {vertical-align:super;} p.MsoList, li.MsoList, div.MsoList @@ -397,22 +397,22 @@ p.MsoList, li.MsoList, div.MsoList text-align:center; text-indent:-21.0pt; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.MsoList2, li.MsoList2, div.MsoList2 {margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.MsoList4, li.MsoList4, div.MsoList4 {margin:0cm; margin-bottom:.0001pt; text-align:center; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.MsoDate, li.MsoDate, div.MsoDate - {mso-style-link:"���� Char"; + {mso-style-link:"日期 Char"; margin-top:0cm; margin-right:0cm; margin-bottom:0cm; @@ -421,46 +421,46 @@ p.MsoDate, li.MsoDate, div.MsoDate text-align:justify; text-justify:inter-ideograph; font-size:10.5pt; - font-family:����;} + font-family:宋体;} a:link, span.MsoHyperlink - {mso-style-name:"������\,��������"; + {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"; + {mso-style-name:"普通\(网站\)\,普通 \(Web\)\,普通 \(Web\)1\,普通 \(Web\)2\,普通 \(Web\)3"; margin-right:0cm; margin-left:0cm; font-size:12.0pt; - font-family:����;} + font-family:宋体;} 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"; + {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:����;} + font-family:宋体;} tt - {font-family:����;} + {font-family:黑体;} p.MsoCommentSubject, li.MsoCommentSubject, div.MsoCommentSubject - {mso-style-link:"��ע���� Char"; + {mso-style-link:"批注主题 Char"; margin:0cm; margin-bottom:.0001pt; font-size:10.5pt; - font-family:����; + font-family:宋体; font-weight:bold;} p.MsoAcetate, li.MsoAcetate, div.MsoAcetate - {mso-style-link:"��ע���ı� Char"; + {mso-style-link:"批注框文本 Char"; margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; font-size:9.0pt; - font-family:����;} + font-family:宋体;} p.1, li.1, div.1 - {mso-style-name:��ʽ1; + {mso-style-name:样式1; margin-top:0cm; margin-right:0cm; margin-bottom:0cm; @@ -469,213 +469,213 @@ p.1, li.1, div.1 text-align:center; text-indent:-21.0pt; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.a, li.a, div.a - {mso-style-name:�������; - mso-style-link:"������� Char"; + {mso-style-name:代码程序; + mso-style-link:"代码程序 Char"; margin:0cm; margin-bottom:.0001pt; font-size:10.0pt; - font-family:����;} + font-family:宋体;} span.Char - {mso-style-name:"������� Char"; - mso-style-link:�������; - font-family:����;} + {mso-style-name:"代码程序 Char"; + mso-style-link:代码程序; + font-family:宋体;} p.a0, li.a0, div.a0 - {mso-style-name:ͼ˵��; - mso-style-link:"ͼ˵�� Char"; + {mso-style-name:图说明; + mso-style-link:"图说明 Char"; margin:0cm; margin-bottom:.0001pt; text-align:center; font-size:10.5pt; - font-family:����;} + font-family:宋体;} span.Char0 - {mso-style-name:"ͼ˵�� Char"; - mso-style-link:ͼ˵��; - font-family:����;} + {mso-style-name:"图说明 Char"; + mso-style-link:图说明; + font-family:宋体;} p.0, li.0, div.0 - {mso-style-name:����0; + {mso-style-name:封面0; margin:0cm; margin-bottom:.0001pt; text-align:center; font-size:36.0pt; - font-family:����; + font-family:宋体; font-weight:bold;} p.10, li.10, div.10 - {mso-style-name:����1; + {mso-style-name:封面1; margin:0cm; margin-bottom:.0001pt; text-align:center; font-size:18.0pt; - font-family:����; + font-family:宋体; font-weight:bold;} p.11, li.11, div.11 - {mso-style-name:�DZ���1; + {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-family:宋体; font-weight:bold;} p.a1, li.a1, div.a1 - {mso-style-name:�ı�����; + {mso-style-name:文本居中; margin:0cm; margin-bottom:.0001pt; text-align:center; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.3CharChar, li.3CharChar, div.3CharChar - {mso-style-name:"ͼ������3 Char Char"; - mso-style-link:"ͼ������3 Char Char Char"; + {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:����;} + font-family:宋体;} span.3CharCharChar - {mso-style-name:"ͼ������3 Char Char Char"; - mso-style-link:"ͼ������3 Char Char"; - font-family:����;} + {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; + {mso-style-name:邮件post; margin:0cm; margin-bottom:.0001pt; text-align:right; line-height:11.0pt; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.3, li.3, div.3 - {mso-style-name:ͼ������3; + {mso-style-name:图中字体3; margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; font-size:10.5pt; - font-family:����;} + font-family:宋体;} span.3CharChar1CharCharChar - {mso-style-name:"ͼ������3 Char Char1 Char Char Char"; - font-family:����;} + {mso-style-name:"图中文字3 Char Char1 Char Char Char"; + font-family:宋体;} span.3CharChar1CharChar - {mso-style-name:"ͼ������3 Char Char1 Char Char"; - font-family:����;} + {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"; + {mso-style-name:"图中文字5号 Char"; + mso-style-link:"图中文字5号 Char Char"; margin:0cm; margin-bottom:.0001pt; text-align:center; font-size:10.5pt; - font-family:����;} + font-family:宋体;} span.5CharChar - {mso-style-name:"ͼ������5�� Char Char"; - mso-style-link:"ͼ������5�� Char"; - font-family:����;} + {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"; + {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:����;} + font-family:宋体;} span.5CharCharChar - {mso-style-name:"ͼ������С5�� Char Char Char"; - mso-style-link:"ͼ������С5�� Char Char"; - font-family:����;} + {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"; + {mso-style-name:"图中文字小5号 Char"; margin:0cm; margin-bottom:.0001pt; text-align:center; font-size:9.0pt; - font-family:����;} + font-family:宋体;} p.5, li.5, div.5 - {mso-style-name:ͼ������С5��; + {mso-style-name:图中文字小5号; margin:0cm; margin-bottom:.0001pt; text-align:center; layout-grid-mode:char; font-size:9.0pt; - font-family:����;} + font-family:宋体;} p.2, li.2, div.2 - {mso-style-name:�������2; + {mso-style-name:代码程序2; margin:0cm; margin-bottom:.0001pt; font-size:10.0pt; - font-family:����;} + font-family:宋体;} p.20, li.20, div.20 - {mso-style-name:ͼ˵��2; + {mso-style-name:图说明2; margin:0cm; margin-bottom:.0001pt; text-align:center; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.21, li.21, div.21 - {mso-style-name:�ı�����2; + {mso-style-name:文本居中2; margin:0cm; margin-bottom:.0001pt; text-align:center; font-size:10.5pt; - font-family:����;} + font-family:宋体;} 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"; + {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:����;} + font-family:宋体;} span.3CharCharCharCharCharChar - {mso-style-name:"ͼ������3 Char Char Char Char Char Char"; - mso-style-link:"ͼ������3 Char Char Char Char Char"; - font-family:����;} + {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:ͼ����; + {mso-style-name:图居中; margin:0cm; margin-bottom:.0001pt; text-align:center; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.110, li.110, div.110 - {mso-style-name:"��ʽ ���� 1 + ����1"; + {mso-style-name:"样式 标题 1 + 居中1"; margin-right:0cm; margin-left:0cm; text-align:center; page-break-after:avoid; font-size:22.0pt; - font-family:����; + font-family:宋体; font-weight:bold;} span.1Char - {mso-style-name:"���� 1 Char"; - mso-style-link:"���� 1"; + {mso-style-name:"标题 1 Char"; + mso-style-link:"标题 1"; font-weight:bold;} p.22, li.22, div.22 - {mso-style-name:"��ʽ �б� 2 + ����"; + {mso-style-name:"样式 列表 2 + 居中"; margin:0cm; margin-bottom:.0001pt; text-align:center; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.23, li.23, div.23 - {mso-style-name:�б�2; + {mso-style-name:列表2; margin:0cm; margin-bottom:.0001pt; text-align:center; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.50, li.50, div.50 - {mso-style-name:ͼ������5��; + {mso-style-name:图中文字5号; margin:0cm; margin-bottom:.0001pt; text-align:center; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.111, li.111, div.111 - {mso-style-name:��ʽ11; + {mso-style-name:样式11; margin-top:0cm; margin-right:0cm; margin-bottom:0cm; @@ -684,107 +684,107 @@ p.111, li.111, div.111 text-align:center; text-indent:-21.0pt; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.12, li.12, div.12 - {mso-style-name:�������1; + {mso-style-name:代码程序1; margin:0cm; margin-bottom:.0001pt; font-size:10.0pt; - font-family:����;} + font-family:宋体;} p.13, li.13, div.13 - {mso-style-name:ͼ˵��1; + {mso-style-name:图说明1; margin:0cm; margin-bottom:.0001pt; text-align:center; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.01, li.01, div.01 - {mso-style-name:����01; + {mso-style-name:封面01; margin:0cm; margin-bottom:.0001pt; text-align:center; font-size:36.0pt; - font-family:����; + font-family:宋体; font-weight:bold;} p.112, li.112, div.112 - {mso-style-name:����11; + {mso-style-name:封面11; margin:0cm; margin-bottom:.0001pt; text-align:center; font-size:18.0pt; - font-family:����; + font-family:宋体; font-weight:bold;} p.113, li.113, div.113 - {mso-style-name:�DZ���11; + {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-family:宋体; font-weight:bold;} p.14, li.14, div.14 - {mso-style-name:�ı�����1; + {mso-style-name:文本居中1; margin:0cm; margin-bottom:.0001pt; text-align:center; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.3Char1, li.3Char1, div.3Char1 - {mso-style-name:"ͼ������3 Char1"; + {mso-style-name:"图中文字3 Char1"; margin:0cm; margin-bottom:.0001pt; text-align:center; line-height:9.0pt; font-size:8.0pt; - font-family:����;} + font-family:宋体;} p.post1, li.post1, div.post1 - {mso-style-name:�ʼ�post1; + {mso-style-name:邮件post1; margin:0cm; margin-bottom:.0001pt; text-align:right; line-height:11.0pt; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.31, li.31, div.31 - {mso-style-name:ͼ������31; + {mso-style-name:图中字体31; margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.5Char1, li.5Char1, div.5Char1 - {mso-style-name:"ͼ������5�� Char1"; + {mso-style-name:"图中文字5号 Char1"; margin:0cm; margin-bottom:.0001pt; text-align:center; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.5CharChar1, li.5CharChar1, div.5CharChar1 - {mso-style-name:"ͼ������С5�� Char Char1"; + {mso-style-name:"图中文字小5号 Char Char1"; margin:0cm; margin-bottom:.0001pt; text-align:center; font-size:9.0pt; - font-family:����;} + font-family:宋体;} p.5Char10, li.5Char10, div.5Char10 - {mso-style-name:"ͼ������С5�� Char1"; + {mso-style-name:"图中文字小5号 Char1"; margin:0cm; margin-bottom:.0001pt; text-align:center; font-size:9.0pt; - font-family:����;} + font-family:宋体;} p.51, li.51, div.51 - {mso-style-name:ͼ������С5��1; + {mso-style-name:图中文字小5号1; margin:0cm; margin-bottom:.0001pt; text-align:center; font-size:9.0pt; - font-family:����;} + font-family:宋体;} p.120, li.120, div.120 - {mso-style-name:��ʽ12; + {mso-style-name:样式12; margin-top:0cm; margin-right:0cm; margin-bottom:0cm; @@ -793,81 +793,81 @@ p.120, li.120, div.120 text-align:center; text-indent:-21.0pt; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.02, li.02, div.02 - {mso-style-name:����02; + {mso-style-name:封面02; margin:0cm; margin-bottom:.0001pt; text-align:center; font-size:36.0pt; - font-family:����; + font-family:宋体; font-weight:bold;} p.121, li.121, div.121 - {mso-style-name:����12; + {mso-style-name:封面12; margin:0cm; margin-bottom:.0001pt; text-align:center; font-size:18.0pt; - font-family:����; + font-family:宋体; font-weight:bold;} p.122, li.122, div.122 - {mso-style-name:�DZ���12; + {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-family:宋体; font-weight:bold;} p.3Char2, li.3Char2, div.3Char2 - {mso-style-name:"ͼ������3 Char2"; + {mso-style-name:"图中文字3 Char2"; margin:0cm; margin-bottom:.0001pt; text-align:center; line-height:9.0pt; font-size:8.0pt; - font-family:����;} + font-family:宋体;} p.post2, li.post2, div.post2 - {mso-style-name:�ʼ�post2; + {mso-style-name:邮件post2; margin:0cm; margin-bottom:.0001pt; text-align:right; line-height:11.0pt; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.32, li.32, div.32 - {mso-style-name:ͼ������32; + {mso-style-name:图中字体32; margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.5Char2, li.5Char2, div.5Char2 - {mso-style-name:"ͼ������С5�� Char2"; + {mso-style-name:"图中文字小5号 Char2"; margin:0cm; margin-bottom:.0001pt; text-align:center; font-size:9.0pt; - font-family:����;} + font-family:宋体;} p.52, li.52, div.52 - {mso-style-name:ͼ������С5��2; + {mso-style-name:图中文字小5号2; margin:0cm; margin-bottom:.0001pt; text-align:center; font-size:9.0pt; - font-family:����;} + font-family:宋体;} p.3CharCharCharChar, li.3CharCharCharChar, div.3CharCharCharChar - {mso-style-name:"ͼ������3 Char Char Char Char"; + {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:����;} + font-family:宋体;} p.130, li.130, div.130 - {mso-style-name:��ʽ13; + {mso-style-name:样式13; margin-top:0cm; margin-right:0cm; margin-bottom:0cm; @@ -876,129 +876,129 @@ p.130, li.130, div.130 text-align:center; text-indent:-21.0pt; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.30, li.30, div.30 - {mso-style-name:�������3; + {mso-style-name:代码程序3; margin:0cm; margin-bottom:.0001pt; font-size:10.0pt; - font-family:����;} + font-family:宋体;} p.03, li.03, div.03 - {mso-style-name:����03; + {mso-style-name:封面03; margin:0cm; margin-bottom:.0001pt; text-align:center; font-size:36.0pt; - font-family:����; + font-family:宋体; font-weight:bold;} p.131, li.131, div.131 - {mso-style-name:����13; + {mso-style-name:封面13; margin:0cm; margin-bottom:.0001pt; text-align:center; font-size:18.0pt; - font-family:����; + font-family:宋体; font-weight:bold;} p.132, li.132, div.132 - {mso-style-name:�DZ���13; + {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-family:宋体; font-weight:bold;} p.33, li.33, div.33 - {mso-style-name:�ı�����3; + {mso-style-name:文本居中3; margin:0cm; margin-bottom:.0001pt; text-align:center; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.3Char3, li.3Char3, div.3Char3 - {mso-style-name:"ͼ������3 Char3"; + {mso-style-name:"图中文字3 Char3"; margin:0cm; margin-bottom:.0001pt; text-align:center; line-height:9.0pt; font-size:8.0pt; - font-family:����;} + font-family:宋体;} p.post3, li.post3, div.post3 - {mso-style-name:�ʼ�post3; + {mso-style-name:邮件post3; margin:0cm; margin-bottom:.0001pt; text-align:right; line-height:11.0pt; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.330, li.330, div.330 - {mso-style-name:ͼ������33; + {mso-style-name:图中字体33; margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.5Char20, li.5Char20, div.5Char20 - {mso-style-name:"ͼ������5�� Char2"; + {mso-style-name:"图中文字5号 Char2"; margin:0cm; margin-bottom:.0001pt; text-align:center; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.5CharChar2, li.5CharChar2, div.5CharChar2 - {mso-style-name:"ͼ������С5�� Char Char2"; + {mso-style-name:"图中文字小5号 Char Char2"; margin:0cm; margin-bottom:.0001pt; text-align:center; font-size:9.0pt; - font-family:����;} + font-family:宋体;} p.5Char3, li.5Char3, div.5Char3 - {mso-style-name:"ͼ������С5�� Char3"; + {mso-style-name:"图中文字小5号 Char3"; margin:0cm; margin-bottom:.0001pt; text-align:center; font-size:9.0pt; - font-family:����;} + font-family:宋体;} p.53, li.53, div.53 - {mso-style-name:ͼ������С5��3; + {mso-style-name:图中文字小5号3; margin:0cm; margin-bottom:.0001pt; text-align:center; font-size:9.0pt; - font-family:����;} + font-family:宋体;} p.3Char, li.3Char, div.3Char - {mso-style-name:"ͼ������3 Char"; - mso-style-link:"ͼ������3 Char Char5"; + {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:����;} + font-family:宋体;} span.3CharChar5 - {mso-style-name:"ͼ������3 Char Char5"; - mso-style-link:"ͼ������3 Char"; - font-family:����;} + {mso-style-name:"图中文字3 Char Char5"; + mso-style-link:"图中文字3 Char"; + font-family:宋体;} p.54, li.54, div.54 - {mso-style-name:ͼ������С5����; + {mso-style-name:图中文字小5紧密; margin:0cm; margin-bottom:.0001pt; line-height:9.0pt; text-autospace:ideograph-numeric; font-size:9.0pt; - font-family:����;} + font-family:宋体;} p.24, li.24, div.24 - {mso-style-name:����2�Ŵ�����; + {mso-style-name:居中2号粗宋体; margin:0cm; margin-bottom:.0001pt; text-align:center; font-size:22.0pt; - font-family:����; + font-family:宋体; font-weight:bold;} p.15, li.15, div.15 - {mso-style-name:"��ʽ ���� 1 + ����"; + {mso-style-name:"样式 标题 1 + 居中"; margin-top:17.0pt; margin-right:0cm; margin-bottom:16.5pt; @@ -1006,10 +1006,10 @@ p.15, li.15, div.15 text-align:center; page-break-after:avoid; font-size:22.0pt; - font-family:����; + font-family:宋体; font-weight:bold;} p.25, li.25, div.25 - {mso-style-name:"��ʽ ���� 2 + �о�\: �����о�"; + {mso-style-name:"样式 标题 2 + 行距\: 单倍行距"; margin-top:13.0pt; margin-right:0cm; margin-bottom:13.0pt; @@ -1022,33 +1022,33 @@ p.25, li.25, div.25 font-family:"Arial","sans-serif"; font-weight:bold;} span.2Char - {mso-style-name:"���� 2 Char"; - mso-style-link:"���� 2"; + {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; + {mso-style-name:列表3; margin:0cm; margin-bottom:.0001pt; text-align:center; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.35, li.35, div.35 - {mso-style-name:��3; + {mso-style-name:表3; margin:0cm; margin-bottom:.0001pt; text-align:center; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.4, li.4, div.4 - {mso-style-name:ͼ˵��4; + {mso-style-name:图说明4; margin:0cm; margin-bottom:.0001pt; text-align:center; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.40, li.40, div.40 - {mso-style-name:�б�4; + {mso-style-name:列表4; margin-top:0cm; margin-right:0cm; margin-bottom:0cm; @@ -1057,168 +1057,168 @@ p.40, li.40, div.40 text-align:center; text-indent:-21.0pt; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.41, li.41, div.41 - {mso-style-name:��4; + {mso-style-name:表4; margin:0cm; margin-bottom:.0001pt; text-align:center; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.55, li.55, div.55 - {mso-style-name:ͼ˵��5; + {mso-style-name:图说明5; margin:0cm; margin-bottom:.0001pt; text-align:center; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.56, li.56, div.56 - {mso-style-name:�б�5; + {mso-style-name:列表5; margin:0cm; margin-bottom:.0001pt; text-align:center; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.57, li.57, div.57 - {mso-style-name:��5; + {mso-style-name:表5; margin:0cm; margin-bottom:.0001pt; text-align:center; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.6, li.6, div.6 - {mso-style-name:�б�6; + {mso-style-name:列表6; margin:0cm; margin-bottom:.0001pt; text-align:center; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.60, li.60, div.60 - {mso-style-name:��6; + {mso-style-name:表6; margin:0cm; margin-bottom:.0001pt; text-align:center; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.61, li.61, div.61 - {mso-style-name:ͼ˵��6; + {mso-style-name:图说明6; margin:0cm; margin-bottom:.0001pt; text-align:center; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.7, li.7, div.7 - {mso-style-name:�б�7; + {mso-style-name:列表7; margin:0cm; margin-bottom:.0001pt; text-align:center; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.70, li.70, div.70 - {mso-style-name:ͼ˵��7; + {mso-style-name:图说明7; margin:0cm; margin-bottom:.0001pt; text-align:center; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.71, li.71, div.71 - {mso-style-name:��7; + {mso-style-name:表7; margin:0cm; margin-bottom:.0001pt; text-align:center; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.8, li.8, div.8 - {mso-style-name:�б�8; + {mso-style-name:列表8; margin:0cm; margin-bottom:.0001pt; text-align:center; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.9, li.9, div.9 - {mso-style-name:�б�9; + {mso-style-name:列表9; margin:0cm; margin-bottom:.0001pt; text-align:center; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.90, li.90, div.90 - {mso-style-name:ͼ˵��9; + {mso-style-name:图说明9; margin:0cm; margin-bottom:.0001pt; text-align:center; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.100, li.100, div.100 - {mso-style-name:�б�10; + {mso-style-name:列表10; margin:0cm; margin-bottom:.0001pt; text-align:center; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.101, li.101, div.101 - {mso-style-name:ͼ˵��10; + {mso-style-name:图说明10; margin:0cm; margin-bottom:.0001pt; text-align:center; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.114, li.114, div.114 - {mso-style-name:�б�11; + {mso-style-name:列表11; margin:0cm; margin-bottom:.0001pt; text-align:center; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.115, li.115, div.115 - {mso-style-name:ͼ˵��11; + {mso-style-name:图说明11; margin:0cm; margin-bottom:.0001pt; text-align:center; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.116, li.116, div.116 - {mso-style-name:��11; + {mso-style-name:表11; margin:0cm; margin-bottom:.0001pt; text-align:center; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.123, li.123, div.123 - {mso-style-name:�б�12; + {mso-style-name:列表12; margin:0cm; margin-bottom:.0001pt; text-align:center; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.124, li.124, div.124 - {mso-style-name:ͼ˵��12; + {mso-style-name:图说明12; margin:0cm; margin-bottom:.0001pt; text-align:center; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.133, li.133, div.133 - {mso-style-name:ͼ˵��13; - mso-style-link:"ͼ˵��13 Char"; + {mso-style-name:图说明13; + mso-style-link:"图说明13 Char"; margin:0cm; margin-bottom:.0001pt; text-align:center; font-size:10.5pt; - font-family:����;} + font-family:宋体;} span.13Char - {mso-style-name:"ͼ˵��13 Char"; - mso-style-link:ͼ˵��13; - font-family:����;} + {mso-style-name:"图说明13 Char"; + mso-style-link:图说明13; + font-family:宋体;} p.134, li.134, div.134 - {mso-style-name:�б�13; + {mso-style-name:列表13; margin:0cm; margin-bottom:.0001pt; text-align:center; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.26, li.26, div.26 - {mso-style-name:��¼2; + {mso-style-name:附录2; margin-top:13.0pt; margin-right:0cm; margin-bottom:13.0pt; @@ -1230,7 +1230,7 @@ p.26, li.26, div.26 font-family:"Arial","sans-serif"; font-weight:bold;} p.36, li.36, div.36 - {mso-style-name:��¼3; + {mso-style-name:附录3; margin:0cm; margin-bottom:.0001pt; text-align:justify; @@ -1240,12 +1240,12 @@ p.36, li.36, div.36 font-family:"Arial","sans-serif"; font-weight:bold;} span.3Char0 - {mso-style-name:"���� 3 Char"; - mso-style-link:"���� 3"; + {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; + {mso-style-name:附录1; margin-top:17.0pt; margin-right:0cm; margin-bottom:16.5pt; @@ -1253,17 +1253,17 @@ p.16, li.16, div.16 text-align:center; page-break-after:avoid; font-size:22.0pt; - font-family:����; + font-family:宋体; font-weight:bold;} p.17, li.17, div.17 - {mso-style-name:��¼��1; + {mso-style-name:附录表1; margin:0cm; margin-bottom:.0001pt; text-align:center; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.42, li.42, div.42 - {mso-style-name:��¼4; + {mso-style-name:附录4; margin:0cm; margin-bottom:.0001pt; text-align:justify; @@ -1273,19 +1273,19 @@ p.42, li.42, div.42 font-family:"Arial","sans-serif"; font-weight:bold;} span.4Char - {mso-style-name:"���� 4 Char"; - mso-style-link:"���� 4"; + {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:��¼ͼ˵��; + {mso-style-name:附录图说明; margin:0cm; margin-bottom:.0001pt; text-align:center; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.27, li.27, div.27 - {mso-style-name:�����2; + {mso-style-name:序标题2; margin-top:13.0pt; margin-right:0cm; margin-bottom:13.0pt; @@ -1298,7 +1298,7 @@ p.27, li.27, div.27 font-family:"Arial","sans-serif"; font-weight:bold;} p.a4, li.a4, div.a4 - {mso-style-name:�ο�����; + {mso-style-name:参考标题; margin-top:7.8pt; margin-right:0cm; margin-bottom:7.8pt; @@ -1306,10 +1306,10 @@ p.a4, li.a4, div.a4 text-align:center; page-break-after:avoid; font-size:22.0pt; - font-family:����; + font-family:宋体; font-weight:bold;} p.18, li.18, div.18 - {mso-style-name:��������1; + {mso-style-name:索引标题1; margin-top:7.8pt; margin-right:0cm; margin-bottom:7.8pt; @@ -1317,10 +1317,10 @@ p.18, li.18, div.18 text-align:center; page-break-after:avoid; font-size:22.0pt; - font-family:����; + font-family:宋体; font-weight:bold;} p.19, li.19, div.19 - {mso-style-name:�б�1; + {mso-style-name:列表1; margin-top:0cm; margin-right:0cm; margin-bottom:0cm; @@ -1329,9 +1329,9 @@ p.19, li.19, div.19 text-align:center; text-indent:-21.25pt; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.1a, li.1a, div.1a - {mso-style-name:��1; + {mso-style-name:表1; margin-top:0cm; margin-right:0cm; margin-bottom:0cm; @@ -1340,38 +1340,38 @@ p.1a, li.1a, div.1a text-align:center; text-indent:-21.25pt; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.37, li.37, div.37 - {mso-style-name:ͼ˵��3; + {mso-style-name:图说明3; margin:0cm; margin-bottom:.0001pt; text-align:center; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.62, li.62, div.62 - {mso-style-name:��������6��; + {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:����;} + font-family:宋体;} p.a5, li.a5, div.a5 - {mso-style-name:���Ĵ���; - mso-style-link:"���Ĵ��� Char"; + {mso-style-name:正文代码; + mso-style-link:"正文代码 Char"; margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; font-size:10.5pt; - font-family:����;} + font-family:宋体;} span.Char1 - {mso-style-name:"���Ĵ��� Char"; - mso-style-link:���Ĵ���; - font-family:����;} + {mso-style-name:"正文代码 Char"; + mso-style-link:正文代码; + font-family:宋体;} p.43, li.43, div.43 - {mso-style-name:"��ʽ ���� 4 +"; + {mso-style-name:"样式 标题 4 +"; margin:0cm; margin-bottom:.0001pt; text-align:justify; @@ -1381,7 +1381,7 @@ p.43, li.43, div.43 font-family:"Arial","sans-serif"; font-weight:bold;} p.140, li.140, div.140 - {mso-style-name:��14; + {mso-style-name:表14; margin-top:0cm; margin-right:0cm; margin-bottom:0cm; @@ -1390,10 +1390,10 @@ p.140, li.140, div.140 text-align:center; text-indent:-21.25pt; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.141, li.141, div.141 - {mso-style-name:ͼ˵��14; - mso-style-link:"ͼ˵��14 Char"; + {mso-style-name:图说明14; + mso-style-link:"图说明14 Char"; margin-top:0cm; margin-right:0cm; margin-bottom:0cm; @@ -1402,62 +1402,62 @@ p.141, li.141, div.141 text-align:center; text-indent:-21.25pt; font-size:10.5pt; - font-family:����;} + font-family:宋体;} span.14Char - {mso-style-name:"ͼ˵��14 Char"; - mso-style-link:ͼ˵��14; - font-family:����;} + {mso-style-name:"图说明14 Char"; + mso-style-link:图说明14; + font-family:宋体;} p.a6, li.a6, div.a6 - {mso-style-name:�ļ�Ŀ¼��; + {mso-style-name:文件目录表; margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.a7, li.a7, div.a7 - {mso-style-name:"��ʽ ���� +"; - mso-style-link:"��ʽ ���� + Char"; + {mso-style-name:"样式 正文 +"; + mso-style-link:"样式 正文 + Char"; margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; font-size:10.5pt; - font-family:����;} + font-family:宋体;} span.Char2 - {mso-style-name:"��ʽ ���� + Char"; - mso-style-link:"��ʽ ���� +"; + {mso-style-name:"样式 正文 + Char"; + mso-style-link:"样式 正文 +"; font-family:"Times New Roman","serif";} p.a8, li.a8, div.a8 - {mso-style-name:������ע; + {mso-style-name:表格题注; margin:0cm; margin-bottom:.0001pt; text-align:center; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.a9, li.a9, div.a9 - {mso-style-name:�б���ע; + {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:ͼ��ע; + {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:������ע; + {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:��������; + {mso-style-name:框中文字; margin-top:0cm; margin-right:21.0pt; margin-bottom:0cm; @@ -1468,9 +1468,9 @@ p.ac, li.ac, div.ac border:none; padding:0cm; font-size:9.0pt; - font-family:����;} + font-family:宋体;} p.125, li.125, div.125 - {mso-style-name:"��ʽ ���� 1 + ����2"; + {mso-style-name:"样式 标题 1 + 居中2"; margin-top:17.0pt; margin-right:0cm; margin-bottom:16.5pt; @@ -1478,17 +1478,17 @@ p.125, li.125, div.125 text-align:center; page-break-after:avoid; font-size:22.0pt; - font-family:����; + font-family:宋体; font-weight:bold;} p.ad, li.ad, div.ad - {mso-style-name:"��ʽ ��ע + ���� ��� ����"; + {mso-style-name:"样式 题注 + 宋体 五号 居中"; margin:0cm; margin-bottom:.0001pt; text-align:center; font-size:10.5pt; - font-family:����;} + font-family:黑体;} p.1b, li.1b, div.1b - {mso-style-name:�����1; + {mso-style-name:序标题1; margin-top:17.0pt; margin-right:0cm; margin-bottom:16.5pt; @@ -1496,65 +1496,65 @@ p.1b, li.1b, div.1b line-height:240%; page-break-after:avoid; font-size:16.0pt; - font-family:����; + font-family:宋体; font-weight:bold;} p.38, li.38, div.38 - {mso-style-name:�����3; + {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:����С���μ���;} + font-family:方正小标宋简体;} p.63, li.63, div.63 - {mso-style-name:��������6��; + {mso-style-name:表中文字6号; margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; font-size:7.5pt; - font-family:����;} + font-family:宋体;} p.64, li.64, div.64 - {mso-style-name:ͼ������6�������; + {mso-style-name:图中文字6号左对齐; margin:0cm; margin-bottom:.0001pt; line-height:10.0pt; layout-grid-mode:char; font-size:7.5pt; - font-family:����;} + font-family:宋体;} p.65, li.65, div.65 - {mso-style-name:ͼ������6��; - mso-style-link:"ͼ������6�� Char"; + {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:����;} + font-family:宋体;} span.6Char - {mso-style-name:"ͼ������6�� Char"; - mso-style-link:ͼ������6��; - font-family:����;} + {mso-style-name:"图中文字6号 Char"; + mso-style-link:图中文字6号; + font-family:宋体;} p.ae, li.ae, div.ae - {mso-style-name:ͼ��; + {mso-style-name:图标; margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.28, li.28, div.28 - {mso-style-name:ͼ��2; + {mso-style-name:图标2; margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.af, li.af, div.af - {mso-style-name:ϰ�����; + {mso-style-name:习题标题; margin-top:6.0pt; margin-right:0cm; margin-bottom:0cm; @@ -1564,29 +1564,29 @@ p.af, li.af, div.af text-justify:inter-ideograph; page-break-after:avoid; font-size:14.0pt; - font-family:����;} + font-family:黑体;} p.1c, li.1c, div.1c - {mso-style-name:���ֱ��1; + {mso-style-name:部分编号1; margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; font-size:16.0pt; - font-family:����;} + font-family:宋体;} p.af0, li.af0, div.af0 - {mso-style-name:������; + {mso-style-name:表标题; margin:0cm; margin-bottom:.0001pt; text-align:center; font-size:10.5pt; font-family:"Arial","sans-serif";} p.af1, li.af1, div.af1 - {mso-style-name:"��ʽ ��ע + ����"; + {mso-style-name:"样式 题注 + 居中"; margin:0cm; margin-bottom:.0001pt; text-align:center; font-size:10.5pt; - font-family:����;} + font-family:宋体;} p.ListTitle, li.ListTitle, div.ListTitle {mso-style-name:ListTitle; margin:0cm; @@ -1628,186 +1628,186 @@ p.RightText, li.RightText, div.RightText border:none; padding:0cm; font-size:9.0pt; - font-family:����;} + font-family:宋体;} p.af2, li.af2, div.af2 - {mso-style-name:��������С��; + {mso-style-name:表中文字小五; margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; font-size:9.0pt; - font-family:����;} + font-family:宋体;} p.af3, li.af3, div.af3 - {mso-style-name:�ؼ���; - mso-style-link:"�ؼ��� Char"; + {mso-style-name:关键词; + mso-style-link:"关键词 Char"; margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; font-size:10.5pt; - font-family:����;} + font-family:宋体;} span.Char3 - {mso-style-name:"�ؼ��� Char"; - mso-style-link:�ؼ���; - font-family:����;} + {mso-style-name:"关键词 Char"; + mso-style-link:关键词; + font-family:宋体;} p.af4, li.af4, div.af4 - {mso-style-name:�ļ���; - mso-style-link:"�ļ��� Char"; + {mso-style-name:文件名; + mso-style-link:"文件名 Char"; margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; font-size:10.5pt; - font-family:����;} + font-family:宋体;} span.Char4 - {mso-style-name:"�ļ��� Char"; - mso-style-link:�ļ���; - font-family:����;} + {mso-style-name:"文件名 Char"; + mso-style-link:文件名; + font-family:宋体;} p.af5, li.af5, div.af5 - {mso-style-name:ѡ��; - mso-style-link:"ѡ�� Char"; + {mso-style-name:选项; + mso-style-link:"选项 Char"; margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; font-size:10.5pt; - font-family:����;} + font-family:宋体;} span.Char5 - {mso-style-name:"ѡ�� Char"; - mso-style-link:ѡ��; - font-family:����;} + {mso-style-name:"选项 Char"; + mso-style-link:选项; + font-family:宋体;} p.af6, li.af6, div.af6 - {mso-style-name:������; - mso-style-link:"������ Char"; + {mso-style-name:命令行; + mso-style-link:"命令行 Char"; margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; font-size:10.5pt; - font-family:����;} + font-family:宋体;} span.Char6 - {mso-style-name:"������ Char"; - mso-style-link:������; - font-family:����;} + {mso-style-name:"命令行 Char"; + mso-style-link:命令行; + font-family:宋体;} p.af7, li.af7, div.af7 - {mso-style-name:������; - mso-style-link:"������ Char"; + {mso-style-name:函数名; + mso-style-link:"函数名 Char"; margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; font-size:10.5pt; - font-family:����;} + font-family:宋体;} span.Char7 - {mso-style-name:"������ Char"; - mso-style-link:������; - font-family:����;} + {mso-style-name:"函数名 Char"; + mso-style-link:函数名; + font-family:宋体;} p.af8, li.af8, div.af8 - {mso-style-name:�Ĵ�����; - mso-style-link:"�Ĵ����� Char"; + {mso-style-name:寄存器名; + mso-style-link:"寄存器名 Char"; margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; font-size:10.5pt; - font-family:����;} + font-family:宋体;} span.Char8 - {mso-style-name:"�Ĵ����� Char"; - mso-style-link:�Ĵ�����; + {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"; + {mso-style-name:变量名; + mso-style-link:"变量名 Char"; margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; font-size:10.5pt; - font-family:����;} + font-family:宋体;} span.Char9 - {mso-style-name:"������ Char"; - mso-style-link:������; - font-family:����;} + {mso-style-name:"变量名 Char"; + mso-style-link:变量名; + font-family:宋体;} p.58, li.58, div.58 - {mso-style-name:ͼ������С5����; + {mso-style-name:图中文字小5号左; margin:0cm; margin-bottom:.0001pt; font-size:9.0pt; - font-family:����;} + font-family:宋体;} p.59, li.59, div.59 - {mso-style-name:ͼ������С5�ſ���; + {mso-style-name:图中文字小5号靠左; margin:0cm; margin-bottom:.0001pt; layout-grid-mode:char; font-size:9.0pt; - font-family:����;} + font-family:宋体;} p.926, li.926, div.926 - {mso-style-name:"��ʽ ������� + ���\: 9\.26 ����"; + {mso-style-name:"样式 代码程序 + 左侧\: 9\.26 厘米"; margin:0cm; margin-bottom:.0001pt; layout-grid-mode:char; font-size:10.0pt; - font-family:����;} + font-family:宋体;} span.5Char4 - {mso-style-name:"���� 5 Char"; - mso-style-link:"���� 5"; + {mso-style-name:"标题 5 Char"; + mso-style-link:"标题 5"; font-weight:bold;} span.6Char0 - {mso-style-name:"���� 6 Char"; - mso-style-link:"���� 6"; + {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"; + {mso-style-name:"标题 7 Char"; + mso-style-link:"标题 7"; font-weight:bold;} span.8Char - {mso-style-name:"���� 8 Char"; - mso-style-link:"���� 8"; + {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"; + {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:����;} + {mso-style-name:"脚注文本 Char"; + mso-style-link:脚注文本; + font-family:宋体;} span.Charb - {mso-style-name:"��ע���� Char"; - mso-style-link:��ע����; - font-family:����;} + {mso-style-name:"批注文字 Char"; + mso-style-link:批注文字; + font-family:宋体;} span.Charc - {mso-style-name:"ҳü Char"; - mso-style-link:ҳü; - font-family:����;} + {mso-style-name:"页眉 Char"; + mso-style-link:页眉; + font-family:宋体;} span.Chard - {mso-style-name:"ҳ�� Char"; - mso-style-link:ҳ��; - font-family:����;} + {mso-style-name:"页脚 Char"; + mso-style-link:页脚; + font-family:宋体;} span.Chare - {mso-style-name:"���� Char"; - mso-style-link:����; - font-family:����;} + {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:����;} + {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:����; + {mso-style-name:"批注主题 Char"; + mso-style-link:批注主题; + font-family:宋体; font-weight:bold;} span.Charf0 - {mso-style-name:"��ע���ı� Char"; - mso-style-link:��ע���ı�; - font-family:����;} + {mso-style-name:"批注框文本 Char"; + mso-style-link:批注框文本; + font-family:宋体;} span.3CharChar1 - {mso-style-name:"ͼ������3 Char Char1"; - font-family:����;} + {mso-style-name:"图中文字3 Char Char1"; + font-family:宋体;} span.3CharChar3 - {mso-style-name:"ͼ������3 Char Char3"; - font-family:����;} + {mso-style-name:"图中文字3 Char Char3"; + font-family:宋体;} .MsoChpDefault {font-size:10.0pt;} /* Page Definitions */ @@ -1831,7 +1831,7 @@ ul
/*
-* ��������Ǵ�91.12.1��ʼ��д�� - �ڳ�����Ʊ����ƺ�������Ҫ�ij���
+* 需求加载是从91.12.1开始编写的 - 在程序编制表中似乎是最重要的程序,
-* ����Ӧ���Ǻ����ױ��Ƶ� * 并且应该是很容易编制的 - Linus
*/
@@ -1904,22 +1904,22 @@ Also corrected some "invalidate()"s - I wasn't doing enough of them./*
-* OK����������DZȽ����ױ�д�ģ�������ҳ��ȴ��Ҫ�е㼼�ɡ�����ҳ�������
+* OK,需求加载是比较容易编写的,而共享页面却需要有点技巧。共享页面程序是
-* 91.12.2��ʼ��д�ģ������ܹ����� - Linus��
+* 91.12.2开始编写的,好象能够工作 - Linus。
*
-* ͨ��ִ�д�Լ30��/bin/sh�Թ������������˲��ԣ������ں˵�����Ҫռ�ö���
+* 通过执行大约30个/bin/sh对共享操作进行了测试:在老内核当中需要占用多于
-* 6M���ڴ棬��Ŀǰȴ���á����ڿ��������úܺá�
+* 6M的内存,而目前却不用。现在看来工作得很好。
*
-* ��"invalidate()"����Ҳ���������� - ���ⷽ���һ����IJ�����
+* 对"invalidate()"函数也进行了修正 - 在这方面我还做的不够。
*/
@@ -1946,54 +1946,54 @@ Found it. Everything seems to work now./*
-* 91.12.18��ʼ��д�����������ڴ����VM������ҳ�浽/�Ӵ��̣�����Ҫ�Դ�
+* 91.12.18开始编写真正的虚拟内存管理VM(交换页面到/从磁盘)。需要对此
-* ���Ǻܶಢ����Ҫ���ܶ�����Ǻǣ�Ҳֻ�������ˡ�
+* 考虑很多并且需要作很多工作。呵呵,也只能这样了。
-* 91.12.19 - ��ij�̶ֳ��Ͽ��Թ����ˣ�����ʱ���������֪����ô���¡�
+* 91.12.19 - 在某种程度上可以工作了,但有时会出错,不知道怎么回事。
* -�ҵ������ˣ����ں���һ�ж��ܹ����ˡ�
+找到错误了,现在好像一切都能工作了。* 91.12.20 - -OK���ѽ����豸�ijɿɸ��ĵ��ˣ�������ļ��豸������
+OK,把交换设备修改成可更改的了,就像根文件设备那样。*/
30
31 -#include <signal.h> // �ź�ͷ�ļ��������źŷ��ų������źŽṹ���źź���ԭ�͡�
+#include <signal.h> // 信号头文件。定义信号符号常量,信号结构及信号函数原型。32
33 -#include <asm/system.h> // ϵͳͷ�ļ����������û���������/�ж��ŵ�Ƕ����ꡣ
+#include <asm/system.h> // 系统头文件。定义设置或修改描述符/中断门等嵌入汇编宏。34
35 -#include <linux/sched.h> // ���ȳ���ͷ�ļ�����������ṹtask_struct������0�����ݡ�
+#include <linux/sched.h> // 调度程序头文件,定义任务结构task_struct、任务0的数据。36 -#include <linux/head.h> // headͷ�ļ���������������ļṹ���ͼ���ѡ���������
+#include <linux/head.h> // head头文件,定义段描述符的简单结构,和几个选择符常量。37 -#include <linux/kernel.h> // �ں�ͷ�ļ�������һЩ�ں˳��ú�����ԭ�ζ��塣
+#include <linux/kernel.h> // 内核头文件。含有一些内核常用函数的原形定义。38
-// CODE_SPACE(addr) ((((addr)+0xfff)&~0xfff)<current->start_code+current->end_code)��
+// CODE_SPACE(addr) ((((addr)+0xfff)&~0xfff)<current->start_code+current->end_code)。
-// �ú������жϸ������Ե�ַ�Ƿ�λ�ڵ�ǰ���̵Ĵ�����У���(((addr)+4095)&~4095)������
+// 该宏用于判断给定线性地址是否位于当前进程的代码段中,“(((addr)+4095)&~4095)”用于
-// ȡ�����Ե�ַaddr�����ڴ�ҳ���ĩ�˵�ַ���μ�265�С�
+// 取得线性地址addr所在内存页面的末端地址。参见265行。
39 #define CODE_SPACE(addr) @@ -2007,12 +2007,12 @@ style='color:blue'>current->end_code)
42 unsigned long HIGH_MEMORY = 0; -// ȫ�ֱ��������ʵ�������ڴ���߶˵�ַ��
+// 全局变量,存放实际物理内存最高端地址。43
-// ��from������1ҳ�ڴ浽to����4K�ֽڣ���
+// 从from处复制1页内存到to处(4K字节)。
44 #define copy_page(from,to) \
@@ -2023,14 +2023,14 @@ __asm__("cld ; rep ; movsl"::"S" (from),&qu46
-// �����ڴ�ӳ���ֽ�ͼ��1�ֽڴ���1ҳ�ڴ棩��ÿ��ҳ���Ӧ���ֽ����ڱ�־ҳ�浱ǰ������
+// 物理内存映射字节图(1字节代表1页内存)。每个页面对应的字节用于标志页面当前被引用
-// ��ռ�ã���������������ӳ��15Mb���ڴ�ռ䡣�ڳ�ʼ������mem_init()�У����ڲ�����
+// (占用)次数。它最大可以映射15Mb的内存空间。在初始化函数mem_init()中,对于不能用
-// �����ڴ���ҳ���λ�þ���Ԥ�ȱ����ó�USED��100����
+// 作主内存区页面的位置均都预先被设置成USED(100)。
47 unsigned char mem_map [
/*
-* �ͷ�������ַ'addr'����һҳ�ڴ档���ں���'free_page_tables()'��
+* 释放物理地址'addr'处的一页内存。用于函数'free_page_tables()'。
*/
-//// �ͷ�������ַaddr��ʼ��1ҳ���ڴ档
+//// 释放物理地址addr开始的1页面内存。
-// ������ַ1MB���µ��ڴ�ռ������ں˳���ͻ��壬����Ϊ����ҳ����ڴ�ռ䡣���
+// 物理地址1MB以下的内存空间用于内核程序和缓冲,不作为分配页面的内存空间。因此
-// ����addr��Ҫ����1MB��
+// 参数addr需要大于1MB。
53 void free_page(unsigned long addr)
54 {
-// �����жϲ���������������ַaddr�ĺ����ԡ����������ַaddrС���ڴ�Ͷˣ�1MB����
+// 首先判断参数给定的物理地址addr的合理性。如果物理地址addr小于内存低端(1MB),
-// ���ʾ���ں˳������ٻ����У��Դ˲��账�������������ַaddr >= ϵͳ��������
+// 则表示在内核程序或高速缓冲中,对此不予处理。如果物理地址addr >= 系统所含物理
-// �ڴ���߶ˣ�����ʾ������Ϣ�����ں�ֹͣ������
+// 内存最高端,则显示出错信息并且内核停止工作。
55 if (addr < LOW_MEM) return;
@@ -2087,19 +2087,19 @@ if (addr >= HIGH_MEMORY) panic("trying to free nonexistent page"); -// ����Բ���addr��֤ͨ������ô�������������ַ��������ڴ�Ͷ˿�ʼ������ڴ�
+// 如果对参数addr验证通过,那么就根据这个物理地址换算出从内存低端开始计起的内存
-// ҳ��š�ҳ��� = (addr �C LOW_MEM)/4096���ɼ�ҳ��Ŵ�0�ſ�ʼ���𡣴�ʱ // 页面号。页面号 = (addr – LOW_MEM)/4096。可见页面号从0号开始计起。此时addr
-// �д����ҳ��š������ҳ��Ŷ�Ӧ��ҳ��ӳ���ֽڲ�����0�����1���ء���ʱ��ӳ��
+// 中存放着页面号。如果该页面号对应的页面映射字节不等于0,则减1返回。此时该映射
-// �ֽ�ֵӦ��Ϊ0����ʾҳ�����ͷš������Ӧҳ���ֽ�ԭ������0����ʾ������ҳ�汾��
+// 字节值应该为0,表示页面已释放。如果对应页面字节原本就是0,表示该物理页面本来
-// ���ǿ��еģ�˵���ں˴�������⡣������ʾ������Ϣ��ͣ����
+// 就是空闲的,说明内核代码出问题。于是显示出错信息并停机。
58 addr -= LOW_MEM;
@@ -2133,35 +2133,35 @@ by 'exit()'. As does copy_page_tables(), this handles only 4Mb blocks./*
-* ���溯���ͷ�ҳ���������ڴ�飬'exit()'��Ҫ�ú�������copy_page_tables()
+* 下面函数释放页表连续的内存块,'exit()'需要该函数。与copy_page_tables()
-* ���ƣ��ú���������4Mb���ȵ��ڴ�顣
+* 类似,该函数仅处理4Mb长度的内存块。
*/
-//// ����ָ�������Ե�ַ������ҳ�����������ͷŶ�Ӧ�ڴ�ҳ��ָ�����ڴ�鲢�ñ�����С�
+//// 根据指定的线性地址和限长(页表个数),释放对应内存页表指定的内存块并置表项空闲。
-// ҳĿ¼λ��������ַ0��ʼ������1024�ÿ��4�ֽڣ���ռ4K�ֽڡ�ÿ��Ŀ¼��ָ��һ
+// 页目录位于物理地址0开始处,共1024项,每项4字节,共占4K字节。每个目录项指定一
-// ��ҳ�����ں�ҳ����������ַ0x1000����ʼ��������Ŀ¼�ռ䣩����4��ҳ����ÿ��ҳ����
+// 个页表。内核页表从物理地址0x1000处开始(紧接着目录空间),共4个页表。每个页表有
-// 1024�ÿ��4�ֽڡ����Ҳռ4K��1ҳ���ڴ档�����̣��������ں˴����еĽ���0��1��
+// 1024项,每项4字节。因此也占4K(1页)内存。各进程(除了在内核代码中的进程0和1)
-// ��ҳ����ռ�ݵ�ҳ���ڽ��̱�����ʱ���ں�Ϊ�������ڴ�������õ���ÿ��ҳ�����Ӧ1ҳ
+// 的页表所占据的页面在进程被创建时由内核为其在主内存区申请得到。每个页表项对应1页
-// �����ڴ棬���һ��ҳ������ӳ��4MB�������ڴ档
+// 物理内存,因此一个页表最多可映射4MB的物理内存。
-// ������from -- ��ʼ���Ի���ַ��size - �ͷŵ��ֽڳ��ȡ�
+// 参数:from +- 起始线性基地址;size - 释放的字节长度。
69 int free_page_tables(unsigned long @@ -2177,11 +2177,11 @@ unsigned long * dir, nr;
73
-// ���ȼ�����from���������Ի���ַ�Ƿ���4MB�ı߽紦����Ϊ�ú���ֻ�ܴ������������
+// 首先检测参数from给出的线性基地址是否在4MB的边界处。因为该函数只能处理这种情况。
-// ��from -= 0���������˵����ͼ�ͷ��ں˺ͻ�����ռ�ռ䡣
+// 若from += 0,则出错。说明试图释放内核和缓冲所占空间。
74 if (from & 0x3fffff)
@@ -2197,27 +2197,27 @@ if (!from) panic("Trying to free up swapper memory space"); -// Ȼ��������size�����ij�����ռ��ҳĿ¼������4MB�Ľ�λ����������Ҳ����ռҳ������
+// 然后计算参数size给出的长度所占的页目录项数(4MB的进位整数倍),也即所占页表数。
-// ��Ϊ1��ҳ���ɹ���4MB�����ڴ棬��������������22λ�ķ�ʽ����Ҫ���Ƶ��ڴ泤��ֵ
+// 因为1个页表可管理4MB物理内存,所以这里用右移22位的方式把需要复制的内存长度值
-// ����4MB�����м���0x3fffff����4Mb -1�����ڵõ���λ���������������������������
+// 除以4MB。其中加上0x3fffff(即4Mb -1)用于得到进位整数倍结果,即除操作若有余数
-// ���1�����磬���ԭsize = 4.01Mb����ô�ɵõ����size = 2�� ���ż������������
+// 则进1。例如,如果原size = 4.01Mb,那么可得到结果size = 2。 接着计算给出的线性
-// ����ַ��Ӧ����ʼĿ¼���Ӧ��Ŀ¼��� = from >> 22����Ϊÿ��ռ4�ֽڣ���������
+// 基地址对应的起始目录项。对应的目录项号 = from >> 22。因为每项占4字节,并且由于
-// ҳĿ¼����������ַ0��ʼ��ţ����ʵ��Ŀ¼��ָ�� = Ŀ¼���<<2��Ҳ��(from>>20)��
+// 页目录表从物理地址0开始存放,因此实际目录项指针 = 目录项号<<2,也即(from>>20)。
-// ��������0xffcȷ��Ŀ¼��ָ�뷶Χ��Ч��
+// “与”上0xffc确保目录项指针范围有效。
78 size = (size + 0x3fffff) >> 22;
@@ -2227,27 +2227,27 @@ dir = (unsigned long *) ((from>>20) & 0xffc); /* _pg_dir = 0 */<-
// ��ʱ -size ���ͷŵ�ҳ����������ҳĿ¼��������dir����ʼĿ¼��ָ�롣���ڿ�ʼѭ��
+// 此时 +size 是释放的页表个数,即页目录项数,而dir是起始目录项指针。现在开始循环
-// ����ҳĿ¼������ͷ�ÿ��ҳ���е�ҳ��������ǰĿ¼����Ч��Pλ=0������ʾ��
+// 操作页目录项,依次释放每个页表中的页表项。如果当前目录项无效(P位=0),表示该
-// Ŀ¼��û��ʹ�ã���Ӧ��ҳ�������ڣ��������������һ��Ŀ¼������Ŀ¼����ȡ��
+// 目录项没有使用(对应的页表不存在),则继续处理下一个目录项。否则从目录项中取出
-// ҳ����ַ -pg_table�����Ը�ҳ���е� 1024 ��������д������ͷ���Чҳ���Pλ=1��
+// 页表地址 +pg_table,并对该页表中的 1024 个表项进行处理,释放有效页表项(P位=1)
-// ��Ӧ�������ڴ�ҳ�棬���ߴӽ����豸���ͷ���Чҳ���Pλ=0����Ӧ��ҳ�棬���ͷ�
+// 对应的物理内存页面,或者从交换设备中释放无效页表项(P位=0)对应的页面,即释放
-// �����豸�ж�Ӧ���ڴ�ҳ�棨��Ϊҳ������Ѿ�������ȥ����Ȼ��Ѹ�ҳ�������㣬����
+// 交换设备中对应的内存页面(因为页面可能已经交换出去)。然后把该页表项清零,并继
-// ��������һҳ�����һ��ҳ�����б��������Ͼ��ͷŸ�ҳ������ռ�ݵ��ڴ�ҳ�棬
+// 续处理下一页表项。当一个页表所有表项都处理完毕就释放该页表自身占据的内存页面,
-// ������������һҳĿ¼����ˢ��ҳ�任���ٻ��壬������0��
+// 并继续处理下一页目录项。最后刷新页变换高速缓冲,并返回0。
80 for ( ; size-->0 ; dir++) {
@@ -2259,56 +2259,56 @@ if (!(1 & *dir)) continue;83 -pg_table = (unsigned long *) (0xfffff000 & *dir); // ȡҳ����ַ��
+pg_table = (unsigned long *) (0xfffff000 & *dir); // 取页表地址。84 for (nr=0 ; nr<1024 ; nr++) {
85 if (*pg_table) { -// ����ָҳ�������ݲ�Ϊ0����
+// 若所指页表项内容不为0,则86 -if (1 & *pg_table) // ��������Ч�����ͷŶ�Ӧҳ��
+if (1 & *pg_table) // 若该项有效,则释放对应页。87 free_page(0xfffff000 & *pg_table);
88 else -// �����ͷŽ����豸�ж�Ӧҳ��
+// 否则释放交换设备中对应页。89 swap_free(*pg_table >> 1);
90 -*pg_table = 0; // ��ҳ�����������㡣
+*pg_table = 0; // 该页表项内容清零。91 }
92 pg_table++; -// ָ��ҳ������һ�
+// 指向页表中下一项。93 }
94 free_page(0xfffff000 & *dir); -// �ͷŸ�ҳ����ռ�ڴ�ҳ�档
+// 释放该页表所占内存页面。95 *dir = 0; -// ��Ӧҳ����Ŀ¼�����㡣
+// 对应页表的目录项清零。96 }
97 invalidate(); - // ˢ��CPUҳ�任���ٻ��塣
+ // 刷新CPU页变换高速缓冲。98 return 0;
@@ -2382,60 +2382,60 @@ lang=EN-US> *//*
-* ���ˣ��������ڴ����mm����Ϊ���ӵij���֮һ����ͨ��ֻ�����ڴ�ҳ��
+* 好了,下面是内存管理mm中最为复杂的程序之一。它通过只复制内存页面
-* ������һ����Χ�����Ե�ַ�е����ݡ� -ϣ��������û�д�����Ϊ�Ҳ���
+* 来拷贝一定范围内线性地址中的内容。 +希望代码中没有错误,因为我不想
-* �ٵ�����������:-)��
+* 再调试这块代码了:-)。
*
-* ע�⣡���Dz��������κ��ڴ�� - �ڴ��ĵ�ַ��Ҫ��4Mb�ı���������
+* 注意!我们并不复制任何内存块 - 内存块的地址需要是4Mb的倍数(正好
-* һ��ҳĿ¼���Ӧ���ڴ泤�ȣ�����Ϊ����������ʹ�����ܼ� -������
+* 一个页目录项对应的内存长度),因为这样处理可使函数很简单。 +不管怎
-* ����������fork()ʹ�á�
+* 样,它仅被fork()使用。
*
-* ע��2���� ��from==0ʱ��˵������Ϊ��һ��fork()���ø����ں˿ռ䡣
+* 注意2!! 当from==0时,说明是在为第一次fork()调用复制内核空间。
-* ��ʱ���ǾͲ��븴������ҳĿ¼���Ӧ���ڴ棬��Ϊ�������ᵼ���ڴ���
+* 此时我们就不想复制整个页目录项对应的内存,因为这样做会导致内存严
-* ���˷� - ����ֻ�븴�ƿ�ͷ160��ҳ�� - ��Ӧ 640kB����ʹ�Ǹ�����Щ
+* 重浪费 - 我们只须复制开头160个页面 - 对应 640kB。即使是复制这些
-* ҳ��Ҳ�Ѿ��������ǵ������ⲻ��ռ�ø�����ڴ� - �ڵ� 1Mb �ڴ�
+* 页面也已经超出我们的需求,但这不会占用更多的内存 - 在低 1Mb 内存
-* ��Χ�����Dz�ִ��дʱ���Ʋ�����������Щҳ��������ں˹����������
+* 范围内我们不执行写时复制操作,所以这些页面可以与内核共享。因此这
-* ��nr=xxxx�����������nr�ڳ�����ָҳ��������
+* 是nr=xxxx的特殊情况(nr在程序中指页面数)。
*/
-//// ����ҳĿ¼�����ҳ���
+//// 复制页目录表项和页表项。
-// ����ָ�����Ե�ַ�ͳ����ڴ��Ӧ��ҳĿ¼���ҳ����Ӷ������Ƶ�ҳĿ¼��ҳ����Ӧ
+// 复制指定线性地址和长度内存对应的页目录项和页表项,从而被复制的页目录和页表对应
-// ��ԭ�����ڴ�ҳ����������ҳ��ӳ�������ʹ�á�����ʱ����������ҳ���������ҳ����
+// 的原物理内存页面区被两套页表映射而共享使用。复制时,需申请新页面来存放新页表,
-// ԭ�����ڴ��������������˺��������̣������̺����ӽ��̣��������ڴ�����ֱ����һ��
+// 原物理内存区将被共享。此后两个进程(父进程和其子进程)将共享内存区,直到有一个
-// ����ִ��д����ʱ���ں˲Ż�Ϊд�������̷����µ��ڴ�ҳ��дʱ���ƻ��ƣ���
+// 进程执行写操作时,内核才会为写操作进程分配新的内存页(写时复制机制)。
-// ����from��to �����Ե�ַ��size����Ҫ���ƣ����������ڴ泤�ȣ���λ���ֽڡ�
+// 参数from、to 是线性地址,size是需要复制(共享)的内存长度,单位是字节。
118 int copy_page_tables(unsigned @@ -2470,24 +2470,24 @@ lang=EN-US> unsigned long nr;126
-// ���ȼ�����������Դ��ַfrom��Ŀ�ĵ�ַto����Ч�ԡ�Դ��ַ��Ŀ�ĵ�ַ����Ҫ�� // 首先检测参数给出的源地址from和目的地址to的有效性。源地址和目的地址都需要在4Mb
-// �ڴ�߽��ַ�ϡ����������������������Ҫ������Ϊһ��ҳ����1024��ɹ���4Mb�ڴ档
+// 内存边界地址上。否则出错死机。作这样的要求是因为一个页表的1024项可管理4Mb内存。
-// Դ��ַ from -��Ŀ�ĵ�ַ to ֻ���������Ҫ����ܱ�֤��һ��ҳ���ĵ�1�ʼ����ҳ��
+// 源地址 from +和目的地址 to 只有满足这个要求才能保证从一个页表的第1项开始复制页表
-// �������ҳ����������������Ч�ġ� Ȼ��ȡ��Դ��ַ��Ŀ�ĵ�ַ����ʼĿ¼��ָ��
+// 项,并且新页表的最初所有项都是有效的。 然后取得源地址和目的地址的起始目录项指针
-// ��from_dir��to_dir�����ٸ��ݲ��������ij���size����Ҫ���Ƶ��ڴ��ռ�õ�ҳ����
+// (from_dir和to_dir)。再根据参数给出的长度size计算要复制的内存块占用的页表数
-// ����Ŀ¼���������μ�ǰ���78��79�еĽ��͡�
+// (即目录项数)。参见前面对78、79行的解释。
127 if @@ -2510,17 +2510,17 @@ long *) ((to>>20) & 0xffc);
lang=EN-US> size = ((unsigned) (size+0x3fffff)) >> 22; -// �ڵõ���Դ��ʼĿ¼��ָ��from_dir��Ŀ����ʼĿ¼��ָ��to_dir�Լ���Ҫ���Ƶ�ҳ��
+// 在得到了源起始目录项指针from_dir和目的起始目录项指针to_dir以及需要复制的页表
-// ���� -size �����濪ʼ��ÿ��ҳĿ¼����������1ҳ�ڴ��������Ӧ��ҳ�������ҿ�ʼ
+// 个数 +size 后,下面开始对每个页目录项依次申请1页内存来保存对应的页表,并且开始
-// ҳ����Ʋ��������Ŀ��Ŀ¼��ָ����ҳ���Ѿ����ڣ�P=1��������������� ���ԴĿ
+// 页表项复制操作。如果目的目录项指定的页表已经存在(P=1),则出错死机。 如果源目
-// ¼����Ч����ָ����ҳ�������ڣ�P=0���������ѭ��������һ��ҳĿ¼�
+// 录项无效,即指定的页表不存在(P=0),则继续循环处理下一个页目录项。
132 for( ; size-->0 @@ -2545,16 +2545,16 @@ continue;
-
// ����֤�˵�ǰԴĿ¼���Ŀ��������֮������ȡԴĿ¼����ҳ����ַfrom_page_table��
+// 在验证了当前源目录项和目的项正常之后,我们取源目录项中页表地址from_page_table。
-// Ϊ�˱���Ŀ��Ŀ¼���Ӧ��ҳ������Ҫ�����ڴ���������1ҳ�����ڴ�ҳ�����ȡ����ҳ��
+// 为了保存目的目录项对应的页表,需要在主内存区中申请1页空闲内存页。如果取空闲页面
-// ����get_free_page() -����0����˵��û�����뵽�����ڴ�ҳ�棬�������ڴ治�������Ƿ�
+// 函数get_free_page() +返回0,则说明没有申请到空闲内存页面,可能是内存不够。于是返
-// ��-1ֵ�˳���
+// 回-1值退出。
137 from_page_table
@@ -2570,28 +2570,28 @@ return -1; /* Out of memory, see freeing */<
// ������������Ŀ��Ŀ¼����Ϣ�������3λ��λ������ǰĿ��Ŀ¼�����7����ʾ��Ӧ // 否则我们设置目的目录项信息,把最后3位置位,即当前目的目录项“或”上7,表示对应 // ҳ��ӳ����ڴ�ҳ�����û����ģ����ҿɶ�д�����ڣ�Usr, R/W, Present���� �����U/S // 页表映射的内存页面是用户级的,并且可读写、存在(Usr, R/W, Present)。 (如果U/S // λ��0����R/W��û�����á���� U/S��1���� R/W��0����ô�������û���Ĵ����ֻ�� // 位是0,则R/W就没有作用。如果 U/S是1,而 R/W是0,那么运行在用户层的代码就只能 // ��ҳ�档���U/S��R/W����λ������ж�д��Ȩ�ޣ���Ȼ����Ե�ǰ������ҳĿ¼���Ӧ // 读页面。如果U/S和R/W都置位,则就有读写的权限)。然后针对当前处理的页目录项对应 // ��ҳ����������Ҫ���Ƶ�ҳ����������������ں˿ռ䣬����踴��ͷ160ҳ��Ӧ��ҳ���� // 的页表,设置需要复制的页面项数。如果是在内核空间,则仅需复制头160页对应的页表项 // ��nr=
-160������Ӧ�ڿ�ʼ640KB�����ڴ档������Ҫ����һ��ҳ���е�����1024��ҳ���� // (nr=
+160),对应于开始640KB物理内存。否则需要复制一个页表中的所有1024个页表项 // ��nr=
-1024������ӳ��4MB�����ڴ档 // (nr=
+1024),可映射4MB物理内存。 140
@@ -2603,11 +2603,11 @@ nr = (from==0)?0xA0:1024; // ��ʱ���ڵ�ǰҳ������ʼѭ������ָ����nr���ڴ�ҳ������ȡ��Դҳ�������ݣ���� // 此时对于当前页表,开始循环复制指定的nr个内存页面表项。先取出源页表项内容,如果 // ��ǰԴҳ��û��ʹ�ã�������Ϊ0�������ø��Ƹñ������������һ� // 当前源页面没有使用(项内容为0),则不用复制该表项,继续处理下一项。 142
@@ -2625,17 +2625,17 @@ if (!this_page)
// ����ñ��������ݣ����������λP=0����ñ����Ӧ��ҳ������ڽ����豸�С���������
+// 如果该表项有内容,但是其存在位P=0,则该表项对应的页面可能在交换设备中。于是先申
-// ��1ҳ�ڴ棬���ӽ����豸�ж����ҳ�棨�������豸���еĻ�����Ȼ��ҳ����Ƶ�
+// 请1页内存,并从交换设备中读入该页面(若交换设备中有的话)。然后将该页表项复制到
-// Ŀ��ҳ�����С�����Դҳ��������ָ�����������ڴ�ҳ�������ñ����־Ϊ��ҳ���ࡱ
+// 目的页表项中。并修改源页表项内容指向该新申请的内存页,并设置表项标志为“页面脏”
-// ����7��Ȼ�����������һҳ�������λҳ������ -R/W ��־��λ1��0��������ҳ����
+// 加上7。然后继续处理下一页表项。否则复位页表项中 +R/W 标志(位1置0),即让页表项
-// ��Ӧ���ڴ�ҳ��ֻ����Ȼ��ҳ����Ƶ�Ŀ��ҳ���С�
+// 对应的内存页面只读,然后将该页表项复制到目的页表中。
146
@@ -2682,36 +2682,36 @@ lang=EN-US> &n
// �����ҳ������ָ����ҳ��ĵ�ַ��1MB���ϣ�����Ҫ�����ڴ�ҳ��ӳ������mem_map[]�� // 如果该页表项所指物理页面的地址在1MB以上,则需要设置内存页面映射数组mem_map[], // ���Ǽ���ҳ��ţ�������Ϊ������ҳ��ӳ��������Ӧ�����������ô�����������λ�� // 于是计算页面号,并以它为索引在页面映射数组相应项中增加引用次数。而对于位于1MB // ���µ�ҳ�棬˵�����ں�ҳ�棬��˲���Ҫ��mem_map[]�������á���Ϊ mem_map[]���� // 以下的页面,说明是内核页面,因此不需要对mem_map[]进行设置。因为 mem_map[]仅用 // �ڹ������ڴ����е�ҳ��ʹ������� ��˶����ں��ƶ�������0�в��ҵ���fork()���� // 于管理主内存区中的页面使用情况。 因此对于内核移动到任务0中并且调用fork()创建 // ����1ʱ����������init()�������ڴ�ʱ���Ƶ�ҳ�滹��Ȼ�����ں˴�������������� // 任务1时(用于运行init()),由于此时复制的页面还仍然都在内核代码区域,因此以下 // �ж��е���䲻��ִ�У�����0 ��ҳ����Ȼ������ʱ��д��ֻ�е����� fork() �ĸ����� // 判断中的语句不会执行,任务0 的页面仍然可以随时读写。只有当调用 fork() 的父进程 // ���봦�����ڴ�����ҳ��λ�ô���1MB��ʱ�Ż�ִ�С����������Ҫ�ڽ��̵���execve()�� // 代码处于主内存区(页面位置大于1MB)时才会执行。这种情况需要在进程调用execve(), // ��װ��ִ�����³������ʱ�Ż���֡� // 并装载执行了新程序代码时才会出现。 // 157����京������Դҳ������ָ�ڴ�ҳҲΪֻ������Ϊ���ڿ�ʼ�����������̹����ڴ� // 157行语句含义是令源页表项所指内存页也为只读。因为现在开始已有两个进程共用内存 // ���ˡ�������1��������Ҫ����д�����������ͨ��ҳ�쳣д��������Ϊִ��д�����Ľ� // 区了。若其中1个进程需要进行写操作,则可以通过页异常写保护处理为执行写操作的进 // �̷���1ҳ�¿���ҳ�棬Ҳ������дʱ���ƣ�copy on write�������� // 程分配1页新空闲页面,也即进行写时复制(copy on write)操作。 156
@@ -2719,7 +2719,7 @@ if (this_page > LOW_MEM) { 157
-*from_page_table = this_page; // ��Դҳ����Ҳֻ����
158 @@ -2747,7 +2747,7 @@ lang=EN-US> }
164 invalidate(); - // ˢ��ҳ�任���ٻ��塣
+ // 刷新页变换高速缓冲。165 return 0;
@@ -2781,35 +2781,35 @@ lang=EN-US> *//*
-* ���溯����һ�ڴ�ҳ����ã�ӳ�䣩��ָ�����Ե�ַ����������ҳ��
+* 下面函数将一内存页面放置(映射)到指定线性地址处。它返回页面
-* ��������ַ������ڴ治��(�ڷ���ҳ����ҳ��ʱ)����0��
+* 的物理地址,如果内存不够(在访问页表或页面时),则返回0。
*/
-// ��һ�����ڴ�ҳ��ӳ�䵽���Ե�ַ�ռ�ָ������
+// 把一物理内存页面映射到线性地址空间指定处。
-// ����˵�ǰ����Ե�ַ�ռ���ָ����ַaddress����ҳ��ӳ�䵽���ڴ���ҳ��page�ϡ���Ҫ
+// 或者说是把线性地址空间中指定地址address处的页面映射到主内存区页面page上。主要
-// �����������ҳĿ¼���ҳ����������ָ��ҳ�����Ϣ�����ɹ�������ҳ���ַ�� -��
+// 工作是在相关页目录项和页表项中设置指定页面的信息。若成功则返回物理页面地址。 +在
-// ����ȱҳ�쳣��C����do_no_page() �л���ô˺���������ȱҳ������쳣�������κ�ȱ
+// 处理缺页异常的C函数do_no_page() 中会调用此函数。对于缺页引起的异常,由于任何缺
-// ҳԵ�ʶ���ҳ������ʱ��������Ҫˢ��CPU��ҳ�任���壨���Translation Lookaside
+// 页缘故而对页表作修改时,并不需要刷新CPU的页变换缓冲(或称Translation Lookaside
-// Buffer - TLB������ʹҳ�����б�־P����0�ij�1����Ϊ��Чҳ��ᱻ���壬��˵�
+// Buffer - TLB),即使页表项中标志P被从0修改成1。因为无效页项不会被缓冲,因此当
-// ����һ����Ч��ҳ����ʱ����Ҫˢ�¡��ڴ˾ͱ���Ϊ���õ���Invalidate()������
+// 修改了一个无效的页表项时不需要刷新。在此就表现为不用调用Invalidate()函数。
-// ����page�Ƿ�������ڴ�����ijһҳ�棨ҳ֡��ҳ��ָ�룻address�����Ե�ַ��
+// 参数page是分配的主内存区中某一页面(页帧,页框)的指针;address是线性地址。
174 static unsigned long put_page(unsigned @@ -2828,26 +2828,26 @@ lang=EN-US>
178 /* NOTE !!! This uses the fact that _pg_dir=0 */
-/* ע��!!! -����ʹ����ҳĿ¼������ַ_pg_dir=0������ */
+/* 注意!!! +这里使用了页目录表基地址_pg_dir=0的条件 */
179
-// �����жϲ������������ڴ�ҳ��page ����Ч�ԡ������ҳ��λ�õ���LOW_MEM��1MB����
+// 首先判断参数给定物理内存页面page 的有效性。如果该页面位置低于LOW_MEM(1MB)或
-// ����ϵͳʵ�ʺ����ڴ�߶� HIGH_MEMORY�������档LOW_MEM �����ڴ��������е���
+// 超出系统实际含有内存高端 HIGH_MEMORY,则发出警告。LOW_MEM 是主内存区可能有的最
-// С��ʼλ�á���ϵͳ�����ڴ�С�ڻ����6MBʱ�����ڴ�����ʼ��LOW_MEM�����ٲ鿴һ
+// 小起始位置。当系统物理内存小于或等于6MB时,主内存区起始于LOW_MEM处。再查看一
-// �¸� -pageҳ���Ƿ����Ѿ������ҳ�棬���ж������ڴ�ҳ��ӳ���ֽ�ͼ mem_map[]����
+// 下该 +page页面是否是已经申请的页面,即判断其在内存页面映射字节图 mem_map[]中相
-// Ӧ�ֽ��Ƿ��Ѿ���λ����û�����跢�����档
+// 应字节是否已经置位。若没有则需发出警告。
180 if (page < &nb
// Ȼ����ݲ���ָ�������Ե�ַaddress��������ҳĿ¼���ж�Ӧ��Ŀ¼��ָ�룬������ȡ�� // 然后根据参数指定的线性地址address计算其在页目录表中对应的目录项指针,并从中取得 // ����ҳ����ַ�� �����Ŀ¼����Ч��P=1������ָ����ҳ�����ڴ��У������ȡ��ָ��ҳ�� // 二级页表地址。 如果该目录项有效(P=1),即指定的页表在内存中,则从中取得指定页表 // ��ַ�ŵ�page_table
-�����С���������һ����ҳ���ҳ��ʹ�ã����ڶ�ӦĿ¼��������Ӧ // 地址放到page_table
+变量中。否则申请一空闲页面给页表使用,并在对应目录项中置相应 // ��־��7 �C
-User��U/S��R/W����Ȼ��ҳ����ַ�ŵ�page_table�����С� // 标志(7 –
+User、U/S、R/W)。然后将该页表地址放到page_table变量中。 184 page_table =
@@ -2917,16 +2917,16 @@ page_table = (unsigned long *) tmp; 192 } // ������ҵ���ҳ�� page_table ���������ҳ�������ݣ���������ҳ��page�ĵ�ַ����� // 最后在找到的页表 page_table 中设置相关页表项内容,即把物理页面page的地址填入表 // ��ͬʱ��λ3����־��U/S��W/R��P������ҳ������ҳ���е�����ֵ�������Ե�ַλ // 项同时置位3个标志(U/S、W/R、P)。该页表项在页表中的索引值等于线性地址位21 -- // λ12��ɵ�10���ص�ֵ��ÿ��ҳ��������1024�0
--- 0x3ff���� // 位12组成的10比特的值。每个页表共可有1024项(0
+-- 0x3ff)。 193
@@ -2935,12 +2935,12 @@ page_table[(address>>12) & 0x3ff] = page | 7; 194 /* no need for invalidate */ /* ����Ҫˢ��ҳ�任���ٻ��� /* 不需要刷新页变换高速缓冲 */ 195 return page;
-// ��������ҳ���ַ��
196 }
@@ -2971,26 +2971,26 @@ lang=EN-US> *//*
-* �����Ҳ������ҳ�����ı�־������һ�����������ò��Ǻܺã�exec.c����
+* 如果你也想设置页面已修改标志,则上一个函数工作得不是很好:exec.c程序
-* ��Ҫ�������á���Ϊexec.c�к������ڷ���ҳ��֮ǰ�Ĺ�ҳ�����ݡ�Ϊ��ʵ
+* 需要这种设置。因为exec.c中函数会在放置页面之前修改过页面内容。为了实
-* ��VM��������Ҫ����ȷ��������״̬��־����������������������ͬ�ĺ�
+* 现VM,我们需要能正确设置已修改状态标志。因而下面就有了与上面相同的函
-* �������Ǹú����ڷ���ҳ��ʱ���ҳ���־Ϊ����״̬��
+* 数,但是该函数在放置页面时会把页面标志为已修改状态。
*/
-// ��һ�������Ĺ��������ڴ�ҳ��ӳ�䵽���Ե�ַ�ռ�ָ������
+// 把一内容已修改过的物理内存页面映射到线性地址空间指定处。
-// �ú�������һ������put_page()������ȫһ�������˱�������223������ҳ��������ʱ��
+// 该函数与上一个函数put_page()几乎完全一样,除了本函数在223行设置页表项内容时,
-// ͬʱ��������ҳ�����ı�־��λ6��PAGE_DIRTY����
+// 同时还设置了页面已修改标志(位6,PAGE_DIRTY)。
204 unsigned long put_dirty_page(unsigned @@ -3082,20 +3082,20 @@ lang=EN-US> }
227
-//// ȡ��д����ҳ�溯��������ҳ�쳣�жϹ�����д�����쳣�Ĵ�����дʱ���ƣ���
+//// 取消写保护页面函数。用于页异常中断过程中写保护异常的处理(写时复制)。
-// ���ں˴�������ʱ���½����븸���̱����óɹ�������������ڴ�ҳ�棬����������Щҳ��
+// 在内核创建进程时,新进程与父进程被设置成共享代码和数据内存页面,并且所有这些页面
-// �������ó�ֻ��ҳ�档�����½��̻�ԭ������Ҫ���ڴ�ҳ��д����ʱ��CPU �ͻ�����
+// 均被设置成只读页面。而当新进程或原进程需要向内存页面写数据时,CPU 就会检测到这个
-// ���������ҳ��д�����쳣������������������ں˾ͻ������ж�Ҫд��ҳ���Ƿ�����
+// 情况并产生页面写保护异常。于是在这个函数中内核就会首先判断要写的页面是否被共享。
-// ��û�����ҳ�����óɿ�дȻ���˳�����ҳ���dz��ڹ���״̬������Ҫ��������һ��ҳ�沢
+// 若没有则把页面设置成可写然后退出。若页面是出于共享状态,则需要重新申请一新页面并
-// ���Ʊ�дҳ�����ݣ��Թ�д���̵���ʹ�á�������ȡ����
+// 复制被写页面内容,以供写进程单独使用。共享被取消。
-// �������Ϊҳ����ָ�룬��������ַ�� // 输入参数为页表项指针,是物理地址。[ un_wp_page -- Un-Write Protect Page]
228
231
-// ����ȡ����ָ����ҳ����������ҳ��λ�ã���ַ�����жϸ�ҳ���Ƿ��ǹ���ҳ�档���ԭ
+// 首先取参数指定的页表项中物理页面位置(地址)并判断该页面是否是共享页面。如果原
-// ҳ���ַ�����ڴ�Ͷ� LOW_MEM����ʾ�����ڴ����У�����������ҳ��ӳ���ֽ�ͼ������
+// 页面地址大于内存低端 LOW_MEM(表示在主内存区中),并且其在页面映射字节图数组中
-// ֵΪ1����ʾҳ���������1�Σ�ҳ��û�б������������ڸ�ҳ���ҳ�������� R/W ��־
+// 值为1(表示页面仅被引用1次,页面没有被共享),则在该页面的页表项中置 R/W 标志
-// ����д������ˢ��ҳ�任���ٻ��壬Ȼ�ء���������ڴ�ҳ���ʱֻ��һ������ʹ�ã�
+// (可写),并刷新页变换高速缓冲,然后返回。即如果该内存页面此时只被一个进程使用,
-// ���Ҳ����ں��еĽ��̣���ֱ�Ӱ����Ը�Ϊ��д���ɣ���������������һ����ҳ�档
+// 并且不是内核中的进程,就直接把属性改为可写即可,不用再重新申请一个新页面。
232 old_page = -0xfffff000 & *table_entry; // ȡָ��ҳ����������ҳ���ַ��
+0xfffff000 & *table_entry; // 取指定页表项中物理页面地址。233 if (old_page >=
237 }
-// �������Ҫ�����ڴ���������һҳ����ҳ���ִ��д�����Ľ��̵���ʹ�ã�ȡ��ҳ�湲����
+// 否则就需要在主内存区内申请一页空闲页面给执行写操作的进程单独使用,取消页面共享。
-// ���ԭҳ������ڴ�Ͷˣ�����ζ�� mem_map[] > 1��ҳ���ǹ����ģ�����ԭҳ���ҳ
+// 如果原页面大于内存低端(则意味着 mem_map[] > 1,页面是共享的),则将原页面的页
-// ��ӳ���ֽ�����ֵ�ݼ�1��Ȼ��ָ��ҳ�������ݸ���Ϊ��ҳ���ַ�����ÿɶ�д�ȱ�־
+// 面映射字节数组值递减1。然后将指定页表项内容更新为新页面地址,并置可读写等标志
-// ��U/S��R/W��P������ˢ��ҳ�任���ٻ���֮�����ԭҳ�����ݸ��Ƶ���ҳ�档
+// (U/S、R/W、P)。在刷新页变换高速缓冲之后,最后将原页面内容复制到新页面。
238 if (!(new_page=get_free_page()))
239 oom(); -// Out of Memory���ڴ治��������
+// Out of Memory。内存不够处理。240 if (old_page >= */
/*
-* ���û���ͼ��һ����ҳ����дʱ���ú��������Ѵ��ڵ��ڴ�ҳ�棨дʱ���ƣ���
+* 当用户试图往一共享页面上写时,该函数处理已存在的内存页面(写时复制),
-* ����ͨ����ҳ�渴�Ƶ�һ���µ�ַ�ϲ��ҵݼ�ԭҳ��Ĺ�������ֵʵ�ֵġ�
+* 它是通过将页面复制到一个新地址上并且递减原页面的共享计数值实现的。
*
-* ������ڴ���ռ䣬���Ǿ���ʾ�γ�����Ϣ���˳���
+* 如果它在代码空间,我们就显示段出错信息并退出。
*/
-//// ִ��д����ҳ�洦����
+//// 执行写保护页面处理。
-// ��д����ҳ�洦����������ҳ�쳣�жϴ��������е��õ�C��������page.s�����б����á�
+// 是写共享页面处理函数。是页异常中断处理过程中调用的C函数。在page.s程序中被调用。
-// ��������error_code -�� address �ǽ�����дд����ҳ��ʱ�� CPU�����쳣���Զ����ɵġ�
+// 函数参数error_code +和 address 是进程在写写保护页面时由 CPU产生异常而自动生成的。
-// error_codeָ���������ͣ��μ����¿�ʼ���ġ��ڴ�ҳ������쳣��һ�ڣ�address�Dz���
+// error_code指出出错类型,参见本章开始处的“内存页面出错异常”一节;address是产生
-// �쳣��ҳ�����Ե�ַ��д����ҳ��ʱ�踴��ҳ�棨дʱ���ƣ���
+// 异常的页面线性地址。写共享页面时需复制页面(写时复制)。
254 void do_wp_page(unsigned @@ -3250,20 +3250,20 @@ long error_code,unsigned long address)
255 {
-// �����ж�CPU���ƼĴ���CR2����������ҳ���쳣�����Ե�ַ��ʲô��Χ�С����address
+// 首先判断CPU控制寄存器CR2给出的引起页面异常的线性地址在什么范围中。如果address
-// С�� -TASK_SIZE��0x4000000����64MB������ʾ�쳣ҳ��λ�����ں˻�����0������1����
+// 小于 +TASK_SIZE(0x4000000,即64MB),表示异常页面位置在内核或任务0和任务1所处
-// �����Ե�ַ��Χ�ڣ����Ƿ���������Ϣ���ں˷�Χ�ڴ汻д����������� (address�C��ǰ
+// 的线性地址范围内,于是发出警告信息“内核范围内存被写保护”;如果 (address–当前
-// ���̴�����ʼ��ַ)����һ�����̵ij��ȣ�64MB������ʾaddress��ָ�����Ե�ַ��������
+// 进程代码起始地址)大于一个进程的长度(64MB),表示address所指的线性地址不在引起
-// �쳣�Ľ������Ե�ַ�ռ䷶Χ�ڣ����ڷ���������Ϣ���˳���
+// 异常的进程线性地址空间范围内,则在发出出错信息后退出。
256 if (address <
264 /* stupid, stupid. I really want the libc.a from GNU */
-/* �������ڻ���������������Ϊestdio����ڴ���ռ�ִ��д���� */
+/* 我们现在还不能这样做:因为estdio库会在代码空间执行写操作 */
-/* ����̫���ˡ��������GNU�õ�libc.a�⡣*/
+/* 真是太愚蠢了。我真想从GNU得到libc.a库。*/
-// ������Ե�ַλ�ڽ��̵Ĵ���ռ��У�����ִֹ�г�����Ϊ������ֻ���ġ�
+// 如果线性地址位于进程的代码空间中,则终止执行程序。因为代码是只读的。
265 if ( &nb
267 #endif // �������溯��un_wp_page()������ȡ��ҳ�汣������������ҪΪ�����ò����������� // 调用上面函数un_wp_page()来处理取消页面保护。但首先需要为其准备好参数。参数是 // ���Ե�ַaddressָ��ҳ����ҳ���е�ҳ����ָ�룬����㷽���ǣ� // 线性地址address指定页面在页表中的页表项指针,其计算方法是: // ��
-((address>>10) & 0xffc)������ָ�����Ե�ַ��ҳ������ҳ���е�ƫ�Ƶ�ַ����Ϊ // ①
+((address>>10) & 0xffc):计算指定线性地址中页表项在页表中的偏移地址;因为 // �������Ե�ַ�ṹ��(address>>12) ����ҳ�����е���������ÿ��ռ4���ֽڣ���˳� // 根据线性地址结构,(address>>12) 就是页表项中的索引,但每项占4个字节,因此乘 // 4��(address>>12)<<2
-= (address>>10)&0xffc �Ϳɵõ�ҳ�����ڱ��е�ƫ�Ƶ�ַ�� // 4后:(address>>12)<<2
+= (address>>10)&0xffc 就可得到页表项在表中的偏移地址。 // �����&0xffc�������Ƶ�ַ��Χ��һ��ҳ���ڡ�
-����Ϊֻ�ƶ���10λ��������2λ // 与操作&0xffc用于限制地址范围在一个页面内。
+又因为只移动了10位,因此最后2位 // �����Ե�ַ��12 λ�е����2λ��ҲӦ���ε��� ��������Ե�ַ��ҳ������ҳ����ƫ // 是线性地址低12 位中的最高2位,也应屏蔽掉。 因此求线性地址中页表项在页表中偏 // �Ƶ�ֱַ��һЩ�ı�ʾ������(((address>>12) & 0x3ff)<<2 )�� // 移地址直观一些的表示方法是(((address>>12) & 0x3ff)<<2 )。 // ��
-(0xfffff000 & *((address>>20) &0xffc))������ȡĿ¼����ҳ���ĵ�ֵַ�����У� // ②
+(0xfffff000 & *((address>>20) &0xffc)):用于取目录项中页表的地址值;其中, // ((address>>20)
-&0xffc)����ȡ���Ե�ַ�е�Ŀ¼��������Ŀ¼���е�ƫ��λ�á���Ϊ
// address>>22 ��Ŀ¼������ֵ����ÿ��4���ֽڣ���˳���4�� (address>>22)<<2
+ // address>>22 是目录项索引值,但每项4个字节,因此乘以4后: (address>>22)<<2
// = (address>>20) ����ָ������Ŀ¼���е�ƫ�Ƶ�ַ��
-&0xffc��������Ŀ¼������ֵ // = (address>>20) 就是指定项在目录表中的偏移地址。
+&0xffc用于屏蔽目录项索引值 // �����2λ����Ϊֻ�ƶ���20λ��������2λ��ҳ�����������ݣ�Ӧ�����ε����� // 中最后2位。因为只移动了20位,因此最后2位是页表索引的内容,应该屏蔽掉。而 // *((address>>20)
-&0xffc) ����ȡָ��Ŀ¼���������ж�Ӧҳ����������ַ���������
// 0xffffff000�������ε�ҳĿ¼�������е�һЩ��־λ��Ŀ¼���12λ����ֱ�۱�ʾΪ
+// 0xffffff000用于屏蔽掉页目录项内容中的一些标志位(目录项低12位)。直观表示为
// (0xffffff000 & -*((unsigned long *) (((address>>22) & 0x3ff)<<2)))��
+*((unsigned long *) (((address>>22) & 0x3ff)<<2)))。 -// �� �ɢ���ҳ������ҳ����ƫ�Ƶ�ַ���� ����Ŀ¼���������ж�Ӧҳ����������ַ����
+// ③ 由①中页表项在页表中偏移地址加上 ②中目录表项内容中对应页表的物理地址即可
-// �õ�ҳ�����ָ�루������ַ��������Թ�����ҳ����и��ơ�
+// 得到页表项的指针(物理地址)。这里对共享的页面进行复制。
268 }
273
-//// дҳ����֤��
+//// 写页面验证。
-// ��ҳ�治��д������ҳ�档��fork.c�е�34�б��ڴ���֤ͨ�ú���verify_area()���á�
+// 若页面不可写,则复制页面。在fork.c中第34行被内存验证通用函数verify_area()调用。
-// ����address��ָ��ҳ����4G�ռ��е����Ե�ַ��
+// 参数address是指定页面在4G空间中的线性地址。
274 void write_verify(unsigned
@@ -3414,20 +3414,20 @@ lang=EN-US> unsigned long page;<
277 // ����ȡָ�����Ե�ַ��Ӧ��ҳĿ¼�����Ŀ¼���еĴ���λ��P���ж�Ŀ¼���Ӧ��ҳ�� // 首先取指定线性地址对应的页目录项,根据目录项中的存在位(P)判断目录项对应的页表 // �Ƿ���ڣ�����λP=1?�����������ڣ�P=0���ء�������������Ϊ���ڲ����ڵ�ҳ��û // 是否存在(存在位P=1?),若不存在(P=0)则返回。这样处理是因为对于不存在的页面没 // �й�����дʱ���ƿ��ԣ�����������Դ˲����ڵ�ҳ��ִ��д����ʱ��ϵͳ�ͻ���Ϊȱҳ�� // 有共享和写时复制可言,并且若程序对此不存在的页面执行写操作时,系统就会因为缺页异 // ����ȥִ��do_no_page()����Ϊ����ط�ʹ��
-put_page()����ӳ��һ������ҳ�档 // 常而去执行do_no_page(),并为这个地方使用
+put_page()函数映射一个物理页面。 // ���ų����Ŀ¼����ȡҳ����ַ������ָ��ҳ����ҳ���е�ҳ����ƫ��ֵ���ö�Ӧ��ַ��ҳ // 接着程序从目录项中取页表地址,加上指定页面在页表中的页表项偏移值,得对应地址的页 // ����ָ�롣�ڸñ����а����Ÿ������Ե�ַ��Ӧ������ҳ�档 // 表项指针。在该表项中包含着给定线性地址对应的物理页面。 278 if (!( (page =
@@ -3445,11 +3445,11 @@ lang=EN-US> page &=
lang=EN-US> page +=
((address>>10) & 0xffc); // Ȼ���жϸ�ҳ�����е�λ1��R/W����λ0��P����־�������ҳ�治��д��R/W=0���Ҵ��ڣ� // 然后判断该页表项中的位1(R/W)、位0(P)标志。如果该页面不可写(R/W=0)且存在, // ��ô��ִ�й����������ҳ�������дʱ���ƣ�������ʲôҲ������ֱ���˳��� // 那么就执行共享检验和复制页面操作(写时复制)。否则什么也不做,直接退出。 282 if ((3 &
@@ -3468,14 +3468,14 @@ lang=EN-US> } 286 //// ȡ��һҳ�����ڴ�ҳ��ӳ�䵽ָ�����Ե�ַ���� //// 取得一页空闲内存页并映射到指定线性地址处。 // get_free_page()��������ȡ�������ڴ�����һҳ�����ڴ档�����������ǻ�ȡ��һҳ // get_free_page()仅是申请取得了主内存区的一页物理内存。而本函数则不仅是获取到一页 // �����ڴ�ҳ�棬����һ������put_page()��������ҳ��ӳ�䵽ָ�������Ե�ַ���� // 物理内存页面,还进一步调用put_page(),将物理页面映射到指定的线性地址处。 // ����address��ָ��ҳ������Ե�ַ�� // 参数address是指定页面的线性地址。 287 void get_empty_page(unsigned
@@ -3490,12 +3490,12 @@ lang=EN-US> unsigned long tmp;
290 // ������ȡ��һ����ҳ�棬���߲��ܽ���ȡҳ����õ�ָ����ַ��������ʾ�ڴ治������Ϣ�� // 若不能取得一空闲页面,或者不能将所取页面放置到指定地址处,则显示内存不够的信息。 // 292����Ӣ��ע�͵ĺ����ǣ�free_page()�����IJ���tmp��0Ҳû�й�ϵ���ú�������� // 292行上英文注释的含义是:free_page()函数的参数tmp是0也没有关系,该函数会忽略 // �������������ء� // 它并能正常返回。 291 if (!(tmp= */ /* * try_to_share()������"p"�м��λ�ڵ�ַ"address"����ҳ�棬��ҳ���Ƿ���ڣ� * try_to_share()在任务"p"中检查位于地址"address"处的页面,看页面是否存在, * �Ƿ�ɾ�������Ǹɾ��Ļ������뵱ǰ�������� * 是否干净。如果是干净的话,就与当前任务共享。 * * ע�⣡���������Ѽٶ�p !=��ǰ���������ǹ���ͬһ��ִ�г�������� * 注意!这里我们已假定p !=当前任务,并且它们共享同一个执行程序或库程序。 */ //// ���ԶԵ�ǰ����ָ����ַ����ҳ����й��������� //// 尝试对当前进程指定地址处的页面进行共享处理。 // ��ǰ���������p��ͬһִ�д��룬Ҳ������Ϊ��ǰ��������p����ִ��fork���������� // 当前进程与进程p是同一执行代码,也可以认为当前进程是由p进程执行fork操作产生的 // ���̣�������ǵĴ�������һ�������δ�����ݶ�������������ô���ݶ�����ҲӦһ���� // 进程,因此它们的代码内容一样。如果未对数据段内容作过修改那么数据段内容也应一样。 // ���� address
-�ǽ����е�����ַ�����ǵ�ǰ�������� p ���̹���ҳ�����ҳ���ַ�� // 参数 address
+是进程中的逻辑地址,即是当前进程欲与 p 进程共享页面的逻辑页面地址。 // ����p�ǽ�������ҳ��Ľ��̡����p����address����ҳ����ڲ���û�б��Ĺ��Ļ��� // 进程p是将被共享页面的进程。如果p进程address处的页面存在并且没有被修改过的话, // ���õ�ǰ������p���̹���֮��ͬʱ����Ҫ��ָ֤���ĵ�ַ���Ƿ��Ѿ�������ҳ�棬���� // 就让当前进程与p进程共享之。同时还需要验证指定的地址处是否已经申请了页面,若是 // ����������������أ�1 - ҳ�湲�������ɹ���0 - ʧ�ܡ� // 则出错,死机。返回:1 - 页面共享处理成功;0 - 失败。 305 static int try_to_share(unsigned
@@ -3609,27 +3609,27 @@ phys_addr; 312 // ���ȷֱ����ָ������p�к͵�ǰ����������ַaddress��Ӧ��ҳĿ¼�Ϊ�˼��㷽�� // 首先分别求得指定进程p中和当前进程中逻辑地址address对应的页目录项。为了计算方便 // �����ָ������ַaddress����'��'ҳĿ¼��ţ����Խ��̿ռ䣨0 - 64MB�������ҳ // 先求出指定逻辑地址address处的'逻辑'页目录项号,即以进程空间(0 - 64MB)算出的页 // Ŀ¼��š���'��'ҳĿ¼��ż��Ͻ���p ��CPU 4G���Կռ�����ʼ��ַ��Ӧ��ҳĿ¼� // 目录项号。该'逻辑'页目录项号加上进程p 在CPU 4G线性空间中起始地址对应的页目录项, // ���õ�����p�е�ַ
-address ��ҳ������Ӧ��4G ���Կռ��е�ʵ��ҳĿ¼��from_page�� // 即得到进程p中地址
+address 处页面所对应的4G 线性空间中的实际页目录项from_page。 // ��'��'ҳĿ¼��ż��ϵ�ǰ����CPU 4G ���Կռ�����ʼ��ַ��Ӧ��ҳĿ¼�������� // 而'逻辑'页目录项号加上当前进程CPU 4G 线性空间中起始地址对应的页目录项,即可最后 // �õ���ǰ�����е�ַaddress��ҳ������Ӧ��4G���Կռ��е�ʵ��ҳĿ¼��to_page�� // 得到当前进程中地址address处页面所对应的4G线性空间中的实际页目录项to_page。 313 from_page = to_page
@@ -3637,42 +3637,42 @@ lang=EN-US> from_page = to_page
314 from_page +=
-((p->start_code>>20) & 0xffc); // p����Ŀ¼� 315 to_page += ((current->start_code>>20) & 0xffc);
-// ��ǰ����Ŀ¼� // �ڵõ�p���̺͵�ǰ����address��Ӧ��Ŀ¼�������ֱ�Խ���p�͵�ǰ���̽��д����� // 在得到p进程和当前进程address对应的目录项后,下面分别对进程p和当前进程进行处理。 // �������ȶ�p���̵ı�����в�����Ŀ����ȡ��p������ address��Ӧ�������ڴ�ҳ���ַ�� // 下面首先对p进程的表项进行操作。目标是取得p进程中 address对应的物理内存页面地址, // ���Ҹ�����ҳ����ڣ����Ҹɾ���û�б��Ĺ������ࣩ�� // 并且该物理页面存在,而且干净(没有被修改过,不脏)。 // ��������ȡĿ¼�����ݡ������Ŀ¼����Ч��P=0������ʾĿ¼���Ӧ�Ķ���ҳ�������ڣ� // 方法是先取目录项内容。如果该目录项无效(P=0),表示目录项对应的二级页表不存在, // ���Ƿ��ء�����ȡ��Ŀ¼���Ӧҳ����ַfrom���Ӷ����������ַaddress��Ӧ��ҳ���� // 于是返回。否则取该目录项对应页表地址from,从而计算出逻辑地址address对应的页表项 // ָ�룬��ȡ����ҳ����������ʱ������phys_addr�С� // 指针,并取出该页表项内容临时保存在phys_addr中。 316 /* is there a page-directory at from? */ /* ��from���Ƿ����ҳĿ¼� /* 在from处是否存在页目录项?*/ 317 from = *(unsigned
long *) from_page;
-// p����Ŀ¼�����ݡ�
318 if (!(from & @@ -3685,30 +3685,30 @@ return 0;
320 from &= 0xfffff000; -// ҳ����ַ��
+// 页表地址。321 from_page = from + -((address>>10) & 0xffc); // ҳ����ָ�롣
+((address>>10) & 0xffc); // 页表项指针。322 phys_addr = -*(unsigned long *) from_page; // ҳ�������ݡ�
+*(unsigned long *) from_page; // 页表项内容。 -// ���ſ���ҳ����ӳ�������ҳ���Ƿ���ڲ��Ҹɾ��� -0x41 ��Ӧҳ�����е�D��Dirty����
+// 接着看看页表项映射的物理页面是否存在并且干净。 +0x41 对应页表项中的D(Dirty)和
-// P��Present����־�����ҳ�治�ɾ�����Ч�ء�Ȼ�����ǴӸñ�����ȡ������ҳ���ַ
+// P(Present)标志。如果页面不干净或无效则返回。然后我们从该表项中取出物理页面地址
-// �ٱ�����phys_addr�С���������ټ��һ���������ҳ���ַ����Ч�ԣ�������Ӧ�ó���
+// 再保存在phys_addr中。最后我们再检查一下这个物理页面地址的有效性,即它不应该超过
-// �������������ֵַ��Ҳ��Ӧ��С���ڴ�Ͷ�(1MB)��
+// 机器最大物理地址值,也不应该小于内存低端(1MB)。
323 /* is the page clean and present? */
-/* ����ҳ��ɾ����Ҵ����� /* 物理页面干净并且存在吗?*/
324
326 phys_addr &= 0xfffff000; -// ����ҳ���ַ��
+// 物理页面地址。327 if (phys_addr >= @@ -3735,23 +3735,23 @@ return 0;
-
// �������ȶԵ�ǰ���̵ı�����в�����Ŀ����ȡ�õ�ǰ������address��Ӧ��ҳ�����ַ��
+// 下面首先对当前进程的表项进行操作。目标是取得当前进程中address对应的页表项地址,
-// ���Ҹ�ҳ���û��ӳ������ҳ�棬����P=0��
+// 并且该页表项还没有映射物理页面,即其P=0。
-// ����ȡ��ǰ����ҳĿ¼��������to�������Ŀ¼����Ч��P=0������Ŀ¼���Ӧ�Ķ���ҳ��
+// 首先取当前进程页目录项内容èto。如果该目录项无效(P=0),即目录项对应的二级页表
-// �����ڣ�������һ����ҳ�������ҳ����������Ŀ¼��to_page���ݣ�����ָ����ڴ�ҳ�档
+// 不存在,则申请一空闲页面来存放页表,并更新目录项to_page内容,让其指向该内存页面。
329 to = *(unsigned long *) to_page; -// ��ǰ����Ŀ¼�����ݡ�
+// 当前进程目录项内容。330 if (!(to & 1))
@@ -3772,27 +3772,27 @@ else lang=EN-US> oom(); -// ����ȡĿ¼���е�ҳ����ַ��to������ҳ��������ֵ<<2����ҳ�����ڱ���ƫ�Ƶ�ַ���õ�
+// 否则取目录项中的页表地址èto,加上页表项索引值<<2,即页表项在表中偏移地址,得到
-// ҳ�����ַ��to_page����Ը�ҳ��������ʱ���Ǽ������Ӧ������ҳ���Ѿ����ڣ�
+// 页表项地址èto_page。针对该页表项,如果此时我们检查出其对应的物理页面已经存在,
-// ��ҳ����Ĵ���λP=1����˵��ԭ�������빲������p�ж�Ӧ������ҳ�棬�����������Լ�
+// 即页表项的存在位P=1,则说明原本我们想共享进程p中对应的物理页面,但现在我们自己
-// �Ѿ�ռ���ˣ�ӳ���У�����ҳ�档����˵���ں˳�����������
+// 已经占有了(映射有)物理页面。于是说明内核出错,死机。
335 to &= 0xfffff000; -// ҳ����ַ��
+// 页表地址。336 to_page = to + ((address>>10) & 0xffc); // -ҳ�����ַ��
+页表项地址。337 if (1 & @@ -3805,25 +3805,25 @@ already exists");
-
// ���ҵ��˽���p������ַaddress����Ӧ�ĸɾ����Ҵ��ڵ�����ҳ�棬����Ҳȷ���˵�ǰ
+// 在找到了进程p中逻辑地址address处对应的干净并且存在的物理页面,而且也确定了当前
-// ����������ַ address ����Ӧ�Ķ���ҳ�����ַ֮���������ڶ����ǽ��й���������
+// 进程中逻辑地址 address 所对应的二级页表项地址之后,我们现在对他们进行共享处理。
-// �����ܼ��������ȶ�p���̵�ҳ��������ģ�������д������R/W=0��ֻ������־��
+// 方法很简单,就是首先对p进程的页表项进行修改,设置其写保护(R/W=0,只读)标志,
-// Ȼ���õ�ǰ���̸��� p���̵����ҳ�����ʱ��ǰ��������ַ address ��ҳ�漴��
+// 然后让当前进程复制 p进程的这个页表项。此时当前进程逻辑地址 address 处页面即被
-// ӳ�䵽p��������ַaddress��ҳ��ӳ�������ҳ���ϡ�
+// 映射到p进程逻辑地址address处页面映射的物理页面上。
339 /* share them: write-protect */
-/* �����ǽ��й���������д���� /* 对它们进行共享处理:写保护 */
340
lang=EN-US> *(unsigned long *) to_page = *(unsigned long *) from_page; -// ���ˢ��ҳ�任���ٻ��塣��������������ҳ���ҳ��ţ�������Ӧҳ��ӳ���ֽ���������
+// 随后刷新页变换高速缓冲。计算所操作物理页面的页面号,并将对应页面映射字节数组项中
-// �����õ���1�����1����ʾ���������ɹ���
+// 的引用递增1。最后返回1,表示共享处理成功。
342 LOW_MEM;
344 phys_addr >>= 12; -// ��ҳ��š�
+// 得页面号。345 */
/*
-* share_page()��ͼ�ҵ�һ�����̣��������뵱ǰ���̹���ҳ�档����address��
+* share_page()试图找到一个进程,它可以与当前进程共享页面。参数address是
-* ��ǰ�������ݿռ�������������ijҳ���ַ��
+* 当前进程数据空间中期望共享的某页面地址。
*
-* ��������ͨ�����executable->i_count����֤�Ƿ���С���������������ѹ���
+* 首先我们通过检测executable->i_count来查证是否可行。如果有其他任务已共享
-* ��inode������Ӧ�ô���1��
+* 该inode,则它应该大于1。
*/
-//// ����ҳ�洦����
+//// 共享页面处理。
-// �ڷ���ȱҳ�쳣ʱ�����ȿ����ܷ�������ͬһ��ִ���ļ����������̽���ҳ�湲��������
+// 在发生缺页异常时,首先看看能否与运行同一个执行文件的其他进程进行页面共享处理。
-// �ú��������ж�ϵͳ���Ƿ�����һ������Ҳ�����е�ǰ����һ����ִ���ļ������У�����
+// 该函数首先判断系统中是否有另一个进程也在运行当前进程一样的执行文件。若有,则在
-// ϵͳ��ǰ����������Ѱ���������������ҵ�������������ͳ������乲��ָ����ַ����
+// 系统当前所有任务中寻找这样的任务。若找到了这样的任务就尝试与其共享指定地址处的
-// ҳ�档��ϵͳ��û�������������������뵱ǰ������ͬ��ִ���ļ�����ô����ҳ�������
+// 页面。若系统中没有其他任务正在运行与当前进程相同的执行文件,那么共享页面操作的
-// ǰ�����������ڣ���˺��������˳����ж�ϵͳ���Ƿ�����һ������Ҳ��ִ��ͬһ��ִ��
+// 前提条件不存在,因此函数立刻退出。判断系统中是否有另一个进程也在执行同一个执行
-// �ļ��ķ��������ý����������ݽṹ�е� executable �ֶΣ���library�ֶΣ������ֶ�
+// 文件的方法是利用进程任务数据结构中的 executable 字段(或library字段)。该字段
-// ָ���������ִ�г���ʹ�õĿ��ļ������ڴ��е� -i�ڵ㡣���ݸ� i�ڵ�����ô���
+// 指向进程正在执行程序(或使用的库文件)在内存中的 +i节点。根据该 i节点的引用次数
-// i_count ���ǿ��Խ��������жϡ� ���ڵ��i_countֵ����1�������ϵͳ������������
+// i_count 我们可以进行这种判断。 若节点的i_count值大于1,则表明系统中有两个进程
-// ��������ͬһ��ִ���ļ�������ļ��������ǿ����ٶ�����ṹ��������������Ƚ��Ƿ�
+// 正在运行同一个执行文件(或库文件),于是可以再对任务结构数组中所有任务比较是否
-// ����ͬ�� executable�ֶΣ��� -library�ֶΣ������ȷ�����������������ִͬ���ļ�
+// 有相同的 executable字段(或 +library字段)来最后确定多个进程运行着相同执行文件
-// �������
+// 的情况。
-// ����inode�������й���ҳ�����ִ���ļ����ڴ�i�ڵ㡣address�ǽ����е�����ַ��
+// 参数inode是欲进行共享页面进程执行文件的内存i节点。address是进程中的逻辑地址,
-// ���ǵ�ǰ��������p���̹���ҳ�����ҳ���ַ������1 �C���������ɹ���0 - ʧ�ܡ�
+// 即是当前进程欲与p进程共享页面的逻辑页面地址。返回1 –共享操作成功,0 - 失败。
357 static int share_page(struct @@ -3959,14 +3959,14 @@ style='color:blue'>task_struct ** p;
360
-// ���ȼ��һ�²���ָ�����ڴ� i�ڵ����ü���ֵ��������ڴ� i�ڵ�����ü���ֵ����
+// 首先检查一下参数指定的内存 i节点引用计数值。如果该内存 i节点的引用计数值等于
-// 1��executable->i_count -=1������i�ڵ�ָ��գ���ʾ��ǰϵͳ��ֻ��1������������
+// 1(executable->i_count +=1)或者i节点指针空,表示当前系统中只有1个进程在运行
-// ��ִ���ļ������ṩ��i�ڵ���Ч������������ԣ�ֱ���˳�������
+// 该执行文件或者提供的i节点无效。因此无共享可言,直接退出函数。
361 if @@ -3976,34 +3976,34 @@ lang=EN-US> if lang=EN-US> return 0;
-// ��������������������������Ѱ���뵱ǰ���̿ɹ���ҳ��Ľ��̣���������ִͬ���ļ�
+// 否则搜索任务数组中所有任务。寻找与当前进程可共享页面的进程,即运行相同执行文件
-// ����һ�����̣������Զ�ָ����ַ��ҳ����й���������������ַaddressС�ڽ��̿�
+// 的另一个进程,并尝试对指定地址的页面进行共享。若进程逻辑地址address小于进程库
-// �ļ�������ַ�ռ����ʼ��ַLIBRARY_OFFSET�������������ҳ���ڽ���ִ���ļ���Ӧ
+// 文件在逻辑地址空间的起始地址LIBRARY_OFFSET,则表明共享的页面在进程执行文件对应
-// ������ַ�ռ䷶Χ�ڣ����Ǽ��һ��ָ��i�ڵ��Ƿ�����̵�ִ���ļ�i�ڵ㣨������
+// 的逻辑地址空间范围内,于是检查一下指定i节点是否与进程的执行文件i节点(即进程
-// ��executable��ͬ��������ͬ�����Ѱ�ҡ�����������ַaddress���ڵ��ڽ��̿��ļ�
+// 的executable相同,若不相同则继续寻找。若进程逻辑地址address大于等于进程库文件
-// ������ַ�ռ����ʼ��ַLIBRARY_OFFSET���������Ҫ������ҳ���ڽ���ʹ�õĿ��ļ�
+// 在逻辑地址空间的起始地址LIBRARY_OFFSET,则表明想要共享的页面在进程使用的库文件
-// �У����Ǽ��ָ���ڵ� inode �Ƿ�����̵Ŀ��ļ� i�ڵ���ͬ��������ͬ�����Ѱ�ҡ�
+// 中,于是检查指定节点 inode 是否与进程的库文件 i节点相同,若不相同则继续寻找。
-// ����ҵ�ij������p����executable��library��ָ���Ľڵ�inode��ͬ�������ҳ��
+// 如果找到某个进程p,其executable或library与指定的节点inode相同,则调用页面
-// ��̽����try_to_share() -����ҳ�湲���������������ɹ�����������1������0��
+// 试探函数try_to_share() +尝试页面共享。若共享操作成功,则函数返回1。否则返回0,
-// ��ʾ����ҳ�����ʧ�ܡ�
+// 表示共享页面操作失败。
363 for (p = &FIRST_TASK ; --p) {
364 if (!*p) -// �������������У������Ѱ�ҡ�
+// 如果该任务项空闲,则继续寻找。365 @@ -4022,7 +4022,7 @@ continue;
366 if (current == *p) -// ������ǵ�ǰ����Ҳ����Ѱ�ҡ�
+// 如果就是当前任务,也继续寻找。367 @@ -4034,7 +4034,7 @@ if (address < LIBRARY_OFFSET) {
369 -if (inode != (*p)->executable) // ����ִ���ļ�i�ڵ㡣
+if (inode != (*p)->executable) // 进程执行文件i节点。370
@@ -4046,8 +4046,8 @@ lang=EN-US> &nb
372
-if (inode != (*p)->library) // ����ʹ�ÿ��ļ�i�ڵ㡣
373
@@ -4060,7 +4060,7 @@ lang=EN-US> &nb
375
if (try_to_share(address,*p))
-// ���Թ���ҳ�档
376 @@ -4078,24 +4078,24 @@ lang=EN-US> }
380
-//// ִ��ȱҳ������
+//// 执行缺页处理。
-// ���ʲ�����ҳ��Ĵ���������ҳ�쳣�жϴ��������е��ô˺�������page.s�����б����á�
+// 访问不存在页面的处理函数,页异常中断处理过程中调用此函数。在page.s程序中被调用。
-// ��������error_code -�� address �ǽ����ڷ���ҳ��ʱ�� CPU��ȱҳ�����쳣���Զ����ɡ�
+// 函数参数error_code +和 address 是进程在访问页面时由 CPU因缺页产生异常而自动生成。
-// error_codeָ���������ͣ��μ����¿�ʼ���ġ��ڴ�ҳ������쳣��һ�ڣ�address�Dz���
+// error_code指出出错类型,参见本章开始处的“内存页面出错异常”一节;address是产生
-// �쳣��ҳ�����Ե�ַ��
+// 异常的页面线性地址。
-// �ú������Ȳ鿴��ȱҳ�Ƿ��ڽ����豸�У����������������������Ѽ��ص���ͬ�ļ�
+// 该函数首先查看所缺页是否在交换设备中,若是则交换进来。否则尝试与已加载的相同文件
-// ����ҳ�湲��������ֻ�����ڽ��̶�̬�����ڴ�ҳ���ֻ��ӳ��һҳ�����ڴ�ҳ���ɡ�����
+// 进行页面共享,或者只是由于进程动态申请内存页面而只需映射一页物理内存页即可。若共
-// ���������ɹ�����ôֻ�ܴ���Ӧ�ļ��ж�����ȱ������ҳ�浽ָ�����Ե�ַ����
+// 享操作不成功,那么只能从相应文件中读入所缺的数据页面到指定线性地址处。
381 void do_no_page(unsigned @@ -4123,20 +4123,20 @@ style='color:blue'>m_inode * inode;
388
-// �����ж�CPU���ƼĴ���CR2����������ҳ���쳣�����Ե�ַ��ʲô��Χ�С����address
+// 首先判断CPU控制寄存器CR2给出的引起页面异常的线性地址在什么范围中。如果address
-// С�� -TASK_SIZE��0x4000000����64MB������ʾ�쳣ҳ��λ�����ں˻�����0������1����
+// 小于 +TASK_SIZE(0x4000000,即64MB),表示异常页面位置在内核或任务0和任务1所处
-// �����Ե�ַ��Χ�ڣ����Ƿ���������Ϣ���ں˷�Χ�ڴ汻д����������� (address�C��ǰ
+// 的线性地址范围内,于是发出警告信息“内核范围内存被写保护”;如果 (address–当前
-// ���̴�����ʼ��ַ)����һ�����̵ij��ȣ�64MB������ʾaddress��ָ�����Ե�ַ��������
+// 进程代码起始地址)大于一个进程的长度(64MB),表示address所指的线性地址不在引起
-// �쳣�Ľ������Ե�ַ�ռ䷶Χ�ڣ����ڷ���������Ϣ���˳���
+// 异常的进程线性地址空间范围内,则在发出出错信息后退出。
389 if (address < &nb
394 } // Ȼ�����ָ�������Ե�ַaddress������Ӧ�Ķ���ҳ����ָ�룬�����ݸ�ҳ���������ж� // 然后根据指定的线性地址address求出其对应的二级页表项指针,并根据该页表项内容判断 // address����ҳ���Ƿ��ڽ����豸�С����������ҳ�沢�˳�������������ȡָ�����Ե�ַ // address处的页面是否在交换设备中。若是则调入页面并退出。方法是首先取指定线性地址 // address��Ӧ��Ŀ¼�����ݡ������Ӧ�Ķ���ҳ�����ڣ���ȡ����Ŀ¼���ж���ҳ���ĵ�ַ�� // address对应的目录项内容。如果对应的二级页表存在,则取出该目录项中二级页表的地址, // ����ҳ����ƫ��ֵ���õ����Ե�ַaddress��ҳ���Ӧ��ҳ�����ָ�룬�Ӷ����ҳ������ // 加上页表项偏移值即得到线性地址address处页面对应的页面表项指针,从而获得页表项内 // �ݡ���ҳ�������ݲ�Ϊ0����ҳ�������λP=0����˵����ҳ����ָ��������ҳ��Ӧ���ڽ� // 容。若页表项内容不为0并且页表项存在位P=0,则说明该页表项指定的物理页面应该在交 // ���豸�С����Ǵӽ����豸�е���ָ��ҳ����˳������� // 换设备中。于是从交换设备中调入指定页面后退出函数。 395 page = *(unsigned
-long *) ((address >> 20) & 0xffc); // ȡĿ¼�����ݡ�
396 if (page & 1) {
@@ -4189,17 +4189,17 @@ lang=EN-US> if (page & 1) {<397 page &= 0xfffff000; -// ����ҳ����ַ��
+// 二级页表地址。398 page += (address >> 10) & 0xffc; -// ҳ����ָ�롣
+// 页表项指针。399 tmp = *(unsigned long *) page; -// ҳ�������ݡ�
+// 页表项内容。400 @@ -4208,7 +4208,7 @@ if (tmp && !(1 & tmp)) {
401 swap_in((unsigned long *) page); -// �ӽ����豸��ҳ�档
+// 从交换设备读页面。402
@@ -4221,59 +4221,59 @@ lang=EN-US> &nb
404 } // ����ȡ���Կռ���ָ����ַaddress��ҳ���ַ�������ָ�����Ե�ַ�ڽ��̿ռ�������� // 否则取线性空间中指定地址address处页面地址,并算出指定线性地址在进程空间中相对于 // ���̻�ַ��ƫ�Ƴ���ֵtmp������Ӧ������ַ���Ӷ��������ȱҳҳ����ִ���ļ�ӳ���� // 进程基址的偏移长度值tmp,即对应的逻辑地址。从而可以算出缺页页面在执行文件映像中 // ���ڿ��ļ��еľ�����ʼ���ݿ�š� // 或在库文件中的具体起始数据块号。 405 address &=
0xfffff000;
-// address��ȱҳҳ���ַ��
406 tmp = address - current->start_code; -// ȱҳҳ���Ӧ����ַ��
+// 缺页页面对应逻辑地址。-
// ���ȱҳ��Ӧ������ַtmp���ڿ�ӳ���ļ��ڽ������ռ��е���ʼλ�ã�˵��ȱ�ٵ�ҳ
+// 如果缺页对应的逻辑地址tmp大于库映像文件在进程逻辑空间中的起始位置,说明缺少的页
-// ���ڿ�ӳ���ļ��С����Ǵӵ�ǰ�����������ݽṹ�п���ȡ�ÿ�ӳ���ļ���i�ڵ�library��
+// 面在库映像文件中。于是从当前进程任务数据结构中可以取得库映像文件的i节点library,
-// ���������ȱҳ�ڿ��ļ��е���ʼ���ݿ��block�����ȱҳ��Ӧ������ַtmpС�ڽ���
+// 并计算出该缺页在库文件中的起始数据块号block。如果缺页对应的逻辑地址tmp小于进程
-// ��ִ��ӳ���ļ�������ַ�ռ��ĩ��λ�ã���˵��ȱ�ٵ�ҳ���ڽ���ִ���ļ�ӳ���У���
+// 的执行映像文件在逻辑地址空间的末端位置,则说明缺少的页面在进程执行文件映像中,于
-// �ǿ��Դӵ�ǰ�����������ݻ�����ȡ��ִ���ļ���i�ڵ��executable�����������ȱҳ
+// 是可以从当前进程任务数据机构中取得执行文件的i节点号executable,并计算出该缺页
-// ��ִ���ļ�ӳ���е���ʼ���ݿ��block��������ַtmp�Ȳ���ִ���ļ�ӳ��ĵ�ַ��Χ
+// 在执行文件映像中的起始数据块号block。若逻辑地址tmp既不在执行文件映像的地址范围
-// �ڣ�Ҳ���ڿ��ļ��ռ䷶Χ�ڣ���˵��ȱҳ�ǽ��̷��ʶ�̬������ڴ�ҳ���������£����
+// 内,也不在库文件空间范围内,则说明缺页是进程访问动态申请的内存页面数据所致,因此
-// û�ж�Ӧi�ڵ�����ݿ�ţ����ÿգ���
+// 没有对应i节点和数据块号(都置空)。
-// ��Ϊ���豸�ϴ�ŵ�ִ���ļ�ӳ���1�������dz���ͷ�ṹ������ڶ�ȡ���ļ�ʱ��Ҫ����
+// 因为块设备上存放的执行文件映像第1块数据是程序头结构,因此在读取该文件时需要跳过
-// ��1�����ݡ�������Ҫ���ȼ���ȱҳ���ڵ����ݿ�š���Ϊÿ�����ݳ���Ϊ // 第1块数据。所以需要首先计算缺页所在的数据块号。因为每块数据长度为BLOCK_SIZE =
-// 1KB�����һҳ�ڴ�ɴ��4�����ݿ顣��������ַtmp�������ݿ��С�ټ�1���ɵó�
+// 1KB,因此一页内存可存放4个数据块。进程逻辑地址tmp除以数据块大小再加1即可得出
-// ȱ�ٵ�ҳ����ִ��ӳ���ļ��е���ʼ���block��
+// 缺少的页面在执行映像文件中的起始块号block。
407 if (tmp >= LIBRARY_OFFSET ) {
408 inode = current->library; -// ���ļ�i�ڵ��ȱҳ��ʼ��š�
+// 库文件i节点和缺页起始块号。409
@@ -4296,7 +4296,7 @@ lang=EN-US> } else if (tmp <
411
inode = current->executable;
- // ִ���ļ�i�ڵ��ȱҳ��ʼ��š�
412 @@ -4308,7 +4308,7 @@ lang=EN-US> } else {
414 inode = NULL; -// �Ƕ�̬��������ݻ�ջ�ڴ�ҳ�档
+// 是动态申请的数据或栈内存页面。415 @@ -4317,20 +4317,20 @@ block = 0;
416 }
-// ���ǽ��̷����䶯̬�����ҳ���Ϊ�˴��ջ��Ϣ�������ȱҳ�쳣����ֱ������һҳ��
+// 若是进程访问其动态申请的页面或为了存放栈信息而引起的缺页异常,则直接申请一页物
-// ���ڴ�ҳ�沢ӳ�䵽���Ե�ַaddress�����ɡ�����˵����ȱҳ���ڽ���ִ���ļ������
+// 理内存页面并映射到线性地址address处即可。否则说明所缺页面在进程执行文件或库文
-// ����Χ�ڣ����Ǿͳ��Թ���ҳ����������ɹ����˳��������ɹ���ֻ������һҳ�����ڴ�
+// 件范围内,于是就尝试共享页面操作,若成功则退出。若不成功就只能申请一页物理内存
-// ҳ��page��Ȼ����豸�϶�ȡִ���ļ��е���Ӧҳ�沢���ã�ӳ�䣩������ҳ������ַ
+// 页面page,然后从设备上读取执行文件中的相应页面并放置(映射)到进程页面逻辑地址
-// tmp����
+// tmp处。
417 if (!inode) { -// �Ƕ�̬����������ڴ�ҳ�档
+// 是动态申请的数据内存页面。418 @@ -4346,7 +4346,7 @@ lang=EN-US> }
421 if (share_page(inode,tmp)) -// ��������ַtmp��ҳ��Ĺ�����
+// 尝试逻辑地址tmp处页面的共享。422 @@ -4355,7 +4355,7 @@ return;
423 if (!(page = get_free_page())) -// ����һҳ�����ڴ档
+// 申请一页物理内存。424
@@ -4364,17 +4364,17 @@ lang=EN-US> &nb
425 /* remember that 1 block is used for header */ /* ��ס��������ͷҪʹ��1�����ݿ� */ /* 记住,(程序)头要使用1个数据块 */ // ���������ź�ִ���ļ���i�ڵ㣬���ǾͿ��Դ�ӳ��λͼ���ҵ���Ӧ���豸�ж�Ӧ���豸 // 根据这个块号和执行文件的i节点,我们就可以从映射位图中找到对应块设备中对应的设备 // ����ţ�������nr[]�����У�������bread_page()���ɰ���4��������뵽����ҳ�� // 逻辑块号(保存在nr[]数组中)。利用bread_page()即可把这4个逻辑块读入到物理页面 // page�С� // page中。 426 for (i=0 ; i<4 ;
@@ -4390,23 +4390,23 @@ style='color:blue'>bread_page(page,inode->i_dev,nr);
-
// �ڶ��豸�������ʱ�����ܻ��������һ�����������ִ���ļ��еĶ�ȡҳ��λ�ÿ�����
+// 在读设备逻辑块操作时,可能会出现这样一种情况,即在执行文件中的读取页面位置可能离
-// �ļ�β����1��ҳ��ij��ȡ���˾Ϳ��ܶ���һЩ���õ���Ϣ������IJ������ǰ��ⲿ�ֳ�
+// 文件尾不到1个页面的长度。因此就可能读入一些无用的信息。下面的操作就是把这部分超
-// ��ִ���ļ�end_data�Ժ�IJ��ֽ������㴦������Ȼ������ҳ����ĩ�˳���1ҳ��˵����
+// 出执行文件end_data以后的部分进行清零处理。当然,若该页面离末端超过1页,说明不
-// �Ǵ�ִ���ļ�ӳ���ж�ȡ��ҳ�棬���Ǵӿ��ļ��ж�ȡ�ģ���˲���ִ�����������
+// 是从执行文件映像中读取的页面,而是从库文件中读取的,因此不用执行清零操作。
429 i = tmp + 4096 - current->end_data; -// �������ֽڳ���ֵ��
+// 超出的字节长度值。430 if (i>4095) -// ��ĩ�˳���1ҳ�������㡣
+// 离末端超过1页则不用清零。431 @@ -4415,12 +4415,12 @@ i = 0;
432 tmp = page + 4096; // -tmpָ��ҳ��ĩ�ˡ�
+tmp指向页面末端。433 while (i-- > 0) { -// ҳ��ĩ��i�ֽ����㡣
+// 页面末端i字节清零。434
@@ -4433,10 +4433,10 @@ lang=EN-US> &nb
436 } // ��������ȱҳ�쳣��һҳ����ҳ��ӳ�䵽ָ�����Ե�ַaddress�����������ɹ��ͷ��ء� // 最后把引起缺页异常的一页物理页面映射到指定线性地址address处。若操作成功就返回。 // ������ͷ��ڴ�ҳ����ʾ�ڴ治���� // 否则就释放内存页,显示内存不够。 437 if ( } 442 //// �����ڴ������ʼ���� //// 物理内存管理初始化。 // �ú�����1MB�����ڴ�������ҳ��Ϊ��λ���й���ǰ�ij�ʼ�����ù�����һ��ҳ�泤��Ϊ // 该函数对1MB以上内存区域以页面为单位进行管理前的初始化设置工作。一个页面长度为 // 4KB�ֽڡ��ú����� 1MB�������������ڴ滮�ֳ�һ����ҳ�棬��ʹ��һ��ҳ��ӳ���ֽ� // 4KB字节。该函数把 1MB以上所有物理内存划分成一个个页面,并使用一个页面映射字节 // ����mem_map[]
-������������Щҳ�档���ھ���16MB�ڴ������Ļ����������鹲��3840 // 数组mem_map[]
+来管理所有这些页面。对于具有16MB内存容量的机器,该数组共有3840 // ��
-((16MB - 1MB)/4KB)�����ɹ���3840������ҳ�档ÿ��һ�������ڴ�ҳ�汻ռ��ʱ�� // 项
+((16MB - 1MB)/4KB),即可管理3840个物理页面。每当一个物理内存页面被占用时就 // ��
-mem_map[]�ж�Ӧ�ĵ��ֽ�ֵ��1�����ͷ�һ������ҳ�棬�ͰѶ�Ӧ�ֽ�ֵ��1�� ���� // 把
+mem_map[]中对应的的字节值增1;若释放一个物理页面,就把对应字节值减1。 若字 // ��ֵΪ 0�����ʾ��Ӧҳ����У�
-���ֽ�ֵ���ڻ����1�����ʾ��Ӧҳ�汻ռ�û� // 节值为 0,则表示对应页面空闲;
+若字节值大于或等于1,则表示对应页面被占用或被不 // ͬ������ռ�á� // 同程序共享占用。 // �ڸð汾�� Linux�ں��У�����ܹ��� 16MB�������ڴ棬����16MB���ڴ潫���ò��á� // 在该版本的 Linux内核中,最多能管理 16MB的物理内存,大于16MB的内存将弃置不用。 // ���ھ���16MB�ڴ��PC��ϵͳ����û������������ RAMDISK������� start_memͨ�� // 对于具有16MB内存的PC机系统,在没有设置虚拟盘 RAMDISK的情况下 start_mem通常 // ��4MB��end_mem��16MB����˴�ʱ���ڴ�����Χ��4MB��16MB������3072������ҳ��� // 是4MB,end_mem是16MB。因此此时主内存区范围是4MB—16MB,共有3072个物理页面可 // �����䡣����Χ0 - 1MB�ڴ�ռ������ں�ϵͳ����ʵ�ں�ֻʹ��0 ��640Kb��ʣ�µIJ� // 供分配。而范围0 - 1MB内存空间用于内核系统(其实内核只使用0 —640Kb,剩下的部 // �ֱ����ָ��ٻ�����豸�ڴ�ռ�ã��� // 分被部分高速缓冲和设备内存占用)。 // ����start_mem�ǿ�����ҳ���������ڴ�����ʼ��ַ����ȥ��RAMDISK��ռ�ڴ�ռ䣩�� // 参数start_mem是可用作页面分配的主内存区起始地址(已去除RAMDISK所占内存空间)。 // end_mem��ʵ�������ڴ�����ַ������ַ��Χstart_mem��end_mem�����ڴ����� // end_mem是实际物理内存最大地址。而地址范围start_mem到end_mem是主内存区。 443 void mem_init(long
@@ -4518,20 +4518,20 @@ lang=EN-US> int i; 446 // ���Ƚ�1MB��16MB��Χ�������ڴ�ҳ���Ӧ���ڴ�ӳ���ֽ���������Ϊ��ռ��״̬������ // 首先将1MB到16MB范围内所有内存页面对应的内存映射字节数组项置为已占用状态,即各 // ���ֽ�ֵȫ�����ó�USED��100����PAGING_PAGES������Ϊ(PAGING_MEMORY>>12)����1MB // 项字节值全部设置成USED(100)。PAGING_PAGES被定义为(PAGING_MEMORY>>12),即1MB // �������������ڴ��ҳ����ڴ�ҳ����(15MB/4KB = 3840)�� // 以上所有物理内存分页后的内存页面数(15MB/4KB = 3840)。 447 HIGH_MEMORY = end_mem;
-// �����ڴ���߶ˣ�16MB����
448 for (i=0 ; i<PAGING_PAGES ; i++)
lang=EN-US> mem_map[i] = USED; -// Ȼ��������ڴ�����ʼ�ڴ� start_mem ��ҳ���Ӧ�ڴ�ӳ���ֽ����������i�����ڴ���
+// 然后计算主内存区起始内存 start_mem 处页面对应内存映射字节数组中项号i和主内存区
-// ҳ��������ʱ mem_map[] ����ĵ�i������Ӧ���ڴ����е�1��ҳ�档������ڴ�����
+// 页面数。此时 mem_map[] 数组的第i项正对应主内存区中第1个页面。最后将主内存区中
-// ҳ���Ӧ�����������㣨��ʾ���У������ھ���16MB�����ڴ��ϵͳ��mem_map[] �ж�Ӧ
+// 页面对应的数组项清零(表示空闲)。对于具有16MB物理内存的系统,mem_map[] 中对应
-// 4Mb--16Mb���ڴ���������㡣
+// 4Mb--16Mb主内存区的项被清零。
450 i = MAP_NR(start_mem); - // ���ڴ�����ʼλ�ô�ҳ��š�
+ // 主内存区起始位置处页面号。451 end_mem -= @@ -4565,7 +4565,7 @@ start_mem;
452 end_mem >>= 12; -// ���ڴ����е���ҳ������
+// 主内存区中的总页面数。453 while
@@ -4574,7 +4574,7 @@ lang=EN-US> while
454
mem_map[i++]=0;
-// ���ڴ���ҳ���Ӧ�ֽ�ֵ���㡣
455 }
@@ -4582,16 +4582,16 @@ lang=EN-US> }456
-// ��ʾϵͳ�ڴ���Ϣ��
+// 显示系统内存信息。
-// �����ڴ�ӳ���ֽ����� mem_map[] �е���Ϣ�Լ�ҳĿ¼��ҳ������ͳ��ϵͳ��ʹ�õ��ڴ�ҳ
+// 根据内存映射字节数组 mem_map[] 中的信息以及页目录和页表内容统计系统中使用的内存页
-// ���������ڴ������������ڴ�ҳ�������ú����� chr_drv/keyboard.S�����186�б����á�
+// 面数和主内存区中总物理内存页面数。该函数在 chr_drv/keyboard.S程序第186行被调用。
-// �������¡�Shift -+ Scroll Lock����ϼ�ʱ����ʾϵͳ�ڴ�ͳ����Ϣ��
+// 即当按下“Shift ++ Scroll Lock”组合键时会显示系统内存统计信息。
457 void show_mem(void)
@@ -4613,11 +4613,11 @@ pg_tbl;462
-// �����ڴ�ӳ���ֽ�����mem_map[]��ͳ��ϵͳ���ڴ���ҳ������total���Լ����п���ҳ��
+// 根据内存映射字节数组mem_map[],统计系统主内存区页面总数total,以及其中空闲页面
-// ��free�ͱ�������ҳ����shared������Щ��Ϣ��ʾ��
+// 数free和被共享的页面数shared。并这些信息显示。
463 PAGING_PAGES ; i++) {
lang=EN-US> if (mem_map[i] == USED) -// 1MB�����ڴ�ϵͳռ�õ�ҳ�档 +// 1MB以上内存系统占用的页面。466 @@ -4648,7 +4648,7 @@ if (!mem_map[i])
469 free++; -// ���ڴ�������ҳ��ͳ�ơ�
+// 主内存区空闲页面统计。470 @@ -4657,7 +4657,7 @@ else
471 shared += mem_map[i]-1; -// ������ҳ�������ֽ�ֵ>1����
+// 共享的页面数(字节值>1)。472 }
@@ -4673,20 +4673,20 @@ style='color:blue'>printk("%d pages shared\n\r",shar-
// ͳ�ƴ�������ҳ������ҳ������ҳĿ¼��ǰ4��ں˴���ʹ�ã�����Ϊͳ�Ʒ�Χ�����
+// 统计处理器分页管理逻辑页面数。页目录表前4项供内核代码使用,不列为统计范围,因此
-// ɨ�账����ҳĿ¼��ӵ�5�ʼ��������ѭ����������ҳĿ¼���ǰ4���������Ӧ
+// 扫描处理的页目录项从第5项开始。方法是循环处理所有页目录项(除前4个项),若对应
-// �Ķ���ҳ�����ڣ���ô��ͳ�ƶ���ҳ������ռ�õ��ڴ�ҳ�棨484�У���Ȼ��Ը�ҳ������
+// 的二级页表存在,那么先统计二级页表本身占用的内存页面(484行),然后对该页表中所
-// ��ҳ�����Ӧҳ���������ͳ�ơ�
+// 有页表项对应页面情况进行统计。
475 k = 0; -// һ������ռ��ҳ��ͳ��ֵ��
+// 一个进程占用页面统计值。476 for(i=4 ; i<1024 @@ -4696,16 +4696,16 @@ lang=EN-US> for(i=4 ; i<1024 lang=EN-US> if (1&pg_dir[i]) {
-// �����ҳĿ¼���Ӧ����ҳ����ַ���ڻ�����������ڴ��ַHIGH_MEMORY����˵����Ŀ¼��
+// (如果页目录项对应二级页表地址大于机器最高物理内存地址HIGH_MEMORY,则说明该目录项
-// �����⡣������ʾ��Ŀ¼����Ϣ������������һ��Ŀ¼���
+// 有问题。于是显示该目录项信息并继续处理下一个目录项。)
478 if (pg_dir[i]>HIGH_MEMORY) { -// Ŀ¼�����ݲ�������
+// 目录项内容不正常。479 @@ -4719,23 +4719,23 @@ style='color:blue'>pg_dir[i]);
481 continue; -// continue֮ǰ�����i++��
+// continue之前需插入i++;482 }
-// ���ҳĿ¼���Ӧ����ҳ���ġ���ַ������LOW_MEM����1MB�������һ������ռ�õ�����
+// 如果页目录项对应二级页表的“地址”大于LOW_MEM(即1MB),则把一个进程占用的物理
-// �ڴ�ҳͳ��ֵk��1����ϵͳռ�õ����������ڴ�ҳͳ��ֵfree��1��Ȼ��ȡ��Ӧҳ����ַ
+// 内存页统计值k增1,把系统占用的所有物理内存页统计值free增1。然后取对应页表地址
-// pg_tbl�����Ը�ҳ��������ҳ�������ͳ�ơ������ǰҳ������ָ����ҳ����ڲ��Ҹ�����
+// pg_tbl,并对该页表中所有页表项进行统计。如果当前页表项所指物理页面存在并且该物理
-// ҳ�桰��ַ������LOW_MEM����ô�ͽ�ҳ�����Ӧҳ������ͳ��ֵ��
+// 页面“地址”大于LOW_MEM,那么就将页表项对应页面纳入统计值。
483 @@ -4745,7 +4745,7 @@ style='color:blue'>LOW_MEM)
484 free++,k++; -// ͳ��ҳ��ռ��ҳ�档
+// 统计页表占用页面。485 @@ -4759,10 +4759,10 @@ for(j=0 ; j<1024 ; j++)
lang=EN-US> if ((pg_tbl[j]&1) && pg_tbl[j]>LOW_MEM) -// ����������ҳ���ַ���ڻ�����������ڴ��ַHIGH_MEMORY����˵����ҳ�������������⣬
+// (若该物理页面地址大于机器最高物理内存地址HIGH_MEMORY,则说明该页表项内容有问题,
-// ������ʾ��ҳ�������ݡ�����ҳ�����Ӧҳ������ͳ��ֵ����
+// 于是显示该页表项内容。否则将页表项对应页面纳入统计值。)
488
@@ -4782,24 +4782,24 @@ lang=EN-US> &n
492
-k++,free++; // ͳ��ҳ�����Ӧҳ�档
493 }
-// ��ÿ���������Կռ䳤����64MB������һ������ռ��16��Ŀ¼��������ÿͳ����16��
+// 因每个任务线性空间长度是64MB,所以一个任务占用16个目录项。因此这里每统计了16个
-// Ŀ¼��Ͱѽ��̵�����ṹռ�õ�ҳ��ͳ�ƽ���������ʱk=0���ʾ��ǰ��16��ҳĿ¼����
+// 目录项就把进程的任务结构占用的页表统计进来。若此时k=0则表示当前的16个页目录所对
-// Ӧ�Ľ�����ϵͳ�в����ڣ�û�д��������Ѿ���ֹ���� -����ʾ�˶�Ӧ���̺ź���ռ�õ�����
+// 应的进程在系统中不存在(没有创建或者已经终止)。 +在显示了对应进程号和其占用的物理
-// �ڴ�ҳͳ��ֵk��k���㣬������ͳ����һ������ռ�õ��ڴ�ҳ������
+// 内存页统计值k后,将k清零,以用于统计下一个进程占用的内存页面数。
494 @@ -4808,7 +4808,7 @@ i++;
495 if (!(i&15) && k) { -// k !=0 ��ʾ��Ӧ���̴��ڡ�
+// k !=0 表示相应进程存在。496
@@ -4831,7 +4831,7 @@ lang=EN-US> &nb
500 } // �����ʾϵͳ������ʹ�õ��ڴ�ҳ������ڴ������ܵ��ڴ�ҳ������ // 最后显示系统中正在使用的内存页面和主内存区中总的内存页面数。 501
-
/* * page.s��������ײ�ҳ�쳣�������롣ʵ�ʹ�����memory.c����ɡ� * page.s程序包含底层页异常处理代码。实际工作在memory.c中完成。 */ 12
.globl _page_fault
-# ����Ϊȫ�ֱ���������traps.c����������ҳ�쳣�������� 13 15
-xchgl %eax,(%esp) # ȡ�����뵽eax�� 16
pushl %ecx 21
-movl $0x10,%edx # ���ں����ݶ�ѡ����� 22
mov %dx,%ds 25
-movl %cr2,%edx # ȡ����ҳ���쳣�����Ե�ַ�� 26
-pushl %edx # �������Ե�ַ�ͳ�����ѹ��ջ�У���Ϊ�����ú����IJ����� 27
pushl %eax 28
-testl $1,%eax # ����ҳ���ڱ�־P��λ0�����������ȱҳ������쳣����ת�� 29
jne 1f 30
-call _do_no_page # ����ȱҳ����������mm/memory.c,365�У��� 31
jmp 2f 32
-1: call _do_wp_page # �����������������mm/memory.c,247���� 33
2: addl $8,%esp
-# ����ѹ��ջ����������������ջ�мĴ������˳��жϡ� 34
pop %fs ����13-3 linux/mm/swap.c 程序13-3 linux/mm/swap.c /* * ������Ӧ�ð�������ִ���ڴ潻���Ĵ��루���ڴ浽���̻�֮���� * 本程序应该包括绝大部分执行内存交换的代码(从内存到磁盘或反之)。 * ��91��12��18�տ�ʼ���ơ� * 从91年12月18日开始编制。 */ 11 12
-#include <string.h> // �ַ���ͷ�ļ���������һЩ�й��ڴ���ַ���������Ƕ�뺯���� 13 14
-#include <linux/mm.h> // �ڴ����ͷ�ļ�������ҳ�泤�ȣ���һЩ�ڴ��������ԭ�͡� 15
-#include <linux/sched.h> // ���ȳ���ͷ�ļ�������������ṹtask_struct������0�����ݣ�
-// ����һЩ�й��������������úͻ�ȡ��Ƕ��ʽ��ຯ������䡣 16
-#include <linux/head.h> // headͷ�ļ��������˶��������ļṹ���ͼ���ѡ��������� 17
-#include <linux/kernel.h> // �ں�ͷ�ļ�������һЩ�ں˳��ú�����ԭ�Ͷ��塣 18 // ÿ���ֽ�8λ�����1ҳ��4096�ֽڣ�����32768������λ����1������λ��Ӧ1ҳ�ڴ棬 // 每个字节8位,因此1页(4096字节)共有32768个比特位。若1个比特位对应1页内存, // �����ɹ���32768��ҳ�棬��Ӧ128MB�ڴ������� // 则最多可管理32768个页面,对应128MB内存容量。 19
#define SWAP_BITS (4096<<3) 20 // ����λ�����ꡣͨ��������ͬ��"op"���ɶ����ָ������λ���в��ԡ����û�������ֲ����� // 比特位操作宏。通过给定不同的"op",可定义对指定比特位进行测试、设置或清除三种操作。 // ����addr��ָ�����Ե�ַ��nr��ָ����ַ����ʼ�ı���λƫ��λ���ú�Ѹ�����ַaddr�� // 参数addr是指定线性地址;nr是指定地址处开始的比特位偏移位。该宏把给定地址addr处 // ��nr������λ��ֵ�����λ��־�����û�λ�ñ���λ�����ؽ�λ��־ֵ����ԭ����λֵ���� // 第nr个比特位的值放入进位标志,设置或复位该比特位并返回进位标志值(即原比特位值)。 // ��25���ϵ�һ��ָ����"op"�ַ��IJ�ͬ������γɲ�ͬ��ָ� // 第25行上第一个指令随"op"字符的不同而组合形成不同的指令: // ��"op"=
-""ʱ������ָ��bt �C ��Bit
-Test�����Բ���ԭֵ���ý�λλ�� // 当"op"=
+""时,就是指令bt – (Bit
+Test)测试并用原值设置进位位。 // ��"op"="s"ʱ������ָ��bts - ��Bit Test and Set�����ñ���λֵ����ԭֵ���ý�λλ�� // 当"op"="s"时,就是指令bts - (Bit Test and Set)设置比特位值并用原值设置进位位。 // ��"op"="r"ʱ������ָ��btr - ��Bit Test and Reset����λ����λֵ��ԭֵ���ý�λλ�� // 当"op"="r"时,就是指令btr - (Bit Test and Reset)复位比特位值并原值设置进位位。 // ���룺%0
-�C ������ֵ)��%1 -λƫ��(nr)��%2 �C��ַ(addr)��%3 �C �Ӳ����Ĵ�����ֵ(0)�� // 输入:%0
+– (返回值),%1 -位偏移(nr);%2 –基址(addr);%3 – 加操作寄存器初值(0)。 // ��Ƕ������ѻ���ַ��%2���ͱ���ƫ��ֵ��%1����ָ���ı���λֵ�ȱ��浽��λ��־CF�У� // 内嵌汇编代码把基地址(%2)和比特偏移值(%1)所指定的比特位值先保存到进位标志CF中, // Ȼ�����ã���λ���ñ���λ��ָ��adcl�Ǵ���λλ�ӣ����ڸ��ݽ�λλCF���ò�������%0���� // 然后设置(复位)该比特位。指令adcl是带进位位加,用于根据进位位CF设置操作数(%0)。 // ���CF
-= 1 �ؼĴ���ֵ = 1�����ؼĴ���ֵ = 0 �� // 如果CF
+= 1 则返回寄存器值 = 1,否则返回寄存器值 = 0 。 21
#define bitop(name,op) \ 30 // ������ݲ�ͬ��op�ַ�����3����Ƕ������ // 这里根据不同的op字符定义3个内嵌函数。 31 bitop(bit,"")
-// ������Ƕ���� bit(char * addr, unsigned int nr)�� 32 bitop(setbit,"s")
-// ������Ƕ���� setbit(char * addr, unsigned int nr)�� 33 bitop(clrbit,"r")
-// ������Ƕ���� clrbit(char * addr, unsigned int nr)�� 34 36 int
SWAP_DEV = 0;
- // �ں˳�ʼ��ʱ���õĽ����豸�š� 37 /* * ���ǴӲ���������0��task[0]����ҳ�� �C ���������ں�ҳ�档 * 我们从不交换任务0(task[0])的页面 – 即不交换内核页面。 * ����ֻ������ҳ����н��������� * 我们只对其他页面进行交换操作。 */ // ��1�������ڴ�ҳ�档��������0ĩ�ˣ�64MB������ʼ�������ڴ�ҳ�档 // 第1个虚拟内存页面。即从任务0末端(64MB)处开始的虚拟内存页面。 42
#define FIRST_VM_PAGE (TASK_SIZE>>12)
-// = 64MB/4KB = 16384�� 43
#define LAST_VM_PAGE (1024*1024)
-// = 4GB/4KB = 1048576�� 44
#define VM_PAGES (LAST_VM_PAGE - FIRST_VM_PAGE)
-// = 1032192����0��ʼ�ƣ��� 45 // ����1ҳ����ҳ�档 // 申请1页交换页面。 // ɨ����������ӳ��λͼ������Ӧλͼ������λ0���⣩������ֵΪ1�ĵ�һ������λ�ţ� // 扫描整个交换映射位图(除对应位图本身的位0以外),返回值为1的第一个比特位号, // ��Ŀǰ���еĽ���ҳ��š��������ɹ��ؽ���ҳ��ţ�����0�� // 即目前空闲的交换页面号。若操作成功则返回交换页面号,否则返回0。 46
static int get_swap_page(void) 54
return nr;
-// ����Ŀǰ���еĽ���ҳ��š� 55
return 0; 57 // �ͷŽ����豸��ָ���Ľ���ҳ�档 // 释放交换设备中指定的交换页面。 // �ڽ���λͼ������ָ��ҳ��Ŷ�Ӧ�ı���λ����1������ԭ���ñ���λ�͵���1�����ʾ // 在交换位图中设置指定页面号对应的比特位(置1)。若原来该比特位就等于1,则表示 // �����豸��ԭ����ҳ���û�б�ռ�ã�����λͼ������������ʾ������Ϣ�����ء� // 交换设备中原来该页面就没有被占用,或者位图出错。于是显示出错信息并返回。 // ����ָ������ҳ��š� // 参数指定交换页面号。 58
void swap_free(int swap_nr) 68 // ��ָ��ҳ�潻�����ڴ��С� // 把指定页面交换进内存中。 // ��ָ��ҳ����Ķ�Ӧҳ��ӽ����豸�ж��뵽��������ڴ�ҳ���С��Ľ���λͼ�ж�Ӧ // 把指定页表项的对应页面从交换设备中读入到新申请的内存页面中。修改交换位图中对应 // ����λ����λ����ͬʱ��ҳ�������ݣ�����ָ����ڴ�ҳ�棬��������Ӧ��־�� // 比特位(置位),同时修改页表项内容,让它指向该内存页面,并设置相应标志。 69
void swap_in(unsigned long *table_ptr) 73 // ���ȼ�齻��λͼ�Ͳ�����Ч�ԡ��������λͼ�����ڣ�����ָ��ҳ�����Ӧ��ҳ���Ѵ��� // 首先检查交换位图和参数有效性。如果交换位图不存在,或者指定页表项对应的页面已存在 // ���ڴ��У����߽���ҳ���Ϊ 0������ʾ������Ϣ���˳��������ѷŵ������豸��ȥ���ڴ� // 于内存中,或者交换页面号为 0,则显示警告信息并退出。对于已放到交换设备中去的内存 // ҳ�棬��Ӧҳ�����д�ŵ�Ӧ�ǽ���ҳ���*2����(swap_nr << 1)���μ�����Գ��Խ����� // 页面,相应页表项中存放的应是交换页面号*2,即(swap_nr << 1),参见下面对尝试交换函 // ��try_to_swap_out()�е�111�е�˵���� // 数try_to_swap_out()中第111行的说明。 74
if (!swap_bitmap) { 86
} // Ȼ������һҳ�����ڴ沢�ӽ����豸�ж���ҳ���Ϊswap_nr��ҳ�档�ڰ�ҳ�潻������ // 然后申请一页物理内存并从交换设备中读入页面号为swap_nr的页面。在把页面交换进来 // �Ͱѽ���λͼ�ж�Ӧ����λ��λ�������ԭ��������λ�ģ�˵���˴����ٴδӽ����� // 后,就把交换位图中对应比特位置位。如果其原本就是置位的,说明此次是再次从交换设 // ���ж�����ͬ��ҳ�棬������ʾһ�¾�����Ϣ�������ҳ����ָ�������ҳ�棬������ҳ // 备中读入相同的页面,于是显示一下警告信息。最后让页表项指向该物理页面,并设置页 // �����ġ��û��ɶ�д�ʹ��ڱ�־��Dirty��U/S��R/W��P���� // 面已修改、用户可读写和存在标志(Dirty、U/S、R/W、P)。 87
if (!(page = get_free_page())) 89
read_swap_page(swap_nr, (char *) page);
-// ��include/linux/mm.h�ж��塣 90
if (setbit(swap_bitmap,swap_nr)) 94 // ����ҳ�潻����ȥ�� // 尝试把页面交换出去。 // ��ҳ��û�б��Ĺ����ñ����ڽ����豸�У���Ϊ��Ӧҳ�滹������ֱ�Ӵ���Ӧӳ���ļ� // 若页面没有被修改过则不用保存在交换设备中,因为对应页面还可以再直接从相应映像文件 // �ж��롣���ǿ���ֱ���ͷŵ���Ӧ����ҳ�����¡����������һ������ҳ��ţ�Ȼ���ҳ�� // 中读入。于是可以直接释放掉相应物理页面了事。否则就申请一个交换页面号,然后把页面 // ������ȥ����ʱ����ҳ���Ҫ�����ڶ�Ӧҳ�����У���������Ҫ����ҳ�������λP = 0�� // 交换出去。此时交换页面号要保存在对应页表项中,并且仍需要保持页表项存在位P = 0。 // ������ҳ����ָ�롣ҳ�潻�����ͷųɹ�����1������0�� // 参数是页表项指针。页面交换或释放成功返回1,否则返回0。 95 int
try_to_swap_out(unsigned long *
@@ -2247,10 +2247,10 @@ unsigned long swap_nr; 99 // �����жϲ�������Ч�ԡ�����Ҫ������ȥ���ڴ�ҳ�沢�����ڣ������Ч�������˳��� // 首先判断参数的有效性。若需要交换出去的内存页面并不存在(或称无效),则即可退出。 // ��ҳ����ָ��������ҳ���ַ���ڷ�ҳ�������ڴ�߶�PAGING_MEMORY��15MB����Ҳ�˳��� // 若页表项指定的物理页面地址大于分页管理的内存高端PAGING_MEMORY(15MB),也退出。 100 page = *table_ptr; // ���ڴ�ҳ���ѱ��Ĺ������Ǹ�ҳ���DZ������ģ���ôΪ���������Ч�ʣ�����ҳ�治�� // 若内存页面已被修改过,但是该页面是被共享的,那么为了提高运行效率,此类页面不宜 // ��������ȥ������ֱ���˳�����������0�����������һ����ҳ��ţ�������������ҳ�� // 被交换出去,于是直接退出,函数返回0。否则就申请一交换页面号,并把它保存在页表 // ���У�Ȼ���ҳ�潻����ȥ���ͷŶ�Ӧ�����ڴ�ҳ�档 // 项中,然后把页面交换出去并释放对应物理内存页面。 105 if (PAGE_DIRTY & page) { 106
page &= 0xfffff000;
-// ȡ����ҳ���ַ�� 107
@@ -2299,28 +2299,28 @@ return 0; 109
if (!(swap_nr = get_swap_page()))
-// ���뽻��ҳ��š� 110
return 0; // ����Ҫ�������豸�е�ҳ�棬��Ӧҳ�����н���ŵ���(swap_nr << 1)�� ��2������1λ�� // 对于要到交换设备中的页面,相应页表项中将存放的是(swap_nr << 1)。 乘2(左移1位) // ��Ϊ�˿ճ�ԭ��ҳ����Ĵ���λ��P����ֻ�д���λP=0����ҳ�������ݲ�Ϊ0��ҳ��Ż� // 是为了空出原来页表项的存在位(P)。只有存在位P=0并且页表项内容不为0的页面才会 // �ڽ����豸�С� Intel�ֲ�����ȷָ������һ������Ĵ���λ P = 0ʱ����Чҳ����� // 在交换设备中。 Intel手册中明确指出,当一个表项的存在位 P = 0时(无效页表项), // ��������λ��λ31��1���ɹ�����ʹ�á�����д����ҳ����write_swap_page(nr,
+ // 所有其他位(位31—1)可供随意使用。下面写交换页函数write_swap_page(nr,
buffer) // ������Ϊll_rw_page(WRITE,SWAP_DEV,(nr),(buffer))���μ�linux/mm.h �ļ���12�С� // 被定义为ll_rw_page(WRITE,SWAP_DEV,(nr),(buffer))。参见linux/mm.h 文件第12行。 111
@@ -2330,7 +2330,7 @@ lang=EN-US> &nb
lang=EN-US>
invalidate();
//
-ˢ��CPUҳ�任���ٻ��塣 113
@@ -2347,7 +2347,7 @@ return 1; 116 } // �������ҳ��û���Ĺ�����ô�Ͳ��ý�����ȥ����ֱ���ͷż��ɡ� // 否则表明页面没有修改过。那么就不用交换出去,而直接释放即可。 117 *table_ptr = 0; /* * OK�������������һ���dz����ӵ���
-�C ���ڲ������Ժò����ٶȿ�� * OK,这个函数中有一个非常复杂的逻辑
+– 用于产生逻辑性好并且速度快的 * �����롣������Dz��Դ˲��ĵĻ�����ô������ܸ�����Щ�� * 机器码。如果我们不对此操心的话,那么事情可能更容易些。 */ // ���ڴ�ҳ��ŵ������豸�С� // 把内存页面放到交换设备中。 // �����Ե�ַ64MB��Ӧ��Ŀ¼�FIRST_VM_PAGE>>10����ʼ����������4GB���Կռ䣬���� // 从线性地址64MB对应的目录项(FIRST_VM_PAGE>>10)开始,搜索整个4GB线性空间,对有 // ЧҳĿ¼����ҳ����ҳ����ָ���������ڴ�ҳ��ִ�н����������豸��ȥ�ij��ԡ�һ���ɹ� // 效页目录二级页表的页表项指定的物理内存页面执行交换到交换设备中去的尝试。一旦成功 // �ػ���һ��ҳ�棬�ͷ���1������0���ú�������get_free_page()�б����á� // 地换出一个页面,就返回1。否则返回0。该函数会在get_free_page()中被调用。 128 int swap_out(void) 130 static int dir_entry = FIRST_VM_PAGE>>10;
-// ������1�ĵ�1��Ŀ¼�������� 131 static int
@@ -2430,13 +2430,13 @@ lang=EN-US> int pg_table;
134 // ��������ҳĿ¼�������Ҷ���ҳ�����ڵ�ҳĿ¼��pg_table���ҵ����˳�ѭ����������� // 首先搜索页目录表,查找二级页表存在的页目录项pg_table。找到则退出循环,否则调整 // ҳĿ¼������Ӧʣ�����ҳ������counter��Ȼ����������һҳĿ¼� ��ȫ�������� // 页目录项数对应剩余二级页表项数counter,然后继续检测下一页目录项。 若全部搜索完 // ��û���ҵ��ʺϵģ����ڵģ�ҳĿ¼������¼��������� // 还没有找到适合的(存在的)页目录项,就重新继续搜索。 135 while
@@ -2446,7 +2446,7 @@ lang=EN-US> while
lang=EN-US>
pg_table = pg_dir[dir_entry];
-// ҳĿ¼�����ݡ� 137
@@ -2459,13 +2459,13 @@ break; 139
counter -= 1024;
- // 1��ҳ����Ӧ1024��ҳ֡�� 140
dir_entry++;
-// ��һĿ¼� 141
@@ -2478,19 +2478,19 @@ lang=EN-US> &nb
143 } // ��ȡ�õ�ǰĿ¼���ҳ��ָ�����Ը�ҳ���е����� 1024 ��ҳ�棬��һ���ý������� // 在取得当前目录项的页表指针后,针对该页表中的所有 1024 个页面,逐一调用交换函数 // try_to_swap_out()���Խ�����ȥ��һ��ij��ҳ��ɹ������������豸�оͷ���1�������� // try_to_swap_out()尝试交换出去。一旦某个页面成功交换到交换设备中就返回1。若对所 // ��Ŀ¼�������ҳ�����ѳ���ʧ�ܣ�����ʾ�������ڴ����ꡱ�ľ��棬������0�� // 有目录项的所有页表都已尝试失败,则显示“交换内存用完”的警告,并返回0。 144 pg_table &=
0xfffff000;
-// ҳ��ָ�루��ַ���� 145 while (counter--
@@ -2499,14 +2499,14 @@ lang=EN-US> while (counter--
146
page_entry++; //
-ҳ������������ʼΪ-1���� // ����Ѿ����Դ����굱ǰҳ�������û���ܹ��ɹ��ؽ�����һ��ҳ�棬����ʱҳ�������� // 如果已经尝试处理完当前页表所有项还没有能够成功地交换出一个页面,即此时页表项索引 // ���ڵ���1024������ͬǰ���135 �C 143��ִ����ͬ�Ĵ�����ѡ��һ������ҳ�����ڵ�ҳ // 大于等于1024,则如同前面第135 – 143行执行相同的处理来选出一个二级页表存在的页 // Ŀ¼���ȡ����Ӧ����ҳ��ָ�롣 // 目录项,并取得相应二级页表指针。 147
@@ -2534,7 +2534,7 @@ lang=EN-US> &nb
153
pg_table = pg_dir[dir_entry]; // ҳĿ¼�����ݡ� 154 if
@@ -2558,7 +2558,7 @@ break; 159
-pg_table &= 0xfffff000; // ҳ��ָ�롣 160
@@ -2604,51 +2604,51 @@ lang=EN-US> */ /* * ��ȡ��(ʵ���������1��:-)����ҳ�棬�����Ϊ��ʹ�á����û�п���ҳ�棬 * 获取首个(实际上是最后1个:-)空闲页面,并标记为已使用。如果没有空闲页面, * �ͷ���0�� * 就返回0。 */ //// �����ڴ���������1ҳ��������ҳ�档 //// 在主内存区中申请1页空闲物理页面。 // ����Ѿ�û�п��������ڴ�ҳ�棬�����ִ�н���������Ȼ���ٴ�����ҳ�档 // 如果已经没有可用物理内存页面,则调用执行交换处理。然后再次申请页面。 // ���룺%1(ax=0)
-- 0��%2(LOW_MEM)�ڴ��ֽ�λͼ��������ʼλ�ã�%3(cx=
-PAGING_PAGES)�� // 输入:%1(ax=0)
+- 0;%2(LOW_MEM)内存字节位图管理的起始位置;%3(cx=
+PAGING_PAGES); // %4(edi=mem_map+PAGING_PAGES-1)�� // %4(edi=mem_map+PAGING_PAGES-1)。 // ���������%0��ax = ����ҳ����ʼ��ַ��������������ҳ���������ַ�� // 输出:返回%0(ax = 物理页面起始地址)。函数返回新页面的物理地址。 // ����%4�Ĵ���ʵ��ָ��mem_map[]�ڴ��ֽ�λͼ�����һ���ֽڡ���������λͼĩ�˿�ʼ�� // 上面%4寄存器实际指向mem_map[]内存字节位图的最后一个字节。本函数从位图末端开始向 // ǰɨ������ҳ���־��ҳ������ΪPAGING_PAGES��������ҳ����У��ڴ�λͼ�ֽ�Ϊ0���� // 前扫描所有页面标志(页面总数为PAGING_PAGES),若有页面空闲(内存位图字节为0)则 // ����ҳ���ַ��ע�⣡������ֻ��ָ�������ڴ�����һҳ��������ҳ�棬����û��ӳ�䵽ij // 返回页面地址。注意!本函数只是指出在主内存区的一页空闲物理页面,但并没有映射到某 // �����̵ĵ�ַ�ռ���ȥ������� put_page() ���������ڰ�ָ��ҳ��ӳ�䵽ij�����̵ĵ�ַ // 个进程的地址空间中去。后面的 put_page() 函数即用于把指定页面映射到某个进程的地址 // �ռ��С���Ȼ�����ں�ʹ�ñ�����������Ҫ��ʹ��
-put_page() ����ӳ�䣬��Ϊ�ں˴���� // 空间中。当然对于内核使用本函数并不需要再使用
+put_page() 进行映射,因为内核代码和 // ���ݿռ䣨16MB���Ѿ��Եȵ�ӳ�䵽������ַ�ռ䡣 // 数据空间(16MB)已经对等地映射到物理地址空间。 // ��65�ж�����һ���ֲ��Ĵ����������ñ�������������
-eax�Ĵ����У��Ա��ڸ�Ч���ʺ� // 第65行定义了一个局部寄存器变量。该变量将被保存在
+eax寄存器中,以便于高效访问和 // ���������ֶ�������ķ�����Ҫ������Ƕ�������С���ϸ˵���μ�gcc�ֲᡰ��ָ���Ĵ� // 操作。这种定义变量的方法主要用于内嵌汇编程序中。详细说明参见gcc手册“在指定寄存 // ���еı������� // 器中的变量”。 172 unsigned long get_free_page(void) 175 // �������ڴ�ӳ���ֽ�λͼ�в���ֵΪ0���ֽ��Ȼ��Ѷ�Ӧ�����ڴ�ҳ�����㡣����õ� // 首先在内存映射字节位图中查找值为0的字节项,然后把对应物理内存页面清零。如果得到 // ��ҳ���ַ����ʵ�������ڴ�����������Ѱ�ҡ����û���ҵ�����ҳ����ȥ����ִ�н����� // 的页面地址大于实际物理内存容量则重新寻找。如果没有找到空闲页面则去调用执行交换处 // ���������²��ҡ���ؿ�������ҳ���ַ�� // 理,并重新查找。最后返回空闲物理页面地址。 176 repeat: 177 __asm__("std ; repne ; scasb\n\t"
-// �÷���λ��al(0)���Ӧÿ��ҳ���(di)���ݱȽϣ� 178 "jne
1f\n\t"
-// ���û�е���0���ֽڣ�����ת����������0���� 179 "movb
$1,1(%%edi)\n\t" // 1
-=>[1+edi], ����Ӧҳ���ڴ�ӳ�����λ��1�� 180 "sall
$12,%%ecx\n\t"
-// ҳ����*4K = ���ҳ����ʼ��ַ�� 181 "addl
%2,%%ecx\n\t"
-// �ټ��ϵͶ��ڴ��ַ����ҳ��ʵ��������ʼ��ַ�� 182 "movl
-%%ecx,%%edx\n\t" // ��ҳ��ʵ����ʼ��ַ��edx�Ĵ����� 183 "movl
-$1024,%%ecx\n\t" // �Ĵ���ecx�ü���ֵ1024�� 184 "leal
-4092(%%edx),%%edi\n\t" // ��4092+edx��λ����edi����ҳ���ĩ�ˣ��� 185 "rep ;
stosl\n\t"
-// ��edi��ָ�ڴ����㣨����������ҳ�����㣩�� 186 "movl
%%edx,%%eax\n"
-// ��ҳ����ʼ��ַ��eax������ֵ���� 187 "1:" 192 if (__res >= HIGH_MEMORY) // ҳ���ַ����ʵ���ڴ�����������Ѱ�ҡ� 193
@@ -2752,7 +2752,7 @@ goto repeat; 194 if (!__res
&& swap_out())
-// ��û�õ�����ҳ����ִ�н��������������²��ҡ� 195
@@ -2760,7 +2760,7 @@ goto repeat; 196 return __res;
-// ���ؿ�������ҳ���ַ�� 197 } 198 // �ڴ潻����ʼ���� // 内存交换初始化。 199 void init_swapping(void) // blk_size[]ָ��ָ�����豸�ŵĿ��豸�������顣�ÿ�������ÿһ���Ӧһ�����豸���� // blk_size[]指向指定主设备号的块设备块数数组。该块数数组每一项对应一个子设备上所 // ӵ�е����ݿ�������1���С=1KB���� // 拥有的数据块总数(1块大小=1KB)。 201 extern int *blk_size[];
-// blk_drv/ll_rw_blk.c��49�С� 202 int swap_size,i,j; 203 // ���û�ж��彻���豸�ء���������豸û�����ÿ������飬����ʾ��Ϣ�����ء� // 如果没有定义交换设备则返回。如果交换设备没有设置块数数组,则显示信息并返回。 204 if (! 209 } // ȡָ�������豸�ŵĽ��������ݿ�����swap_size����Ϊ0�أ����ܿ���С��100�� // 取指定交换设备号的交换区数据块总数swap_size。若为0则返回,若总块数小于100块 // ����ʾ��Ϣ�������豸��̫С����Ȼ���˳��� // 则显示信息“交换设备区太小”,然后退出。 210 swap_size = 216 } // �������ݿ�����ת���ɶ�Ӧ�ɽ���ҳ����������ֵ���ܴ���SWAP_BITS���ܱ�ʾ��ҳ������ // 交换数据块总数转换成对应可交换页面总数。该值不能大于SWAP_BITS所能表示的页面数。 // ������ҳ���������ô��� 32768�� Ȼ������һҳ�����ڴ�������Ž���ҳ��λӳ������ // 即交换页面总数不得大于 32768。 然后申请一页物理内存用来存放交换页面位映射数组 // swap_bitmap������ÿ1���ش���1ҳ����ҳ�档 // swap_bitmap,其中每1比特代表1页交换页面。 217 swap_size >>=
@@ -2896,18 +2896,18 @@ return; 224 } // read_swap_page(nr, buffer)������Ϊll_rw_page(READ,SWAP_DEV,(nr),(buffer))�� // read_swap_page(nr, buffer)被定义为ll_rw_page(READ,SWAP_DEV,(nr),(buffer))。 // �μ�linux/mm.h�ļ���11�С�����ѽ����豸�ϵ�ҳ��0����swap_bitmapҳ���С� // 参见linux/mm.h文件第11行。这里把交换设备上的页面0读到swap_bitmap页面中。 // ��ҳ���ǽ���������ҳ�档���е�4086�ֽڿ�ʼ������10���ַ��Ľ����豸������ // 该页面是交换区管理页面。其中第4086字节开始处含有10个字符的交换设备特征字 // ������SWAP-SPACE������û���ҵ��������ַ�������˵������һ����Ч�Ľ����豸�� // 符串“SWAP-SPACE”。若没有找到该特征字符串,则说明不是一个有效的交换设备。 // ������ʾ��Ϣ���ͷŸ����������ҳ�沢�˳����������������ַ����ֽ����㡣 // 于是显示信息,释放刚申请的物理页面并退出函数。否则将特征字符串字节清零。 225 } // Ȼ�������Ľ���λӳ��ͼ��Ӧ��32768������λȫΪ0����λͼ������λ�ı���λ0�� // 然后检查读入的交换位映射图。应该32768个比特位全为0,若位图中有置位的比特位0, // ���ʾλͼ�����⣬������ʾ������Ϣ���ͷ�λͼռ�õ�ҳ�沢�˳�������Ϊ�˼ӿ��� // 则表示位图有问题,于是显示出错信息、释放位图占用的页面并退出函数。为了加快检查 // �ٶȣ��������Ƚ���ѡ�鿴λͼ��λ0�����һ������ҳ���Ӧ�ı���λ����swap_size // 速度,这里首先仅挑选查看位图中位0和最后一个交换页面对应的比特位,即swap_size // ����ҳ���Ӧ�ı���λ���Լ����SWAP_BITS��32768������λ�� // 交换页面对应的比特位,以及随后到SWAP_BITS(32768)比特位。 233 for (i = 0 ; i <
@@ -2998,13 +2998,13 @@ lang=EN-US> &nb
242 } // Ȼ������ϸ�ؼ��λ1��λswap_size���б���λ�Ƿ�Ϊ0�����в���0�ı���λ���ڣ� // 然后再仔细地检测位1到位swap_size所有比特位是否为0。若有不是0的比特位存在, // ���ʾλͼ�����⣬�����ͷ�λͼռ�õ�ҳ�沢�˳�������������ʾ�����豸�������� // 则表示位图有问题,于是释放位图占用的页面并退出函数。否则显示交换设备工作正常 // �Լ�����ҳ�����ͽ����ռ����ֽ����� // 以及交换页面数和交换空间总字节数。 243 j = 0; ����程序14-1 linux/include/a.out.h 5 // ��6--108���Ǹ��ļ���1���֡�����Ŀ���ļ�ִ�нṹ�Լ���ز����ĺ궨�塣 // 第6--108行是该文件第1部分。定义目标文件执行结构以及相关操作的宏定义。 // Ŀ���ļ�ͷ�ṹ���μ���������ϸ˵���� // 目标文件头结构。参见程序后的详细说明。 // ============================= // unsigned long a_magic
-// ִ���ļ�ħ����ʹ��N_MAGIC�Ⱥ���ʡ� // unsigned
a_text
-// ���볤�ȣ��ֽ����� // unsigned
a_data
-// ���ݳ��ȣ��ֽ����� // unsigned
a_bss
-// �ļ��е�δ��ʼ�����������ȣ��ֽ����� // unsigned
a_syms
-// �ļ��еķ��ű����ȣ��ֽ����� // unsigned
a_entry
-// ִ�п�ʼ��ַ�� // unsigned
-a_trsize // �����ض�λ��Ϣ���ȣ��ֽ����� // unsigned
-a_drsize // �����ض�λ��Ϣ���ȣ��ֽ����� // ----------------------------- 16 // ����ȡ����exec�ṹ�е�ħ���� // 用于取上述exec结构中的魔数。 17
#ifndef N_MAGIC /* ָ��ΪĿ���ļ����߲����Ŀ�ִ���ļ��Ĵ��� /* 指明为目标文件或者不纯的可执行文件的代号 */ // ��ʷ��������PDP-11������ϣ�ħ�����������ǰ˽�����0407��0x107������λ��ִ�г��� // 历史上最早在PDP-11计算机上,魔数(幻数)是八进制数0407(0x107)。它位于执行程序 // ͷ�ṹ�Ŀ�ʼ����ԭ����PDP-11��һ����תָ���ʾ��ת�����7���ֺ�Ĵ��뿪ʼ���� // 头结构的开始处。原本是PDP-11的一条跳转指令,表示跳转到随后7个字后的代码开始处。 // �������س���loader���Ϳ����ڰ�ִ���ļ������ڴ��ֱ����ת��ָ�ʼ�����С� ���� // 这样加载程序(loader)就可以在把执行文件放入内存后直接跳转到指令开始处运行。 现在 // ��û�г���ʹ�����ַ�����������˽�����ȴ��Ϊʶ���ļ����͵ı�־��ħ���������������� // 已没有程序使用这种方法,但这个八进制数却作为识别文件类型的标志(魔数)保留了下来。 // OMAGIC������Ϊ��Old Magic ����˼�� // OMAGIC可以认为是Old Magic 的意思。 23
#define OMAGIC 0407 24 /*
Code indicating pure executable. */ /* ָ��Ϊ����ִ���ļ��Ĵ��� */ // New Magic��1975���Ժ�ʼʹ�á��漰�����ơ� /* 指明为纯可执行文件的代号 */ // New Magic,1975年以后开始使用。涉及虚存机制。 25
#define NMAGIC 0410
@@ -1985,8 +1985,8 @@ lang=EN-US>1975���Ժ�ʼʹ�á��漰�����ơ� 26 /*
Code indicating demand-paged executable. */ /* ָ��Ϊ�����ҳ�����Ŀ�ִ���ļ� */ // ��ͷ�ṹռ���ļ���ʼ��1K�ռ䡣 /* 指明为需求分页处理的可执行文件 */ // 其头结构占用文件开始处1K空间。 27
#define ZMAGIC
@@ -1996,10 +1996,10 @@ lang=EN-US> */ // ��ͷ�ṹռ���ļ���ʼ�� 28
#endif /* not OMAGIC */ 29 // �����һ��QMAGIC����Ϊ�˽�Լ����������������ִ���ļ���ͷ�ṹ�������մ�š� 29 // 另外还有一个QMAGIC,是为了节约磁盘容量,把盘上执行文件的头结构与代码紧凑存放。 // ����������ж�ħ���ֶε���ȷ�ԡ����ħ�����ܱ�ʶ�����档 // 下面宏用于判断魔数字段的正确性。如果魔数不能被识别,则返回真。 30
#ifndef N_BADMAG // Ŀ���ļ�ͷ�ṹĩ�˵�1024�ֽ�֮��ij��ȡ� // 目标文件头结构末端到1024字节之间的长度。 40
#define _N_HDROFF(x) (SEGMENT_SIZE 41 // ��������ڲ���Ŀ���ļ������ݣ�����.oģ���ļ��Ϳ�ִ���ļ��� // 下面宏用于操作目标文件的内容,包括.o模块文件和可执行文件。 // ���벿����ʼƫ��ֵ�� // 代码部分起始偏移值。 // ����ļ��� ZMAGIC���͵ģ�����ִ���ļ�����ô���벿���Ǵ�ִ���ļ���1024�ֽ�ƫ�ƴ� // 如果文件是 ZMAGIC类型的,即是执行文件,那么代码部分是从执行文件的1024字节偏移处 // ��ʼ������ִ�д��벿�ֽ���ִ��ͷ�ṹĩ�ˣ�32�ֽڣ���ʼ�����ļ���ģ���ļ���OMAGIC // 开始;否则执行代码部分紧随执行头结构末端(32字节)开始,即文件是模块文件(OMAGIC // ���ͣ��� // 类型)。 42
#ifndef N_TXTOFF 46 // ���ݲ�����ʼƫ��ֵ���Ӵ��벿��ĩ�˿�ʼ�� // 数据部分起始偏移值。从代码部分末端开始。 47
#ifndef N_DATOFF 50 // �����ض�λ��Ϣƫ��ֵ�������ݲ���ĩ�˿�ʼ�� // 代码重定位信息偏移值。从数据部分末端开始。 51
#ifndef N_TRELOFF 54 // �����ض�λ��Ϣƫ��ֵ���Ӵ����ض�λ��Ϣĩ�˿�ʼ�� // 数据重定位信息偏移值。从代码重定位信息末端开始。 55
#ifndef N_DRELOFF 58 // ���ű�ƫ��ֵ�����������ݶ��ض�λ��ĩ�˿�ʼ�� // 符号表偏移值。从上面数据段重定位表末端开始。 59
#ifndef N_SYMOFF 62 // �ַ�����Ϣƫ��ֵ���ڷ��ű�֮�� // 字符串信息偏移值。在符号表之后。 63
#ifndef N_STROFF 66 // ����Կ�ִ���ļ������ص��ڴ棨���ռ䣩�е�λ��������в����� // 下面对可执行文件被加载到内存(逻辑空间)中的位置情况进行操作。 67 /*
Address of text segment in memory after it is loaded. */ /* ����μ��غ����ڴ��еĵ�ַ /* 代码段加载后在内存中的地址 */ 68
@@ -2175,7 +2175,7 @@ lang=EN-US> */ 69
#define N_TXTADDR(x) 0
-// �ɼ�������δӵ�ַ0��ʼִ�С� 70
#endif 74 on
machines not listed here. */ /* ���ݶμ��غ����ڴ��еĵ�ַ�� /* 数据段加载后在内存中的地址。 ע�⣬��������û���г����ƵĻ�������Ҫ���Լ������� 注意,对于下面没有列出名称的机器,需要你自己来定义 ��Ӧ�� 对应的SEGMENT_SIZE */ 75 #if
@@ -2252,8 +2252,8 @@ style='color:blue'>PAGE_SIZE 91 // ���Linux
-0.12�ں˰��ڴ�ҳ����Ϊ4KB���δ�С����Ϊ1KB�����û��ʹ������Ķ��塣 // 这里,Linux
+0.12内核把内存页定义为4KB,段大小定义为1KB。因此没有使用上面的定义。 92
#define PAGE_SIZE 4096 94 // �Զ�Ϊ��Ĵ�С����λ��ʽ���� // 以段为界的大小(进位方式)。 95
#define _N_SEGMENT_ROUND(SEGMENT_SIZE - 1)) 96 // �����β��ַ�� // 代码段尾地址。 97
#define _N_TXTENDADDR(x)+(x).a_te
98 // ���ݶο�ʼ��ַ�� // 数据段开始地址。 // ����ļ���OMAGIC���͵ģ���ô���ݶξ�ֱ�ӽ������κ��档����Ļ����ݶε�ַ�Ӵ��� // 如果文件是OMAGIC类型的,那么数据段就直接紧随代码段后面。否则的话数据段地址从代码 // �κ���α߽翪ʼ��1KB�߽���룩������ZMAGIC���͵��ļ��� // 段后面段边界开始(1KB边界对齐)。例如ZMAGIC类型的文件。 99
#ifndef N_DATADDR /* bss�μ��ص��ڴ��Ժ�ĵ�ַ /* bss段加载到内存以后的地址 */ // δ��ʼ�����ݶ�bbsλ�����ݶκ��棬�������ݶΡ� // 未初始化数据段bbs位于数据段后面,紧跟数据段。 106 #ifndef N_BSSADDR 109 // ��110��185���ǵ�2���֡���Ŀ���ļ��еķ��ű������ز�������ж����˵���� // 第110—185行是第2部分。对目标文件中的符号表项和相关操作宏进行定义和说明。 // a.outĿ���ļ��з��ű���ṹ�����ű���¼�ṹ�����μ���������ϸ˵���� // a.out目标文件中符号表项结构(符号表记录结构)。参见程序后的详细说明。 110 #ifndef N_NLIST_DECLARED 117 unsigned char n_type;
-// ���ֽڷֳ�3���ֶΣ�146--154������Ӧ�ֶε������롣 118 char n_other; 123 // ���涨��nlist�ṹ��n_type�ֶ�ֵ�ij������š� // 下面定义nlist结构中n_type字段值的常量符号。 124 #ifndef N_UNDF 145 // ����3������������nlist�ṹ��n_type�ֶε������루�˽��̱�ʾ���� // 以下3个常量定义是nlist结构中n_type字段的屏蔽码(八进程表示)。 146 #ifndef N_EXT 147 #define N_EXT 1
-// 0x01��0b0000,0001�������Ƿ����ⲿ�ģ�ȫ�ֵģ��� 148 #endif 150 #define N_TYPE 036
-// 0x1e��0b0001,1110�����ŵ�����λ�� 151 #endif 152 #ifndef N_STAB
-// STAB -- ���ű����ͣ�Symbol table types���� 153 #define N_STAB 0340
-// 0xe0��0b1110,0000���⼸���������ڷ��ŵ������� 154 #endif 163 be searched to find a definition. */ /* ���������ָ����һ�����ŵĶ�������Ϊ����һ�����ŵļ�����á����Ӹ� /* 下面的类型指明对一个符号的定义是作为对另一个符号的间接引用。紧接该 * ���ŵ������ķ��ų���Ϊδ��������á� * 符号的其他的符号呈现为未定义的引用。 * * ���ּ�������Dz��ԳƵġ���һ�����ŵ�ֵ�������������ӷ��ŵ�Ҫ�� * 这种间接引用是不对称的。另一个符号的值将被用于满足间接符号的要求, * ����֮��Ȼ�������һ������û�ж��壬����������Ѱ��һ������ * 但反之则不然。如果另一个符号没有定义,则将搜索库来寻找一个定义 */ 164 /* ����ķ����뼯��Ԫ���йء����о�����ͬ����N_SET[ATDB]�ķ��� /* 下面的符号与集合元素有关。所有具有相同名称N_SET[ATDB]的符号 �γ�һ�����ϡ��ڴ��벿������Ϊ���Ϸ����˿ռ䣬����ÿ������Ԫ�� 形成一个集合。在代码部分中已为集合分配了空间,并且每个集合元素 ��ֵ�����һ���֣�word���Ŀռ��С��ռ�ĵ�һ���ִ��м��ϵij��ȣ�����Ԫ����Ŀ���� 的值存放在一个字(word)的空间中。空间的第一个字存有集合的长度(集合元素数目)。 ���ϵĵ�ַ������һ��N_SETV�����У����������뼯��ͬ���� 集合的地址被放入一个N_SETV符号中,它的名称与集合同名。 ������δ������ⲿ���÷��棬�÷��ŵ���Ϊ��һ��N_DATAȫ�ַ��š�*/ 在满足未定义的外部引用方面,该符号的行为象一个N_DATA全局符号。*/ 176 177 /* These appear as input to LD, in a .o file. */ /* ������Щ������ .o �ļ�������Ϊ���ӳ���LD�����롣*/ /* 以下这些符号在 .o 文件中是作为链接程序LD的输入。*/ 178 #define N_SETA
0x14 /* Absolute set element
-symbol */ /* ���Լ���Ԫ�ط��� */ 179 #define N_SETT
0x16 /* Text set element symbol
-*/ /* ���뼯��Ԫ�ط��� */ 180 #define N_SETD
0x18 /* Data set element symbol
-*/ /* ���ݼ���Ԫ�ط��� */ 181 #define N_SETB 0x1A /* Bss set element symbol */ /* Bss����Ԫ�ط��� */ 182 183 /* This is output from LD. */ /* ������LD������� /* 下面是LD的输出。*/ 184 #define N_SETV 0x1C /* Pointer to set vector in data area. */
-/* ָ���������м���������*/ 185 /* ����ṹ���������ض�λ������ִ�С� /* 下面结构描述单个重定位操作的执行。 �ļ��Ĵ����ض�λ��������Щ�ṹ��һ�����飬������Щ�����ڴ��벿�֡� 文件的代码重定位部分是这些结构的一个数组,所有这些适用于代码部分。 ���Ƶأ������ض�λ�����������ݲ��֡� 类似地,数据重定位部分用于数据部分。*/ 192 // a.outĿ���ļ��д���������ض�λ��Ϣ�ṹ�� // a.out目标文件中代码和数据重定位信息结构。 193 struct relocation_info /* ������Ҫ�ض�λ�ĵ�ַ�� /* 段内需要重定位的地址。*/ 196 int r_address; /* r_symbolnum�ĺ�����r_extern�йء�*/ /* r_symbolnum的含义与r_extern有关。*/ 198 unsigned int r_symbolnum:24; /* ������ζ��ֵ��һ��pc��ص�ƫ��ֵ����������Լ���ַ�ռ� /* 非零意味着值是一个pc相关的偏移值,因而在其自己地址空间 �Լ����Ż�ָ���Ľڸı�ʱ����Ҫ���ض�λ 以及符号或指定的节改变时,需要被重定位 */ 202 /* ��Ҫ���ض�λ���ֶγ��ȣ���2�Ĵη����� /* 需要被重定位的字段长度(是2的次方)。 ��ˣ���ֵ��2���ʾ1<<2�ֽ�����*/ 因此,若值是2则表示1<<2字节数。*/ 205 unsigned int r_length:2; /* 1 => �Է��ŵ�ֵ�ض�λ�� /* 1 => 以符号的值重定位。
-r_symbolnum���ļ����ű��з��ŵ������� 0
-=> �Զεĵ�ַ�����ض�λ��
-r_symbolnum��N_TEXT��N_DATA��N_BSS��N_ABS
-(N_EXT����λҲ���Ա����ã����Ǻ�������)��*/ 212 unsigned int r_extern:1; /* û��ʹ�õ�4������λ�����ǵ�����дһ��Ŀ���ļ�ʱ /* 没有使用的4个比特位,但是当进行写一个目标文件时 ��ý����Ǹ�λ���� 最好将它们复位掉。*/ 215
- ����程序14-10 linux/include/termios.h 6
#define TTY_BUF_SIZE 1024
-// tty�еĻ��������ȡ� 7 8 /*
0x54 is just a magic number to make these relatively uniqe ('T') */ /* 0x54ֻ��һ��ħ����Ŀ����Ϊ��ʹ��Щ����Ψһ /* 0x54只是一个魔数,目的是为了使这些常数唯一('T') */ 9 // tty�豸��ioctl���������ioctl����������ڵ�λ���С� // tty设备的ioctl调用命令集。ioctl将命令编码在低位字中。 // ��������TC[*]�ĺ�����tty������� // 下面名称TC[*]的含义是tty控制命令。 // ȡ��Ӧ�ն�termios�ṹ�е���Ϣ(�μ�tcgetattr())�� // 取相应终端termios结构中的信息(参见tcgetattr())。 10
#define TCGETS
0x5401 // ������Ӧ�ն�termios�ṹ�е���Ϣ(�μ�tcsetattr()��TCSANOW)�� // 设置相应终端termios结构中的信息(参见tcsetattr(),TCSANOW)。 11
#define TCSETS
0x5402 // �������ն�termios����Ϣ֮ǰ����Ҫ�ȵȴ�����������������ݴ�����(�ľ�)�������IJ��� // 在设置终端termios的信息之前,需要先等待输出队列中所有数据处理完(耗尽)。对于修改参数 // ��Ӱ����������������Ҫʹ��������ʽ(�μ�tcsetattr()��TCSADRAINѡ��)�� // 会影响输出的情况,就需要使用这种形式(参见tcsetattr(),TCSADRAIN选项)。 12
#define TCSETSW
0x5403 // ������termios����Ϣ֮ǰ����Ҫ�ȵȴ�����������������ݴ����꣬����ˢ��(���)������С� // 在设置termios的信息之前,需要先等待输出队列中所有数据处理完,并且刷新(清空)输入队列。 // �����ã��μ�tcsetattr()��TCSAFLUSHѡ��� // 再设置(参见tcsetattr(),TCSAFLUSH选项)。 13
#define TCSETSF
0x5404 // ȡ��Ӧ�ն�termio�ṹ�е���Ϣ(�μ�tcgetattr())�� // 取相应终端termio结构中的信息(参见tcgetattr())。 14
#define TCGETA
0x5405 // ������Ӧ�ն�termio�ṹ�е���Ϣ(�μ�tcsetattr()��TCSANOWѡ��)�� // 设置相应终端termio结构中的信息(参见tcsetattr(),TCSANOW选项)。 15
#define TCSETA
0x5406 // �������ն�termio����Ϣ֮ǰ����Ҫ�ȵȴ�����������������ݴ�����(�ľ�)�������IJ��� // 在设置终端termio的信息之前,需要先等待输出队列中所有数据处理完(耗尽)。对于修改参数 // ��Ӱ����������������Ҫʹ��������ʽ(�μ�tcsetattr()��TCSADRAINѡ��)�� // 会影响输出的情况,就需要使用这种形式(参见tcsetattr(),TCSADRAIN选项)。 16
#define TCSETAW
0x5407 // ������termio����Ϣ֮ǰ����Ҫ�ȵȴ�����������������ݴ����꣬����ˢ��(���)������С� // 在设置termio的信息之前,需要先等待输出队列中所有数据处理完,并且刷新(清空)输入队列。 // �����ã��μ�tcsetattr()��TCSAFLUSHѡ��� // 再设置(参见tcsetattr(),TCSAFLUSH选项)。 17
#define TCSETAF
0x5408 // �ȴ�������д������(��)��������ֵ��0������һ��break���μ�tcsendbreak()��tcdrain()���� // 等待输出队列处理完毕(空),若参数值是0,则发送一个break(参见tcsendbreak(),tcdrain())。 18
#define TCSBRK
0x5409 // ��ʼ/ֹͣ���ơ��������ֵ��0�����������������1�������¿������������������2�� // 开始/停止控制。如果参数值是0,则挂起输出;如果是1,则重新开启挂起的输出;如果是2, // ��������룻�����3�������¿�����������루�μ�tcflow()���� // 则挂起输入;如果是3,则重新开启挂起的输入(参见tcflow())。 19
#define TCXONC
0x540A // ˢ����д�������û���ͻ����յ���û�ж����ݡ����������0����ˢ��(���)������У���� // 刷新已写输出但还没发送或已收但还没有读数据。如果参数是0,则刷新(清空)输入队列;如果 // ��1����ˢ��������У������2����ˢ�������������У��μ�tcflush()���� // 是1,则刷新输出队列;如果是2,则刷新输入和输出队列(参见tcflush())。 20
#define TCFLSH
0x540B // ��������TIOC[*]�ĺ�����tty �������������� // 下面名称TIOC[*]的含义是tty 输入输出控制命令。 // �����ն˴�����·ר��ģʽ�� // 设置终端串行线路专用模式。 21
#define TIOCEXCL
0x540C // ��λ�ն˴�����·ר��ģʽ�� // 复位终端串行线路专用模式。 22
#define TIOCNXCL
0x540D // ����ttyΪ�����նˡ�(TIOCNOTTY - ��ֹttyΪ�����ն�)�� // 设置tty为控制终端。(TIOCNOTTY - 禁止tty为控制终端)。 23
#define TIOCSCTTY
0x540E // ��ȡָ���ն��豸���̵���id���μ�tcgetpgrp()���ó������������� // 读取指定终端设备进程的组id,参见tcgetpgrp()。该常数符号名称是"Terminal IO Control // Get PGRP "����д����ȡǰ̨������ID�� // Get PGRP "的缩写。读取前台进程组ID。 24
#define TIOCGPGRP
0x540F // ����ָ���ն��豸���̵���id(�μ�tcsetpgrp())�� // 设置指定终端设备进程的组id(参见tcsetpgrp())。 25
#define TIOCSPGRP
0x5410 // ������������л�δ�ͳ����ַ����� // 返回输出队列中还未送出的字符数。 26
#define TIOCOUTQ
0x5411 // ģ���ն����롣��������һ��ָ���ַ���ָ����Ϊ����������װ���ַ������ն��ϼ���ġ��û� // 模拟终端输入。该命令以一个指向字符的指针作为参数,并假装该字符是在终端上键入的。用户 // �����ڸÿ����ն��Ͼ��г����û�Ȩ����ж�����Ȩ�ޡ� // 必须在该控制终端上具有超级用户权限或具有读许可权限。 27
#define TIOCSTI
0x5412 // ��ȡ�ն��豸���ڴ�С��Ϣ���μ�winsize�ṹ���� // 读取终端设备窗口大小信息(参见winsize结构)。 28
#define TIOCGWINSZ
0x5413 // �����ն��豸���ڴ�С��Ϣ���μ�winsize�ṹ���� // 设置终端设备窗口大小信息(参见winsize结构)。 29
#define TIOCSWINSZ
0x5414 // ����modem״̬�������ߵĵ�ǰ״̬����λ��־�����μ�����185-196�У��� // 返回modem状态控制引线的当前状态比特位标志集(参见下面185-196行)。 30
#define TIOCMGET
0x5415 // ���õ���modem״̬�������ߵ�״̬(true��false)(Individual control line Set)�� // 设置单个modem状态控制引线的状态(true或false)(Individual control line Set)。 31
#define TIOCMBIS
0x5416 // ��λ����modem״̬�������ߵ�״̬(Individual control line clear)�� // 复位单个modem状态控制引线的状态(Individual control line clear)。 32
#define TIOCMBIC
0x5417 // ����modem״̬���ߵ�״̬�����ijһ����λ��λ����modem��Ӧ��״̬���߽���Ϊ��Ч�� // 设置modem状态引线的状态。如果某一比特位置位,则modem对应的状态引线将置为有效。 33
#define TIOCMSET
0x5418 // ��ȡ�����ز�����־(1 - ������0 - �ر�)�� // 读取软件载波检测标志(1 - 开启;0 - 关闭)。 // ���ڱ������ӵ��ն˻������豸�������ز���־�ǿ����ģ�����ʹ��modem��·���ն˻��豸 // 对于本地连接的终端或其他设备,软件载波标志是开启的,对于使用modem线路的终端或设备 // ���ǹرյġ�Ϊ����ʹ�������� ioctl���ã�tty��·Ӧ������ O_NDELAY
-��ʽ�ģ����� // 则是关闭的。为了能使用这两个 ioctl调用,tty线路应该是以 O_NDELAY
+方式打开的,这样 // open()�Ͳ���ȴ��ز��� // open()就不会等待载波。 34
#define TIOCGSOFTCAR
0x5419 // ���������ز�����־(1 - ������0 - �ر�)�� // 设置软件载波检测标志(1 - 开启;0 - 关闭)。 35
#define TIOCSSOFTCAR 0x541A // ������������л�δȡ���ַ�����Ŀ�� // 返回输入队列中还未取走字符的数目。 36 #define FIONREAD
@@ -2112,75 +2112,75 @@ lang=EN-US> #define FIONREAD &
38 // ���ڴ�С(Window
-size)���Խṹ���ڴ��ڻ����п����ڻ�����Ļ��Ӧ�ó��� // 窗口大小(Window
+size)属性结构。在窗口环境中可用于基于屏幕的应用程序。 // ioctls�е�TIOCGWINSZ��TIOCSWINSZ��������ȡ��������Щ��Ϣ�� // ioctls中的TIOCGWINSZ和TIOCSWINSZ可用来读取或设置这些信息。 39
struct winsize { 40
-unsigned short ws_row; // �����ַ������� 41
-unsigned short ws_col; // �����ַ������� 42
-unsigned short ws_xpixel; // ���ڿ��ȣ�����ֵ�� 43
-unsigned short ws_ypixel; // ���ڸ߶ȣ�����ֵ�� 44 }; 45 // AT&TϵͳV��termio�ṹ�� // AT&T系统V的termio结构。 46
#define NCC 8
-// termio�ṹ�п����ַ�����ij��ȡ� 47
struct termio { 48
unsigned short c_iflag; /* input mode flags
-*/ // ����ģʽ��־�� 49
unsigned short c_oflag; /* output mode
-flags */ // ���ģʽ��־�� 50
unsigned short c_cflag; /* control mode
-flags */ // ����ģʽ��־�� 51
unsigned short c_lflag; /* local mode flags
-*/ // ����ģʽ��־�� 52
unsigned char c_line; /* line
-discipline */ // ��·��̣����ʣ��� 53
unsigned char c_cc[NCC];
-/* control characters */ // �����ַ����顣 54 }; 55 // POSIX��termios�ṹ�� // POSIX的termios结构。 56
#define NCCS 17
-// termios�ṹ�п����ַ����鳤�ȡ� 57
struct termios { 58
tcflag_t c_iflag;
/* input mode flags */
-// ����ģʽ��־�� 59
tcflag_t c_oflag;
/* output mode flags */
-// ���ģʽ��־�� 60
tcflag_t c_cflag;
- /* control mode flags */ // ����ģʽ��־�� 61
tcflag_t c_lflag;
/* local mode flags */
-// ����ģʽ��־�� 62
cc_t c_line;
/* line discipline */
-// ��·��̣����ʣ��� 63
cc_t c_cc[NCCS];
/* control characters */
-// �����ַ����顣 64 }; 65 // �����ǿ����ַ�����c_cc[]���������ֵ���������ʼֵ������include/linux/tty.h�С� // 以下是控制字符数组c_cc[]中项的索引值。该数组初始值定义在include/linux/tty.h中。 // ������Ը�����������е�ֵ�����������_POSIX_VDISABLE��\0������ô������ijһ��ֵ // 程序可以更改这个数组中的值。如果定义了_POSIX_VDISABLE(\0),那么当数组某一项值 // ���� _POSIX_VDISABLE
-��ֵʱ����ʾ��ֹʹ����������Ӧ�������ַ��� // 等于 _POSIX_VDISABLE
+的值时,表示禁止使用数组中相应的特殊字符。 66 /* c_cc characters */ /* c_cc�����е��ַ� /* c_cc characters */ /* c_cc数组中的字符 */ 67
#define VINTR 0
- // c_cc[VINTR] = INTR (^C)��\003���ж��ַ��� 68
#define VQUIT 1 //
-c_cc[VQUIT] = QUIT (^\)��\034���˳��ַ��� 69
#define VERASE 2 //
-c_cc[VERASE] = ERASE (^H)��\177�������ַ��� 70
#define VKILL 3 //
-c_cc[VKILL] = KILL (^U)��\025����ֹ�ַ���ɾ���У��� 71
#define VEOF 4 //
-c_cc[VEOF] = EOF (^D)��\004���ļ������ַ��� 72
#define VTIME 5 //
-c_cc[VTIME] = TIME (\0)��\0�� ��ʱ��ֵ(�μ�����˵��)�� 73
#define VMIN 6 //
-c_cc[VMIN] = MIN (\1)��\1�� ��ʱ��ֵ�� 74
#define VSWTC 7 //
-c_cc[VSWTC] = SWTC (\0)��\0�� �����ַ��� 75
#define VSTART
8 // c_cc[VSTART] =
-START (^Q)��\021����ʼ�ַ��� 76
#define VSTOP
9 //
-c_cc[VSTOP] = STOP (^S)��\023��ֹͣ�ַ��� 77
#define VSUSP 10 //
-c_cc[VSUSP] = SUSP (^Z)��\032�������ַ��� 78
#define VEOL 11 //
-c_cc[VEOL] = EOL (\0)��\0�� �н����ַ��� 79
#define VREPRINT 12 //
-c_cc[VREPRINT] = REPRINT (^R)��\022������ʾ�ַ��� 80
#define VDISCARD 13 //
-c_cc[VDISCARD] = DISCARD (^O)��\017�������ַ��� 81
#define VWERASE 14 //
-c_cc[VWERASE] = WERASE (^W)��\027�����ʲ����ַ��� 82
#define VLNEXT 15 //
-c_cc[VLNEXT] = LNEXT (^V)��\026����һ���ַ��� 83
#define VEOL2 16 //
-c_cc[VEOL2] = EOL2 (\0)��\0�� �н����ַ�2�� 84 // termios�ṹ����ģʽ�ֶ�c_iflag���ֱ�־�ķ��ų����� // termios结构输入模式字段c_iflag各种标志的符号常数。 85 /* c_iflag bits */
-/* c_iflag����λ */ 86
#define IGNBRK
-0000001 // ����ʱ����BREAK������ 87
#define BRKINT 0000002
-// ��BREAKʱ����SIGINT�źš� 88
#define IGNPAR 0000004
-// ������żУ��������ַ��� 89
#define PARMRK 0000010
-// �����żУ����� 90
#define INPCK 0000020
-// ����������żУ�顣 91
#define ISTRIP 0000040
-// �����ַ���8λ�� 92
#define INLCR 0000100
-// ����ʱ�����з�NLӳ��ɻس���CR�� 93
#define IGNCR 0000200
-// ���Իس���CR�� 94
#define ICRNL 0000400
-// ������ʱ���س���CRӳ��ɻ��з�NL�� 95
#define IUCLC 0001000
-// ������ʱ����д�ַ�ת����Сд�ַ��� 96
#define IXON 0002000
-// ������ʼ/ֹͣ��XON/XOFF��������ơ� 97
#define IXANY 0004000
-// �����κ��ַ���������� 98
#define IXOFF 0010000
-// ������ʼ/ֹͣ��XON/XOFF��������ơ� 99
#define IMAXBEL 0020000
-// ���������ʱ���塣 100 // termios�ṹ�����ģʽ�ֶ�c_oflag���ֱ�־�ķ��ų����� // termios结构中输出模式字段c_oflag各种标志的符号常数。 101 /* c_oflag bits */
-/* c_oflag����λ */ 102 #define OPOST
-0000001 // ִ����������� 103 #define OLCUC
-0000002 // �����ʱ��Сд�ַ�ת���ɴ�д�ַ��� 104 #define ONLCR
-0000004 // �����ʱ�����з�NLӳ��ɻس�-���з�CR-NL�� 105 #define OCRNL
-0000010 // �����ʱ���س���CRӳ��ɻ��з�NL�� 106 #define ONOCR
-0000020 // ��0�в�����س���CR�� 107 #define ONLRET 0000040
-// ���з�NLִ�лس����Ĺ��ܡ� 108 #define OFILL
-0000100 // �ӳ�ʱʹ������ַ�����ʹ��ʱ���ӳ١� 109 #define OFDEL
-0000200 // ����ַ���ASCII��DEL�����δ���ã���ʹ��ASCII
-NULL�� 110 #define NLDLY
-0000400 // ѡ�����ӳ١� 111 #define NL0
-0000000 // �����ӳ�����0�� 112 #define NL1
-0000400 // �����ӳ�����1�� 113 #define CRDLY
-0003000 // ѡ��س��ӳ١� 114 #define CR0
-0000000 // �س��ӳ�����0�� 115 #define CR1
-0001000 // �س��ӳ�����1�� 116 #define CR2
-0002000 // �س��ӳ�����2�� 117 #define CR3
-0003000 // �س��ӳ�����3�� 118 #define TABDLY 0014000
-// ѡ��ˮƽ�Ʊ��ӳ١� 119 #define TAB0
-0000000 // ˮƽ�Ʊ��ӳ�����0�� 120 #define TAB1
-0004000 // ˮƽ�Ʊ��ӳ�����1�� 121 #define TAB2
-0010000 // ˮƽ�Ʊ��ӳ�����2�� 122 #define TAB3
-0014000 // ˮƽ�Ʊ��ӳ�����3�� 123 #define XTABS
-0014000 // ���Ʊ���TAB���ɿո�ֵ��ʾ�ո����� 124 #define BSDLY
-0020000 // ѡ���˸��ӳ١� 125 #define BS0
-0000000 // �˸��ӳ�����0�� 126 #define BS1
-0020000 // �˸��ӳ�����1�� 127 #define VTDLY
-0040000 // �����Ʊ��ӳ١� 128 #define VT0
-0000000 // �����Ʊ��ӳ�����0�� 129 #define VT1
-0040000 // �����Ʊ��ӳ�����1�� 130 #define FFDLY
-0040000 // ѡ��ҳ�ӳ١� 131 #define FF0
-0000000 // ��ҳ�ӳ�����0�� 132 #define FF1
-0040000 // ��ҳ�ӳ�����1�� 133 // termios�ṹ�п���ģʽ��־�ֶ�c_cflag��־�ķ��ų�����8���������� // termios结构中控制模式标志字段c_cflag标志的符号常数(8进制数)。 134 /* c_cflag bit meaning */ /* c_cflag
-����λ�ĺ��� */ 135 #define CBAUD
-0000017 // ��������λ�����롣 136 #define B0
0000000 /* hang up */
-/* �Ҷ���· */ 137 #define B50
-0000001 // ������ 50�� 138 #define B75
-0000002 // ������ 75�� 139 #define B110
-0000003 // ������ 110�� 140 #define B134
-0000004 // ������ 134�� 141 #define B150
-0000005 // ������ 150�� 142 #define B200
-0000006 // ������ 200�� 143 #define B300
-0000007 // ������ 300�� 144 #define B600
-0000010 // ������ 600�� 145 #define B1200
-0000011 // ������ 1200�� 146 #define B1800
-0000012 // ������ 1800�� 147 #define B2400
-0000013 // ������ 2400�� 148 #define B4800
-0000014 // ������ 4800�� 149 #define B9600
-0000015 // ������ 9600�� 150 #define B19200 0000016
-// ������ 19200�� 151 #define B38400 0000017
-// ������ 38400�� 152 #define EXTA B19200
-// ��չ������A�� 153 #define EXTB B38400
-// ��չ������B�� 154 #define CSIZE
-0000060 // �ַ�λ���������롣 155 #define CS5
-0000000 // ÿ�ַ�5����λ�� 156 #define CS6
-0000020 // ÿ�ַ�6����λ�� 157 #define CS7
-0000040 // ÿ�ַ�7����λ�� 158 #define CS8
-0000060 // ÿ�ַ�8����λ�� 159 #define CSTOPB 0000100
-// ��������ֹͣλ��������1���� 160 #define CREAD
-0000200 // �������ա� 161 #define PARENB 0000400
-// �������ʱ������żλ������ʱ������żУ�顣 162 #define PARODD 0001000
-// ����/����У������У�顣 163 #define HUPCL
-0002000 // �����̹رպ�Ҷϡ� 164 #define CLOCAL 0004000
-// ���Ե��ƽ����(modem)������·�� 165 #define CIBAUD
03600000 /* input baud rate
-(not used) */ /* ���벨����(δʹ�� /* 输入波特率(未使用) */ 166 #define CRTSCTS
-020000000000 /* flow control */ /* ������/* flow control */ /* 流控制 */ 167 // termios�ṹ�б���ģʽ��־�ֶ�c_lflag�ķ��ų����� // termios结构中本地模式标志字段c_lflag的符号常数。 168 /* c_lflag bits */
-/* c_lflag����λ */ 169 #define ISIG
-0000001 // ���յ��ַ�INTR��QUIT��SUSP��DSUSP��������Ӧ���źš� 170 #define ICANON 0000002
-// �����淶ģʽ����ģʽ���� 171 #define XCASE
-0000004 // ��������ICANON�����ն��Ǵ�д�ַ��ġ� 172 #define ECHO
-0000010 // ���������ַ��� 173 #define ECHOE
-0000020 // ��������ICANON����ERASE/WERASE������ǰһ�ַ�/���ʡ� 174 #define ECHOK
-0000040 // ��������ICANON����KILL�ַ���������ǰ�С� 175 #define ECHONL 0000100
-// ��������ICANON����ʹECHOû�п���Ҳ����NL�ַ��� 176 #define NOFLSH 0000200
-// ������SIGINT��SIGQUIT�ź�ʱ��ˢ������������У���
-// ����SIGSUSP�ź�ʱ��ˢ��������С� 177 #define TOSTOP 0000400
-// ����SIGTTOU�źŵ���̨���̵Ľ����飬�ú�̨������ͼд
-// �Լ��Ŀ����նˡ� 178 #define ECHOCTL 0001000
- // ��������ECHO�����TAB��NL��START��STOP�����若设置了ECHO,则除TAB、NL、START和STOP以外的ASCII
-// �����źŽ������Գ���^Xʽ����Xֵ�ǿ��Ʒ�+0x40�� 179 #define ECHOPRT 0002000
-// ��������ICANON��IECHO�����ַ��ڲ���ʱ����ʾ�� 180 #define ECHOKE 0004000
-// ��������ICANON����KILLͨ���������ϵ������ַ������ԡ� 181 #define FLUSHO 0010000
-// �����ˢ�¡�ͨ������DISCARD�ַ����ñ�־����ת�� 182 #define PENDIN 0040000
-// ����һ���ַ��Ƕ�ʱ����������е������ַ��������ԡ� 183 #define IEXTEN 0100000
-// ����ʵ��ʱ��������봦���� 184 185 /* modem lines */ /* modem��·�źŷ��ų��� /* modem lines */ /* modem线路信号符号常数 */ 186 #define TIOCM_LE
-0x001 // ��·����(Line
-Enable)�� 187 #define TIOCM_DTR
-0x002 // �����ն˾���(Data
-Terminal Ready)�� 188 #define TIOCM_RTS
-0x004 // ������(Request
-to Send)�� 189 #define TIOCM_ST
-0x008 // �������ݷ���(Serial
-Transfer)��[??] 190 #define TIOCM_SR
-0x010 // �������ݽ���(Serial
-Receive)��[??] 191 #define TIOCM_CTS
-0x020 // �������(Clear
-To Send)�� 192 #define TIOCM_CAR
-0x040 // �ز����(Carrier
-Detect)�� 193 #define TIOCM_RNG
-0x080 // ����ָʾ(Ring
-indicate)�� 194 #define TIOCM_DSR
-0x100 // �����豸����(Data
-Set Ready)�� 195 #define TIOCM_CD
@@ -2851,146 +2851,146 @@ lang=EN-US> #define TIOCM_RI &
lang=EN-US> 198 /* tcflow() and TCXONC use these */ /* tcflow()��TCXONCʹ����Щ���ų��� */ 199 #define TCOOFF
-0 // �����������"Terminal Control Output OFF"������� 200 #define TCOON
-1 // ���������������� 201 #define TCIOFF
-2 // ϵͳ����һ��STOP�ַ���ʹ�豸ֹͣ��ϵͳ�������ݡ� 202 #define TCION
-3 // ϵͳ����һ��START�ַ���ʹ�豸��ʼ��ϵͳ�������ݡ� 203 204 /* tcflush() and TCFLSH use these */ /* tcflush()��TCFLSHʹ����Щ���ų��� */ 205 #define TCIFLUSH
-0 // ����յ������ݵ������� 206 #define TCOFLUSH
-1 // ����д�����ݵ������͡� 207 #define TCIOFLUSH
-2 // ����յ������ݵ�����������д�����ݵ������͡� 208 209 /* tcsetattr uses these */
-/* tcsetattr()ʹ����Щ���ų��� */ 210 #define TCSANOW
-0 // �ı����������� 211 #define TCSADRAIN
-1 // �ı���������д�����������֮������ 212 #define TCSAFLUSH
-2 // �ı���������д�����������֮���������н��յ���
-// ��û�ж�ȡ�����ݱ�����֮������ 213 // ������Щ�����ڱ��뻷���ĺ�����libc.a��ʵ�֣��ں���û�С��ں�����ʵ���У���Щ����ͨ�� // 以下这些函数在编译环境的函数库libc.a中实现,内核中没有。在函数库实现中,这些函数通过 // ����ϵͳ����ioctl()��ʵ�֡��й�ioctl()ϵͳ���ã���μ�fs/ioctl.c���� // 调用系统调用ioctl()来实现。有关ioctl()系统调用,请参见fs/ioctl.c程序。 // ����termios_p��ָtermios�ṹ�еĽ��ղ����ʡ� // 返回termios_p所指termios结构中的接收波特率。 214 extern speed_t cfgetispeed(struct termios
*termios_p); // ����termios_p��ָtermios�ṹ�еķ��Ͳ����ʡ� // 返回termios_p所指termios结构中的发送波特率。 215 extern speed_t cfgetospeed(struct termios
*termios_p); // ��termios_p��ָtermios�ṹ�еĽ��ղ���������Ϊspeed�� // 将termios_p所指termios结构中的接收波特率设置为speed。 216 extern int cfsetispeed(struct
termios *termios_p, speed_t speed); // ��termios_p��ָtermios�ṹ�еķ��Ͳ���������Ϊspeed�� // 将termios_p所指termios结构中的发送波特率设置为speed。 217 extern int cfsetospeed(struct
termios *termios_p, speed_t speed); // �ȴ�fildes��ָ������д������ݱ����ͳ�ȥ�� // 等待fildes所指对象已写输出数据被传送出去。 218 extern int tcdrain(int
fildes); // ����/����fildes��ָ�������ݵĽ��պͷ��͡� // 挂起/重启fildes所指对象数据的接收和发送。 219 extern int tcflow(int
fildes, int action); // ����fildesָ������������д����û�����Լ��������յ�����û�ж�ȡ�����ݡ� // 丢弃fildes指定对象所有已写但还没传送以及所有已收到但还没有读取的数据。 220 extern int tcflush(int
fildes, int queue_selector); // ��ȡ����fildes��Ӧ����IJ����������䱣����termios_p��ָ�ĵط��� // 获取与句柄fildes对应对象的参数,并将其保存在termios_p所指的地方。 221 extern int tcgetattr(int
fildes, struct termios *termios_p); // ����ն�ʹ���첽�������ݴ��䣬����һ��ʱ������������һϵ��0ֵ����λ�� // 如果终端使用异步串行数据传输,则在一定时间内连续传输一系列0值比特位。 222 extern int tcsendbreak(int
fildes, int duration); // ʹ��termios�ṹָ��termios_p��ָ�����ݣ��������ն���صIJ����� // 使用termios结构指针termios_p所指的数据,设置与终端相关的参数。 223 extern int tcsetattr(int
diff --git a/Book-Lite/code-list/html/P14-11.html b/Book-Lite/code-list/html/P14-11.html
index e516e1c..3500e10 100644
--- a/Book-Lite/code-list/html/P14-11.html
+++ b/Book-Lite/code-list/html/P14-11.html
@@ -10,24 +10,24 @@
{font-family:Wingdings;
panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
- {font-family:����;
+ {font-family:宋体;
panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
- {font-family:����;
+ {font-family:黑体;
panose-1:2 1 6 9 6 1 1 1 1 1;}
@font-face
- {font-family:����;
+ {font-family:黑体;
panose-1:2 1 6 9 6 1 1 1 1 1;}
@font-face
- {font-family:����С���μ���;}
+ {font-family:方正小标宋简体;}
@font-face
- {font-family:"\@����";
+ {font-family:"\@黑体";
panose-1:2 1 6 9 6 1 1 1 1 1;}
@font-face
- {font-family:"\@����";
+ {font-family:"\@宋体";
panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
- {font-family:"\@����С���μ���";}
+ {font-family:"\@方正小标宋简体";}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
@@ -35,9 +35,9 @@
text-align:justify;
text-justify:inter-ideograph;
font-size:10.5pt;
- font-family:����;}
+ font-family:宋体;}
h1
- {mso-style-link:"���� 1 Char";
+ {mso-style-link:"标题 1 Char";
margin-top:17.0pt;
margin-right:0cm;
margin-bottom:16.5pt;
@@ -49,7 +49,7 @@ h1
font-family:"Times New Roman","serif";
font-weight:bold;}
h2
- {mso-style-link:"���� 2 Char";
+ {mso-style-link:"标题 2 Char";
margin-top:13.0pt;
margin-right:0cm;
margin-bottom:13.0pt;
@@ -62,7 +62,7 @@ h2
font-family:"Arial","sans-serif";
font-weight:bold;}
h3
- {mso-style-link:"���� 3 Char";
+ {mso-style-link:"标题 3 Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -73,7 +73,7 @@ h3
font-family:"Arial","sans-serif";
font-weight:bold;}
h4
- {mso-style-link:"���� 4 Char";
+ {mso-style-link:"标题 4 Char";
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
@@ -87,7 +87,7 @@ h4
font-family:"Arial","sans-serif";
font-weight:bold;}
h5
- {mso-style-link:"���� 5 Char";
+ {mso-style-link:"标题 5 Char";
margin-top:14.0pt;
margin-right:0cm;
margin-bottom:14.5pt;
@@ -101,7 +101,7 @@ h5
font-family:"Times New Roman","serif";
font-weight:bold;}
h6
- {mso-style-link:"���� 6 Char";
+ {mso-style-link:"标题 6 Char";
margin-top:12.0pt;
margin-right:0cm;
margin-bottom:3.2pt;
@@ -115,7 +115,7 @@ h6
font-family:"Arial","sans-serif";
font-weight:bold;}
p.MsoHeading7, li.MsoHeading7, div.MsoHeading7
- {mso-style-link:"���� 7 Char";
+ {mso-style-link:"标题 7 Char";
margin-top:12.0pt;
margin-right:0cm;
margin-bottom:3.2pt;
@@ -129,7 +129,7 @@ p.MsoHeading7, li.MsoHeading7, div.MsoHeading7
font-family:"Times New Roman","serif";
font-weight:bold;}
p.MsoHeading8, li.MsoHeading8, div.MsoHeading8
- {mso-style-link:"���� 8 Char";
+ {mso-style-link:"标题 8 Char";
margin-top:12.0pt;
margin-right:0cm;
margin-bottom:3.2pt;
@@ -142,7 +142,7 @@ p.MsoHeading8, li.MsoHeading8, div.MsoHeading8
font-size:12.0pt;
font-family:"Arial","sans-serif";}
p.MsoHeading9, li.MsoHeading9, div.MsoHeading9
- {mso-style-link:"���� 9 Char";
+ {mso-style-link:"标题 9 Char";
margin-top:12.0pt;
margin-right:0cm;
margin-bottom:3.2pt;
@@ -330,20 +330,20 @@ p.MsoToc9, li.MsoToc9, div.MsoToc9
font-size:9.0pt;
font-family:"Times New Roman","serif";}
p.MsoFootnoteText, li.MsoFootnoteText, div.MsoFootnoteText
- {mso-style-link:"��ע�ı� Char";
+ {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";
+ {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";
+ {mso-style-link:"页眉 Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
@@ -353,14 +353,14 @@ p.MsoHeader, li.MsoHeader, div.MsoHeader
font-size:9.0pt;
font-family:"Times New Roman","serif";}
p.MsoFooter, li.MsoFooter, div.MsoFooter
- {mso-style-link:"ҳ�� Char";
+ {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";
+ {mso-style-name:"索引标题\,索引类目\,索引类目1\,索引类目2";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -411,7 +411,7 @@ p.MsoList4, li.MsoList4, div.MsoList4
font-size:10.0pt;
font-family:"Times New Roman","serif";}
p.MsoDate, li.MsoDate, div.MsoDate
- {mso-style-link:"���� Char";
+ {mso-style-link:"日期 Char";
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
@@ -422,36 +422,36 @@ p.MsoDate, li.MsoDate, div.MsoDate
font-size:10.0pt;
font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
- {mso-style-name:"������\,��������";
+ {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";
+ {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";
+ {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:����;}
+ {font-family:黑体;}
p.MsoCommentSubject, li.MsoCommentSubject, div.MsoCommentSubject
- {mso-style-link:"��ע���� Char";
+ {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";
+ {mso-style-link:"批注框文本 Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -459,7 +459,7 @@ p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
font-size:9.0pt;
font-family:"Times New Roman","serif";}
p.1, li.1, div.1
- {mso-style-name:��ʽ1;
+ {mso-style-name:样式1;
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
@@ -470,30 +470,30 @@ p.1, li.1, div.1
font-size:10.0pt;
font-family:"Times New Roman","serif";}
p.a, li.a, div.a
- {mso-style-name:�������;
- mso-style-link:"������� Char";
+ {mso-style-name:代码程序;
+ mso-style-link:"代码程序 Char";
margin:0cm;
margin-bottom:.0001pt;
font-size:10.0pt;
- font-family:����;}
+ font-family:宋体;}
span.Char
- {mso-style-name:"������� Char";
- mso-style-link:�������;
- font-family:����;}
+ {mso-style-name:"代码程序 Char";
+ mso-style-link:代码程序;
+ font-family:宋体;}
p.a0, li.a0, div.a0
- {mso-style-name:ͼ˵��;
- mso-style-link:"ͼ˵�� Char";
+ {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:����;}
+ {mso-style-name:"图说明 Char";
+ mso-style-link:图说明;
+ font-family:宋体;}
p.0, li.0, div.0
- {mso-style-name:����0;
+ {mso-style-name:封面0;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
@@ -501,7 +501,7 @@ p.0, li.0, div.0
font-family:"Times New Roman","serif";
font-weight:bold;}
p.10, li.10, div.10
- {mso-style-name:����1;
+ {mso-style-name:封面1;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
@@ -509,25 +509,25 @@ p.10, li.10, div.10
font-family:"Times New Roman","serif";
font-weight:bold;}
p.11, li.11, div.11
- {mso-style-name:�DZ���1;
+ {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-family:宋体;
font-weight:bold;}
p.a1, li.a1, div.a1
- {mso-style-name:�ı�����;
+ {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";
+ {mso-style-name:"图中文字3 Char Char";
+ mso-style-link:"图中文字3 Char Char Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
@@ -535,11 +535,11 @@ p.3CharChar, li.3CharChar, div.3CharChar
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:����;}
+ {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;
+ {mso-style-name:邮件post;
margin:0cm;
margin-bottom:.0001pt;
text-align:right;
@@ -547,7 +547,7 @@ p.post, li.post, div.post
font-size:10.0pt;
font-family:"Times New Roman","serif";}
p.3, li.3, div.3
- {mso-style-name:ͼ������3;
+ {mso-style-name:图中字体3;
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -555,44 +555,44 @@ p.3, li.3, div.3
font-size:10.0pt;
font-family:"Times New Roman","serif";}
span.3CharChar1CharCharChar
- {mso-style-name:"ͼ������3 Char Char1 Char Char Char";
- font-family:����;}
+ {mso-style-name:"图中文字3 Char Char1 Char Char Char";
+ font-family:宋体;}
span.3CharChar1CharChar
- {mso-style-name:"ͼ������3 Char Char1 Char Char";
- font-family:����;}
+ {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";
+ {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:����;}
+ {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";
+ {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:����;}
+ {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";
+ {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��;
+ {mso-style-name:图中文字小5号;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
@@ -600,28 +600,28 @@ p.5, li.5, div.5
font-size:9.0pt;
font-family:"Times New Roman","serif";}
p.2, li.2, div.2
- {mso-style-name:�������2;
+ {mso-style-name:代码程序2;
margin:0cm;
margin-bottom:.0001pt;
font-size:10.0pt;
- font-family:����;}
+ font-family:宋体;}
p.20, li.20, div.20
- {mso-style-name:ͼ˵��2;
+ {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;
+ {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";
+ {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;
@@ -629,18 +629,18 @@ p.3CharCharCharCharChar, li.3CharCharCharCharChar, div.3CharCharCharCharChar
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:����;}
+ {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:ͼ����;
+ {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";
+ {mso-style-name:"样式 标题 1 + 居中1";
margin-right:0cm;
margin-left:0cm;
text-align:center;
@@ -649,32 +649,32 @@ p.110, li.110, div.110
font-family:"Times New Roman","serif";
font-weight:bold;}
span.1Char
- {mso-style-name:"���� 1 Char";
- mso-style-link:"���� 1";
+ {mso-style-name:"标题 1 Char";
+ mso-style-link:"标题 1";
font-weight:bold;}
p.22, li.22, div.22
- {mso-style-name:"��ʽ �б� 2 + ����";
+ {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;
+ {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��;
+ {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;
+ {mso-style-name:样式11;
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
@@ -685,20 +685,20 @@ p.111, li.111, div.111
font-size:10.0pt;
font-family:"Times New Roman","serif";}
p.12, li.12, div.12
- {mso-style-name:�������1;
+ {mso-style-name:代码程序1;
margin:0cm;
margin-bottom:.0001pt;
font-size:10.0pt;
- font-family:����;}
+ font-family:宋体;}
p.13, li.13, div.13
- {mso-style-name:ͼ˵��1;
+ {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;
+ {mso-style-name:封面01;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
@@ -706,7 +706,7 @@ p.01, li.01, div.01
font-family:"Times New Roman","serif";
font-weight:bold;}
p.112, li.112, div.112
- {mso-style-name:����11;
+ {mso-style-name:封面11;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
@@ -714,24 +714,24 @@ p.112, li.112, div.112
font-family:"Times New Roman","serif";
font-weight:bold;}
p.113, li.113, div.113
- {mso-style-name:�DZ���11;
+ {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-family:宋体;
font-weight:bold;}
p.14, li.14, div.14
- {mso-style-name:�ı�����1;
+ {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";
+ {mso-style-name:"图中文字3 Char1";
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
@@ -739,7 +739,7 @@ p.3Char1, li.3Char1, div.3Char1
font-size:8.0pt;
font-family:"Times New Roman","serif";}
p.post1, li.post1, div.post1
- {mso-style-name:�ʼ�post1;
+ {mso-style-name:邮件post1;
margin:0cm;
margin-bottom:.0001pt;
text-align:right;
@@ -747,7 +747,7 @@ p.post1, li.post1, div.post1
font-size:10.0pt;
font-family:"Times New Roman","serif";}
p.31, li.31, div.31
- {mso-style-name:ͼ������31;
+ {mso-style-name:图中字体31;
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -755,35 +755,35 @@ p.31, li.31, div.31
font-size:10.0pt;
font-family:"Times New Roman","serif";}
p.5Char1, li.5Char1, div.5Char1
- {mso-style-name:"ͼ������5�� Char1";
+ {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";
+ {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";
+ {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;
+ {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;
+ {mso-style-name:样式12;
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
@@ -794,7 +794,7 @@ p.120, li.120, div.120
font-size:10.0pt;
font-family:"Times New Roman","serif";}
p.02, li.02, div.02
- {mso-style-name:����02;
+ {mso-style-name:封面02;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
@@ -802,7 +802,7 @@ p.02, li.02, div.02
font-family:"Times New Roman","serif";
font-weight:bold;}
p.121, li.121, div.121
- {mso-style-name:����12;
+ {mso-style-name:封面12;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
@@ -810,17 +810,17 @@ p.121, li.121, div.121
font-family:"Times New Roman","serif";
font-weight:bold;}
p.122, li.122, div.122
- {mso-style-name:�DZ���12;
+ {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-family:宋体;
font-weight:bold;}
p.3Char2, li.3Char2, div.3Char2
- {mso-style-name:"ͼ������3 Char2";
+ {mso-style-name:"图中文字3 Char2";
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
@@ -828,7 +828,7 @@ p.3Char2, li.3Char2, div.3Char2
font-size:8.0pt;
font-family:"Times New Roman","serif";}
p.post2, li.post2, div.post2
- {mso-style-name:�ʼ�post2;
+ {mso-style-name:邮件post2;
margin:0cm;
margin-bottom:.0001pt;
text-align:right;
@@ -836,7 +836,7 @@ p.post2, li.post2, div.post2
font-size:10.0pt;
font-family:"Times New Roman","serif";}
p.32, li.32, div.32
- {mso-style-name:ͼ������32;
+ {mso-style-name:图中字体32;
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -844,21 +844,21 @@ p.32, li.32, div.32
font-size:10.0pt;
font-family:"Times New Roman","serif";}
p.5Char2, li.5Char2, div.5Char2
- {mso-style-name:"ͼ������С5�� Char2";
+ {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;
+ {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";
+ {mso-style-name:"图中文字3 Char Char Char Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
@@ -866,7 +866,7 @@ p.3CharCharCharChar, li.3CharCharCharChar, div.3CharCharCharChar
font-size:8.0pt;
font-family:"Times New Roman","serif";}
p.130, li.130, div.130
- {mso-style-name:��ʽ13;
+ {mso-style-name:样式13;
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
@@ -877,13 +877,13 @@ p.130, li.130, div.130
font-size:10.0pt;
font-family:"Times New Roman","serif";}
p.30, li.30, div.30
- {mso-style-name:�������3;
+ {mso-style-name:代码程序3;
margin:0cm;
margin-bottom:.0001pt;
font-size:10.0pt;
- font-family:����;}
+ font-family:宋体;}
p.03, li.03, div.03
- {mso-style-name:����03;
+ {mso-style-name:封面03;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
@@ -891,7 +891,7 @@ p.03, li.03, div.03
font-family:"Times New Roman","serif";
font-weight:bold;}
p.131, li.131, div.131
- {mso-style-name:����13;
+ {mso-style-name:封面13;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
@@ -899,24 +899,24 @@ p.131, li.131, div.131
font-family:"Times New Roman","serif";
font-weight:bold;}
p.132, li.132, div.132
- {mso-style-name:�DZ���13;
+ {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-family:宋体;
font-weight:bold;}
p.33, li.33, div.33
- {mso-style-name:�ı�����3;
+ {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";
+ {mso-style-name:"图中文字3 Char3";
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
@@ -924,7 +924,7 @@ p.3Char3, li.3Char3, div.3Char3
font-size:8.0pt;
font-family:"Times New Roman","serif";}
p.post3, li.post3, div.post3
- {mso-style-name:�ʼ�post3;
+ {mso-style-name:邮件post3;
margin:0cm;
margin-bottom:.0001pt;
text-align:right;
@@ -932,7 +932,7 @@ p.post3, li.post3, div.post3
font-size:10.0pt;
font-family:"Times New Roman","serif";}
p.330, li.330, div.330
- {mso-style-name:ͼ������33;
+ {mso-style-name:图中字体33;
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -940,36 +940,36 @@ p.330, li.330, div.330
font-size:10.0pt;
font-family:"Times New Roman","serif";}
p.5Char20, li.5Char20, div.5Char20
- {mso-style-name:"ͼ������5�� Char2";
+ {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";
+ {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";
+ {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;
+ {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";
+ {mso-style-name:"图中文字3 Char";
+ mso-style-link:"图中文字3 Char Char5";
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
@@ -977,11 +977,11 @@ p.3Char, li.3Char, div.3Char
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:����;}
+ {mso-style-name:"图中文字3 Char Char5";
+ mso-style-link:"图中文字3 Char";
+ font-family:宋体;}
p.54, li.54, div.54
- {mso-style-name:ͼ������С5����;
+ {mso-style-name:图中文字小5紧密;
margin:0cm;
margin-bottom:.0001pt;
line-height:9.0pt;
@@ -989,7 +989,7 @@ p.54, li.54, div.54
font-size:9.0pt;
font-family:"Times New Roman","serif";}
p.24, li.24, div.24
- {mso-style-name:����2�Ŵ�����;
+ {mso-style-name:居中2号粗宋体;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
@@ -997,7 +997,7 @@ p.24, li.24, div.24
font-family:"Times New Roman","serif";
font-weight:bold;}
p.15, li.15, div.15
- {mso-style-name:"��ʽ ���� 1 + ����";
+ {mso-style-name:"样式 标题 1 + 居中";
margin-top:17.0pt;
margin-right:0cm;
margin-bottom:16.5pt;
@@ -1008,7 +1008,7 @@ p.15, li.15, div.15
font-family:"Times New Roman","serif";
font-weight:bold;}
p.25, li.25, div.25
- {mso-style-name:"��ʽ ���� 2 + �о�\: �����о�";
+ {mso-style-name:"样式 标题 2 + 行距\: 单倍行距";
margin-top:13.0pt;
margin-right:0cm;
margin-bottom:13.0pt;
@@ -1021,33 +1021,33 @@ p.25, li.25, div.25
font-family:"Arial","sans-serif";
font-weight:bold;}
span.2Char
- {mso-style-name:"���� 2 Char";
- mso-style-link:"���� 2";
+ {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;
+ {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;
+ {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;
+ {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;
+ {mso-style-name:列表4;
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
@@ -1058,166 +1058,166 @@ p.40, li.40, div.40
font-size:10.0pt;
font-family:"Times New Roman","serif";}
p.41, li.41, div.41
- {mso-style-name:��4;
+ {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;
+ {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;
+ {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;
+ {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;
+ {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;
+ {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;
+ {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;
+ {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;
+ {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;
+ {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;
+ {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;
+ {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;
+ {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;
+ {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;
+ {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;
+ {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;
+ {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;
+ {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;
+ {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;
+ {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";
+ {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:����;}
+ {mso-style-name:"图说明13 Char";
+ mso-style-link:图说明13;
+ font-family:宋体;}
p.134, li.134, div.134
- {mso-style-name:�б�13;
+ {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;
+ {mso-style-name:附录2;
margin-top:13.0pt;
margin-right:0cm;
margin-bottom:13.0pt;
@@ -1229,7 +1229,7 @@ p.26, li.26, div.26
font-family:"Arial","sans-serif";
font-weight:bold;}
p.36, li.36, div.36
- {mso-style-name:��¼3;
+ {mso-style-name:附录3;
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -1239,12 +1239,12 @@ p.36, li.36, div.36
font-family:"Arial","sans-serif";
font-weight:bold;}
span.3Char0
- {mso-style-name:"���� 3 Char";
- mso-style-link:"���� 3";
+ {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;
+ {mso-style-name:附录1;
margin-top:17.0pt;
margin-right:0cm;
margin-bottom:16.5pt;
@@ -1255,14 +1255,14 @@ p.16, li.16, div.16
font-family:"Times New Roman","serif";
font-weight:bold;}
p.17, li.17, div.17
- {mso-style-name:��¼��1;
+ {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;
+ {mso-style-name:附录4;
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -1272,19 +1272,19 @@ p.42, li.42, div.42
font-family:"Arial","sans-serif";
font-weight:bold;}
span.4Char
- {mso-style-name:"���� 4 Char";
- mso-style-link:"���� 4";
+ {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:��¼ͼ˵��;
+ {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;
+ {mso-style-name:序标题2;
margin-top:13.0pt;
margin-right:0cm;
margin-bottom:13.0pt;
@@ -1297,7 +1297,7 @@ p.27, li.27, div.27
font-family:"Arial","sans-serif";
font-weight:bold;}
p.a4, li.a4, div.a4
- {mso-style-name:�����;
+ {mso-style-name:参考标题;
margin-top:7.8pt;
margin-right:0cm;
margin-bottom:7.8pt;
@@ -1308,7 +1308,7 @@ p.a4, li.a4, div.a4
font-family:"Times New Roman","serif";
font-weight:bold;}
p.18, li.18, div.18
- {mso-style-name:��������1;
+ {mso-style-name:索引标题1;
margin-top:7.8pt;
margin-right:0cm;
margin-bottom:7.8pt;
@@ -1319,7 +1319,7 @@ p.18, li.18, div.18
font-family:"Times New Roman","serif";
font-weight:bold;}
p.19, li.19, div.19
- {mso-style-name:�б�1;
+ {mso-style-name:列表1;
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
@@ -1330,7 +1330,7 @@ p.19, li.19, div.19
font-size:10.0pt;
font-family:"Times New Roman","serif";}
p.1a, li.1a, div.1a
- {mso-style-name:��1;
+ {mso-style-name:表1;
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
@@ -1341,14 +1341,14 @@ p.1a, li.1a, div.1a
font-size:10.0pt;
font-family:"Times New Roman","serif";}
p.37, li.37, div.37
- {mso-style-name:ͼ˵��3;
+ {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��;
+ {mso-style-name:表中字体6号;
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -1357,8 +1357,8 @@ p.62, li.62, div.62
font-size:7.5pt;
font-family:"Times New Roman","serif";}
p.a5, li.a5, div.a5
- {mso-style-name:���Ĵ���;
- mso-style-link:"���Ĵ��� Char";
+ {mso-style-name:正文代码;
+ mso-style-link:"正文代码 Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -1366,11 +1366,11 @@ p.a5, li.a5, div.a5
font-size:10.0pt;
font-family:"Times New Roman","serif";}
span.Char1
- {mso-style-name:"���Ĵ��� Char";
- mso-style-link:���Ĵ���;
- font-family:����;}
+ {mso-style-name:"正文代码 Char";
+ mso-style-link:正文代码;
+ font-family:宋体;}
p.43, li.43, div.43
- {mso-style-name:"��ʽ ���� 4 +";
+ {mso-style-name:"样式 标题 4 +";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -1380,7 +1380,7 @@ p.43, li.43, div.43
font-family:"Arial","sans-serif";
font-weight:bold;}
p.140, li.140, div.140
- {mso-style-name:��14;
+ {mso-style-name:表14;
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
@@ -1391,8 +1391,8 @@ p.140, li.140, div.140
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";
+ {mso-style-name:图说明14;
+ mso-style-link:"图说明14 Char";
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
@@ -1403,11 +1403,11 @@ p.141, li.141, div.141
font-size:10.0pt;
font-family:"Times New Roman","serif";}
span.14Char
- {mso-style-name:"ͼ˵��14 Char";
- mso-style-link:ͼ˵��14;
- font-family:����;}
+ {mso-style-name:"图说明14 Char";
+ mso-style-link:图说明14;
+ font-family:宋体;}
p.a6, li.a6, div.a6
- {mso-style-name:�ļ�Ŀ¼��;
+ {mso-style-name:文件目录表;
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -1415,8 +1415,8 @@ p.a6, li.a6, div.a6
font-size:10.0pt;
font-family:"Times New Roman","serif";}
p.a7, li.a7, div.a7
- {mso-style-name:"��ʽ ���� +";
- mso-style-link:"��ʽ ���� + Char";
+ {mso-style-name:"样式 正文 +";
+ mso-style-link:"样式 正文 + Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -1424,39 +1424,39 @@ p.a7, li.a7, div.a7
font-size:10.0pt;
font-family:"Times New Roman","serif";}
span.Char2
- {mso-style-name:"��ʽ ���� + Char";
- mso-style-link:"��ʽ ���� +";
+ {mso-style-name:"样式 正文 + Char";
+ mso-style-link:"样式 正文 +";
font-family:"Times New Roman","serif";}
p.a8, li.a8, div.a8
- {mso-style-name:������ע;
+ {mso-style-name:表格题注;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:10.5pt;
- font-family:����;}
+ font-family:宋体;}
p.a9, li.a9, div.a9
- {mso-style-name:�б���ע;
+ {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:ͼ��ע;
+ {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:������ע;
+ {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:��������;
+ {mso-style-name:框中文字;
margin-top:0cm;
margin-right:21.0pt;
margin-bottom:0cm;
@@ -1469,7 +1469,7 @@ p.ac, li.ac, div.ac
font-size:9.0pt;
font-family:"Times New Roman","serif";}
p.125, li.125, div.125
- {mso-style-name:"��ʽ ���� 1 + ����2";
+ {mso-style-name:"样式 标题 1 + 居中2";
margin-top:17.0pt;
margin-right:0cm;
margin-bottom:16.5pt;
@@ -1480,14 +1480,14 @@ p.125, li.125, div.125
font-family:"Times New Roman","serif";
font-weight:bold;}
p.ad, li.ad, div.ad
- {mso-style-name:"��ʽ ��ע + ���� ��� ����";
+ {mso-style-name:"样式 题注 + 宋体 五号 居中";
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:10.5pt;
- font-family:����;}
+ font-family:黑体;}
p.1b, li.1b, div.1b
- {mso-style-name:�����1;
+ {mso-style-name:序标题1;
margin-top:17.0pt;
margin-right:0cm;
margin-bottom:16.5pt;
@@ -1498,16 +1498,16 @@ p.1b, li.1b, div.1b
font-family:"Times New Roman","serif";
font-weight:bold;}
p.38, li.38, div.38
- {mso-style-name:�����3;
+ {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:����С���μ���;}
+ font-family:方正小标宋简体;}
p.63, li.63, div.63
- {mso-style-name:��������6��;
+ {mso-style-name:表中文字6号;
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -1515,7 +1515,7 @@ p.63, li.63, div.63
font-size:7.5pt;
font-family:"Times New Roman","serif";}
p.64, li.64, div.64
- {mso-style-name:ͼ������6�������;
+ {mso-style-name:图中文字6号左对齐;
margin:0cm;
margin-bottom:.0001pt;
line-height:10.0pt;
@@ -1523,8 +1523,8 @@ p.64, li.64, div.64
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";
+ {mso-style-name:图中文字6号;
+ mso-style-link:"图中文字6号 Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
@@ -1533,11 +1533,11 @@ p.65, li.65, div.65
font-size:7.5pt;
font-family:"Times New Roman","serif";}
span.6Char
- {mso-style-name:"ͼ������6�� Char";
- mso-style-link:ͼ������6��;
- font-family:����;}
+ {mso-style-name:"图中文字6号 Char";
+ mso-style-link:图中文字6号;
+ font-family:宋体;}
p.ae, li.ae, div.ae
- {mso-style-name:ͼ��;
+ {mso-style-name:图标;
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -1545,7 +1545,7 @@ p.ae, li.ae, div.ae
font-size:10.0pt;
font-family:"Times New Roman","serif";}
p.28, li.28, div.28
- {mso-style-name:ͼ��2;
+ {mso-style-name:图标2;
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -1553,7 +1553,7 @@ p.28, li.28, div.28
font-size:10.0pt;
font-family:"Times New Roman","serif";}
p.af, li.af, div.af
- {mso-style-name:ϰ�����;
+ {mso-style-name:习题标题;
margin-top:6.0pt;
margin-right:0cm;
margin-bottom:0cm;
@@ -1563,9 +1563,9 @@ p.af, li.af, div.af
text-justify:inter-ideograph;
page-break-after:avoid;
font-size:14.0pt;
- font-family:����;}
+ font-family:黑体;}
p.1c, li.1c, div.1c
- {mso-style-name:���ֱ��1;
+ {mso-style-name:部分编号1;
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -1573,14 +1573,14 @@ p.1c, li.1c, div.1c
font-size:16.0pt;
font-family:"Times New Roman","serif";}
p.af0, li.af0, div.af0
- {mso-style-name:������;
+ {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:"��ʽ ��ע + ����";
+ {mso-style-name:"样式 题注 + 居中";
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
@@ -1629,7 +1629,7 @@ p.RightText, li.RightText, div.RightText
font-size:9.0pt;
font-family:"Times New Roman","serif";}
p.af2, li.af2, div.af2
- {mso-style-name:����������;
+ {mso-style-name:表中文字小五;
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -1637,8 +1637,8 @@ p.af2, li.af2, div.af2
font-size:9.0pt;
font-family:"Times New Roman","serif";}
p.af3, li.af3, div.af3
- {mso-style-name:�ؼ���;
- mso-style-link:"�ؼ��� Char";
+ {mso-style-name:关键词;
+ mso-style-link:"关键词 Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -1646,12 +1646,12 @@ p.af3, li.af3, div.af3
font-size:10.0pt;
font-family:"Times New Roman","serif";}
span.Char3
- {mso-style-name:"�ؼ��� Char";
- mso-style-link:�ؼ���;
- font-family:����;}
+ {mso-style-name:"关键词 Char";
+ mso-style-link:关键词;
+ font-family:宋体;}
p.af4, li.af4, div.af4
- {mso-style-name:���;
- mso-style-link:"��� Char";
+ {mso-style-name:文件名;
+ mso-style-link:"文件名 Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -1659,12 +1659,12 @@ p.af4, li.af4, div.af4
font-size:10.0pt;
font-family:"Times New Roman","serif";}
span.Char4
- {mso-style-name:"��� Char";
- mso-style-link:���;
- font-family:����;}
+ {mso-style-name:"文件名 Char";
+ mso-style-link:文件名;
+ font-family:宋体;}
p.af5, li.af5, div.af5
- {mso-style-name:ѡ��;
- mso-style-link:"ѡ�� Char";
+ {mso-style-name:选项;
+ mso-style-link:"选项 Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -1672,12 +1672,12 @@ p.af5, li.af5, div.af5
font-size:10.0pt;
font-family:"Times New Roman","serif";}
span.Char5
- {mso-style-name:"ѡ�� Char";
- mso-style-link:ѡ��;
- font-family:����;}
+ {mso-style-name:"选项 Char";
+ mso-style-link:选项;
+ font-family:宋体;}
p.af6, li.af6, div.af6
- {mso-style-name:������;
- mso-style-link:"������ Char";
+ {mso-style-name:命令行;
+ mso-style-link:"命令行 Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -1685,12 +1685,12 @@ p.af6, li.af6, div.af6
font-size:10.0pt;
font-family:"Times New Roman","serif";}
span.Char6
- {mso-style-name:"������ Char";
- mso-style-link:������;
- font-family:����;}
+ {mso-style-name:"命令行 Char";
+ mso-style-link:命令行;
+ font-family:宋体;}
p.af7, li.af7, div.af7
- {mso-style-name:������;
- mso-style-link:"������ Char";
+ {mso-style-name:函数名;
+ mso-style-link:"函数名 Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -1698,12 +1698,12 @@ p.af7, li.af7, div.af7
font-size:10.0pt;
font-family:"Times New Roman","serif";}
span.Char7
- {mso-style-name:"������ Char";
- mso-style-link:������;
- font-family:����;}
+ {mso-style-name:"函数名 Char";
+ mso-style-link:函数名;
+ font-family:宋体;}
p.af8, li.af8, div.af8
- {mso-style-name:�Ĵ�����;
- mso-style-link:"�Ĵ����� Char";
+ {mso-style-name:寄存器名;
+ mso-style-link:"寄存器名 Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -1711,12 +1711,12 @@ p.af8, li.af8, div.af8
font-size:10.0pt;
font-family:"Times New Roman","serif";}
span.Char8
- {mso-style-name:"�Ĵ����� Char";
- mso-style-link:�Ĵ�����;
+ {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";
+ {mso-style-name:变量名;
+ mso-style-link:"变量名 Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -1724,83 +1724,83 @@ p.af9, li.af9, div.af9
font-size:10.0pt;
font-family:"Times New Roman","serif";}
span.Char9
- {mso-style-name:"������ Char";
- mso-style-link:������;
- font-family:����;}
+ {mso-style-name:"变量名 Char";
+ mso-style-link:变量名;
+ font-family:宋体;}
p.58, li.58, div.58
- {mso-style-name:ͼ������С5����;
+ {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�ſ���;
+ {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 ����";
+ {mso-style-name:"样式 代码程序 + 左侧\: 9\.26 厘米";
margin:0cm;
margin-bottom:.0001pt;
layout-grid-mode:char;
font-size:10.0pt;
- font-family:����;}
+ font-family:宋体;}
span.5Char4
- {mso-style-name:"���� 5 Char";
- mso-style-link:"���� 5";
+ {mso-style-name:"标题 5 Char";
+ mso-style-link:"标题 5";
font-weight:bold;}
span.6Char0
- {mso-style-name:"���� 6 Char";
- mso-style-link:"���� 6";
+ {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";
+ {mso-style-name:"标题 7 Char";
+ mso-style-link:"标题 7";
font-weight:bold;}
span.8Char
- {mso-style-name:"���� 8 Char";
- mso-style-link:"���� 8";
+ {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";
+ {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:����;}
+ {mso-style-name:"脚注文本 Char";
+ mso-style-link:脚注文本;
+ font-family:宋体;}
span.Charb
- {mso-style-name:"��ע���� Char";
- mso-style-link:��ע����;
- font-family:����;}
+ {mso-style-name:"批注文字 Char";
+ mso-style-link:批注文字;
+ font-family:宋体;}
span.Charc
- {mso-style-name:"ҳü Char";
- mso-style-link:ҳü;
- font-family:����;}
+ {mso-style-name:"页眉 Char";
+ mso-style-link:页眉;
+ font-family:宋体;}
span.Chard
- {mso-style-name:"ҳ�� Char";
- mso-style-link:ҳ��;
- font-family:����;}
+ {mso-style-name:"页脚 Char";
+ mso-style-link:页脚;
+ font-family:宋体;}
span.Chare
- {mso-style-name:"���� Char";
- mso-style-link:����;
- font-family:����;}
+ {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:����;}
+ {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:����;
+ {mso-style-name:"批注主题 Char";
+ mso-style-link:批注主题;
+ font-family:宋体;
font-weight:bold;}
span.Charf0
- {mso-style-name:"��ע���ı� Char";
- mso-style-link:��ע���ı�;
- font-family:����;}
+ {mso-style-name:"批注框文本 Char";
+ mso-style-link:批注框文本;
+ font-family:宋体;}
.MsoChpDefault
{font-size:10.0pt;}
/* Page Definitions */
@@ -1824,7 +1824,7 @@ ul
����程序14-11 linux/include/time.h 6
typedef long time_t;
-// ��GMT 1970��1��1����ҹ0ʱ��ʼ�Ƶ�ʱ�䣨�룩�� 7
#endif 18
#define CLOCKS_PER_SEC 100
-// ϵͳʱ�ӵδ�Ƶ�ʣ�100HZ�� 19 20
typedef long clock_t;
-// �ӽ��̿�ʼִ�м����ϵͳ������ʱ�ӵδ����� 21 23
int tm_sec;
-// ���� [0��59]�� 24
int tm_min;
-// ������ [ 0��59]�� 25
int tm_hour;
-// Сʱ�� [0��59]�� 26
int tm_mday;
-// 1���µ����� [0��31]�� 27
int tm_mon;
-// 1�����·� [0��11]�� 28
int tm_year;
-// ��1900�꿪ʼ�������� 29
int tm_wday;
-// 1�����е�ij�� [0��6]�������� =0���� 30
int tm_yday;
-// 1���е�ij�� [0��365]�� 31
int tm_isdst;
-// ����ʱ��־������ - ʹ�ã�0 - û��ʹ�ã����� - ��Ч�� 32 }; 33 // �ж��Ƿ�Ϊ����ĺꡣ // 判断是否为闰年的宏。 34
#define __isleap(year) \ 36
// �������й�ʱ������ĺ���ԭ�͡� // 以下是有关时间操作的函数原型。 // ȷ��������ʹ��ʱ�䡣���س������ô�����ʱ�䣨�δ������Ľ���ֵ�� // 确定处理器使用时间。返回程序所用处理器时间(滴答数)的近似值。 37 clock_t clock(void); // ȡʱ�䣨�����������ش�1970.1.1:0:0:0��ʼ����������Ϊ����ʱ�䣩�� // 取时间(秒数)。返回从1970.1.1:0:0:0开始的秒数(称为日历时间)。 38 time_t time(time_t * tp); // ����ʱ������ʱ��time2��time1֮�侭���������� // 计算时间差。返回时间time2与time1之间经过的秒数。 39
double difftime(time_t time2, time_t
time1); // ��tm�ṹ��ʾ��ʱ��ת��������ʱ�䡣 // 将tm结构表示的时间转换成日历时间。 40 time_t mktime(struct
@@ -1980,47 +1980,47 @@ style='color:blue'>time_t mktime
41 // ��tm�ṹ��ʾ��ʱ��ת����һ���ַ���������ָ��ô���ָ�롣 // 将tm结构表示的时间转换成一个字符串。返回指向该串的指针。 42
char * asctime(const struct tm * tp); // ������ʱ��ת����һ���ַ�����ʽ���硰Wed Jun 30 21:49:08:1993\n���� // 将日历时间转换成一个字符串形式,如“Wed Jun 30 21:49:08:1993\n”。 43
char * ctime(const time_t * tp); // ������ʱ��ת����tm�ṹ��ʾ��UTCʱ�䣨UTC - ����ʱ�����Universal Time Code���� // 将日历时间转换成tm结构表示的UTC时间(UTC - 世界时间代码Universal Time Code)。 44
struct tm * gmtime(const
time_t *tp); // ������ʱ��ת����tm�ṹ��ʾ��ָ��ʱ��(Time Zone)��ʱ�䡣 // 将日历时间转换成tm结构表示的指定时区(Time Zone)的时间。 45
struct tm *localtime(const
time_t * tp); // ��tm�ṹ��ʾ��ʱ�����ø�ʽ�ַ���fmtת�������Ϊsmax���ַ�����������洢��s�С� // 将tm结构表示的时间利用格式字符串fmt转换成最大长度为smax的字符串并将结果存储在s中。 46 size_t strftime(char
* s, size_t smax, const char * fmt,
const struct tm * tp); // ��ʼ��ʱ��ת����Ϣ��ʹ�û�������TZ����zname�������г�ʼ���� // 初始化时间转换信息,使用环境变量TZ,对zname变量进行初始化。 // ����ʱ����ص�ʱ��ת�������н��Զ����øú����� // 在与时区相关的时间转换函数中将自动调用该函数。 47
void tzset(void); ����程序14-2 linux/include/const.h 4
#define BUFFER_END 0x200000
-// ���建��ʹ���ڴ��ĩ�ˣ�������û��ʹ�øó������� 5 // i�ڵ����ݽṹ��i_mode�ֶεĸ���־λ�� // i节点数据结构中i_mode字段的各标志位。 6
#define I_TYPE
-0170000 // ָ��i�ڵ����ͣ����������룩�� 7
#define I_DIRECTORY
-0040000 // ��Ŀ¼�ļ��� 8
#define I_REGULAR
-0100000 // �dz����ļ�������Ŀ¼�ļ��������ļ��� 9
#define I_BLOCK_SPECIAL 0060000
-// �ǿ��豸�����ļ��� 10
#define I_CHAR_SPECIAL 0020000
-// ���ַ��豸�����ļ��� 11
#define I_NAMED_PIPE
-0010000 // �������ܵ��ڵ㡣 12
#define I_SET_UID_BIT
-0004000 // ��ִ��ʱ������Ч�û�ID���͡� 13
#define I_SET_GID_BIT
-0002000 // ��ִ��ʱ������Ч��ID���͡� 14 ����程序14-3 linux/include/ctype.h 4
#define _U
0x01 /* upper */
-// �ñ���λ���ڴ�д�ַ�[A-Z]�� 5
#define _L
0x02 /* lower */
-// �ñ���λ����Сд�ַ�[a-z]�� 6
#define _D
0x04 /* digit */
-// �ñ���λ��������[0-9]�� 7
#define _C
0x08 /* cntrl */
-// �ñ���λ���ڿ����ַ��� 8
#define _P
0x10 /* punct */
-// �ñ���λ���ڱ���ַ��� 9
#define _S
-0x20 /* white space (space/lf/tab) */ // �հ��ַ�����ո�\t��\n�ȡ� 10
#define _X 0x40
/* hex digit */
-// �ñ���λ����ʮ���������֡� 11
#define _SP
-0x80 /* hard space (0x20) */ // �ñ���λ���ڿո��ַ���0x20���� 12 13
extern unsigned char _ctype[];
-// �ַ��������飨��������������ַ���Ӧ��������ԡ� 14
extern char _ctmp;
-// һ����ʱ�ַ��������ڶ���lib/ctype.c�У��� 15 // ������һЩȷ���ַ����͵ĺꡣ // 下面是一些确定字符类型的宏。 16
#define isalnum(c) ((_ctype+1)[c]&(_U|_L|_D))
-// ���ַ�������[A-Z]��[a-z]��[0-9]�� 17
#define isalpha(c) ((_ctype+1)[c]&(_U|_L)) //
-���ַ��� 18
#define iscntrl(c) ((_ctype+1)[c]&(_C))
-// �ǿ����ַ��� 19 #define
isdigit(c) ((_ctype+1)[c]&(_D))
-// �����֡� 20
#define isgraph(c) ((_ctype+1)[c]&(_P|_U|_L|_D)) // ��ͼ���ַ��� 21
#define islower(c) ((_ctype+1)[c]&(_L))
-// ��Сд�ַ��� 22
#define isprint(c) ((_ctype+1)[c]&(_P|_U|_L|_D|_SP))
-// �ǿɴ�ӡ�ַ��� 23
#define ispunct(c) ((_ctype+1)[c]&(_P))
-// �DZ����š� 24
#define isspace(c) ((_ctype+1)[c]&(_S))
-// �ǿհ��ַ���ո�,\f,\n,\r,\t,\v�� 25
#define isupper(c) ((_ctype+1)[c]&(_U))
-// �Ǵ�д�ַ��� 26
#define isxdigit(c) ((_ctype+1)[c]&(_D|_X)) // ��ʮ���������֡� 27 // ���������������У������ǰʹ����ǰ��unsigned�������c Ӧ�ü����ţ�����ʾ�� (c)�� // 在下面两个定义中,宏参数前使用了前缀(unsigned),因此c 应该加括号,即表示成 (c)。 // ��Ϊ�ڳ�����c������һ�����ӵı���ʽ�����磬���������a + b�����������ţ����ں궨 // 因为在程序中c可能是一个复杂的表达式。例如,如果参数是a + b,若不加括号,则在宏定 // ���б���ˣ�(unsigned) a + b������Ȼ���ԡ��������ž�����ȷ��ʾ��(unsigned)(a
-+ b)�� // 义中变成了:(unsigned) a + b。这显然不对。加了括号就能正确表示成(unsigned)(a
++ b)。 28
#define isascii(c) (((unsigned)
-c)<=0x7f) // ��ASCII�ַ��� 29
#define toascii(c) (((unsigned)
-c)&0x7f) // ת����ASCII�ַ��� 30 // ���������궨����ʹ��һ����ʱ����_ctmp��ԭ���ǣ��ں궨���У���IJ���ֻ�ܱ�ʹ��һ�Ρ� // 以下两个宏定义中使用一个临时变量_ctmp的原因是:在宏定义中,宏的参数只能被使用一次。 // �����ڶ��߳���˵���Dz���ȫ�ģ���Ϊ���������߳̿�����ͬһʱ��ʹ�����������ʱ������ // 但对于多线程来说这是不安全的,因为两个或多个线程可能在同一时刻使用这个公共临时变量。 // ��˴�Linux
-2.2.x�汾��ʼ����Ϊʹ������������ȡ���������궨�塣 // 因此从Linux
+2.2.x版本开始更改为使用两个函数来取代这两个宏定义。 31
#define tolower(c) (_ctmp=c,isupper(_ctmp)?_ctmp-('A'-'a'):_ctmp) // ת����Сд�ַ��� 32
#define toupper(c) (_ctmp=c,islower(_ctmp)?_ctmp-('a'-'A'):_ctmp) // ת���ɴ�д�ַ��� 33 ����程序14-4 linux/include/errno.h /* * ok��������û�еõ��κ������йس����ŵ����ϣ���ֻ��ʹ����minixϵͳ * ok,由于我没有得到任何其他有关出错号的资料,我只能使用与minix系统 * ��ͬ�ij������ˡ� * 相同的出错号了。 * ϣ����Щ��POSIX���ݵĻ�����һ���̶����������ģ��Ҳ�֪��������POSIX * 希望这些是POSIX兼容的或者在一定程度上是这样的,我不知道(而且POSIX * û�и����� - Ҫ������ǵĻ쵰����Ҫ��Ǯ���� * 没有告诉我 - 要获得他们的混蛋标准需要出钱)。 * * ����û��ʹ��minix������_SIGN�أ������ں˵ķ���ֵ�����Լ���������š� * 我们没有使用minix那样的_SIGN簇,所以内核的返回值必须自己辨别正负号。 * * ע�⣡�����ı���ļ��Ļ�������ҲҪ��strerror()������ * 注意!如果你改变该文件的话,记着也要修改strerror()函数。 */ 16 // ϵͳ�����Լ��ܶ�⺯������һ�������ֵ�Ա�ʾ����ʧ�ܻ���������ֵͨ��ѡ��-1���� // 系统调用以及很多库函数返回一个特殊的值以表示操作失败或出错。这个值通常选择-1或者 // ����һЩ�ض���ֵ����ʾ�������������ֵ��˵���������ˡ�
-�����Ҫ֪�����������ͣ� // 其他一些特定的值来表示。但是这个返回值仅说明错误发生了。
+如果需要知道出错的类型, // ����Ҫ�鿴��ʾϵͳ�����ŵı���errno���ñ������� errno.h �ļ����������ڳ���ʼִ // 就需要查看表示系统出错号的变量errno。该变量即在 errno.h 文件中声明。在程序开始执 // ��ʱ�ñ���ֵ����ʼ��Ϊ0�� // 行时该变量值被初始化为0。 17
extern int errno; 18 // �ڳ���ʱ��ϵͳ���û�ѳ����ŷ��ڱ���errno�У���ֵ����Ȼ��-1����˳�������Ҫ֪ // 在出错时,系统调用会把出错号放在变量errno中(负值),然后返回-1。因此程序若需要知 // ���������ţ�����Ҫ�鿴errno��ֵ�� // 道具体错误号,就需要查看errno的值。 19
#define ERROR
99
-// һ����� 20
#define EPERM
1
-// ����û�����ɡ� 21
#define ENOENT
2 //
-�ļ���Ŀ¼�����ڡ� 22
#define ESRCH
3
-// ָ���Ľ��̲����ڡ� 23
#define EINTR
4
-// �жϵ�ϵͳ���á� 24
#define EIO
5
-// ����/������� 25
#define ENXIO
6
-// ָ���豸���ַ�����ڡ� 26
#define E2BIG
7
-// �����б�̫���� 27
#define ENOEXEC
8
-// ִ�г����ʽ���� 28
#define EBADF
9
-// ����(������)���� 29
#define ECHILD
10
-// �ӽ��̲����ڡ� 30
#define EAGAIN
11
-// ��Դ��ʱ�����á� 31
#define ENOMEM
12
-// �ڴ治�㡣 32
#define EACCES
13
-// û������Ȩ�ޡ� 33
#define EFAULT
14
-// ��ַ���� 34
#define ENOTBLK
15 //
-���ǿ��豸�ļ��� 35
#define EBUSY
16
-// ��Դ��æ�� 36
#define EEXIST
17
-// �ļ��Ѵ��ڡ� 37
#define EXDEV
18
-// �Ƿ����ӡ� 38
#define ENODEV
19
-// �豸�����ڡ� 39
#define ENOTDIR
20
-// ����Ŀ¼�ļ��� 40
#define EISDIR
21
-// ��Ŀ¼�ļ��� 41
#define EINVAL
22
-// �������� 42
#define ENFILE
23
-// ϵͳ���ļ���̫�ࡣ 43
#define EMFILE
24
-// ���ļ���̫�ࡣ 44
#define ENOTTY
25
-// ��ǡ����IO���Ʋ���(û��tty�ն�)�� 45
#define ETXTBSY
26
-// ����ʹ�á� 46
#define EFBIG
27
-// �ļ�̫�� 47
#define ENOSPC
28 //
-�豸�������豸�Ѿ�û�пռ䣩�� 48
#define ESPIPE
29
-// ��Ч���ļ�ָ���ض�λ�� 49
#define EROFS
30
-// �ļ�ϵͳֻ���� 50
#define EMLINK
31
-// ����̫�ࡣ 51
#define EPIPE
32
- // �ܵ����� 52
#define EDOM
33
-// ��(domain)������ 53
#define ERANGE
34
-// ���̫�� 54
#define EDEADLK
35
-// ������Դ������ 55
#define ENAMETOOLONG
36
-// �ļ���̫���� 56
#define ENOLCK
37
-// û���������á� 57
#define ENOSYS
38
-// ���ܻ�û��ʵ�֡� 58
#define ENOTEMPTY
39
-// Ŀ¼���ա� 59 60 /* Should never be seen by user programs */ /* �û�����Ӧ�ü������������д���� /* 用户程序不应该见到下面这两中错误号 */ 61
#define ERESTARTSYS
512
-// ����ִ��ϵͳ���á� 62
#define ERESTARTNOINTR 513
-// ����ִ��ϵͳ���ã����жϡ� 63 ����程序14-5 linux/include/fcntl.h 3 4
-#include <sys/types.h> // ����ͷ�ļ��������˻�����ϵͳ�������͡� 5 6 /*
open/fcntl - NOCTTY, NDELAY isn't implemented yet */ /* open/fcntl - NOCTTY��NDELAY���ڻ�û��ʵ�� */ /* open/fcntl - NOCTTY和NDELAY现在还没有实现 */ 7
#define O_ACCMODE
00003
-// �ļ�����ģʽ�����롣 // ���ļ�open()���ļ����ƺ���fcntl()ʹ�õ��ļ�����ģʽ��ͬʱֻ��ʹ������֮һ�� // 打开文件open()和文件控制函数fcntl()使用的文件访问模式。同时只能使用三者之一。 8
#define O_RDONLY
00
-// ��ֻ����ʽ���ļ��� 9
#define O_WRONLY
01
-// ��ֻд��ʽ���ļ��� 10
#define O_RDWR
02
-// �Զ�д��ʽ���ļ��� // �������ļ������Ͳ�����־������open()�������������ģʽ��'λ��'�ķ�ʽһ��ʹ�á� // 下面是文件创建和操作标志,用于open()。可与上面访问模式用'位或'的方式一起使用。 11
#define O_CREAT
-00100 /* not fcntl */ // ����ļ������ھʹ�����fcntl�������á� 12
#define O_EXCL
-00200 /* not fcntl */ // ��ռʹ���ļ���־�� 13
#define O_NOCTTY
-00400 /* not fcntl */ // ����������նˡ� 14
#define O_TRUNC
-01000 /* not fcntl */ // ���ļ��Ѵ�������д�������Ƚ�Ϊ0�� 15
#define O_APPEND
02000
-// �����ӷ�ʽ���ļ�ָ����Ϊ�ļ�β�� 16
#define O_NONBLOCK
-04000 /* not fcntl */ // ��������ʽ�Ͳ����ļ��� 17
#define O_NDELAY
O_NONBLOCK
-// ��������ʽ�Ͳ����ļ��� 18 22 */ /* ���涨����fcntl�����ע��Ŀǰ�������û��֧�֣������� /* 下面定义了fcntl的命令。注意目前锁定命令还没有支持,而其他 * ����ʵ���ϻ�û�в��Թ��� * 命令实际上还没有测试过。 */ // �ļ����(������)��������fcntl()�����cmd���� // 文件句柄(描述符)操作函数fcntl()的命令(cmd)。 23
#define F_DUPFD
0 /* dup */
-// �����ļ����Ϊ��С��ֵ�ľ���� 24
#define F_GETFD
-1 /* get f_flags */ // ȡ�����־����1����־FD_CLOEXEC�� 25
#define F_SETFD
-2 /* set f_flags */ // �����ļ������־�� 26
#define F_GETFL
3 /* more flags (cloexec) */
-// ȡ�ļ�״̬��־�ͷ���ģʽ�� 27
#define F_SETFL
4
-// �����ļ�״̬��־�ͷ���ģʽ�� // �������ļ��������fcntl()�ĵ���������lock��ָ��flock�ṹ��ָ�롣 // 下面是文件锁定命令。fcntl()的第三个参数lock是指向flock结构的指针。 28
#define F_GETLK
5 /* not implemented */
-// ������ֹ������flock�ṹ�� 29
#define F_SETLK
-6 // ����(F_RDLCK��F_WRLCK)�����(F_UNLCK)������ 30
#define F_SETLKW
-7 // �ȴ����û���������� 31 32 /*
for F_[GET|SET]FL */ /* ����
-F_GETFL��F_SETFL */ /* 用于
+F_GETFL或F_SETFL */ // ��ִ��exec()�غ���ʱ��Ҫ�رյ��ļ������(ִ��ʱ�ر� - Close On EXECution) // 在执行exec()簇函数时需要关闭的文件句柄。(执行时关闭 - Close On EXECution) 33
#define FD_CLOEXEC
@@ -1990,7 +1990,7 @@ lang=EN-US>(ִ��ʱ�ر� - Close On EXECution)
-/* ʵ����ֻҪ��λΪ1���� */ 34 37 */ /* OK���������������ͣ��κκ����ж���û��ʵ�֡�POSIX��Ҫ����Щ���͡� /* OK,以下是锁定类型,任何函数中都还没有实现。POSIX标准要求这些类型。 */ 38
#define F_RDLCK
-0 // �������������� 39
#define F_WRLCK
-1 // ��ռ��д�ļ������� 40
#define F_UNLCK
-2 // ������� 41 42 /*
Once again - not implemented, but ... */ /* ͬ�� - Ҳ��û��ʵ�֣����� /* 同样 - 也还没有实现,但是... */ // �ļ������������ݽṹ����������Ӱ���ļ��ε�����(l_type)����ʼƫ��(l_whence)�� // 文件锁定操作数据结构。描述了受影响文件段的类型(l_type)、开始偏移(l_whence)、 // ���ƫ��(l_start)����������(l_len)��ʵʩ�����Ľ���id�� // 相对偏移(l_start)、锁定长度(l_len)和实施锁定的进程id。 43
struct flock { 44
-short l_type; // �������ͣ�F_RDLCK��F_WRLCK��F_UNLCK���� 45
-short l_whence; // ��ʼƫ��(SEEK_SET��SEEK_CUR��SEEK_END)�� 46
off_t l_start;
-// ���������Ŀ�ʼ�������ƫ�ƣ��ֽ������� 47
off_t l_len;
-// ���������Ĵ�С�������0��Ϊ���ļ�ĩβ�� 48
pid_t l_pid;
-// �����Ľ���id�� 49 }; 50 // ������ʹ��������־������ĺ���ԭ�͡� // 以下是使用上述标志或命令的函数原型。 // �������ļ�����дһ���Ѵ����ļ��� // 创建新文件或重写一个已存在文件。 // ����filename���������ļ����ļ�����mode�Ǵ����ļ������ԣ���include/sys/stat.h���� // 参数filename是欲创建文件的文件名,mode是创建文件的属性(见include/sys/stat.h)。 51
extern int creat(const char * filename,mode_t mode); // �ļ������������Ӱ���ļ��Ĵ� // 文件句柄操作,会影响文件的打开。 // ����fildes���ļ������cmd�Dz������������23--30�С��ú����������¼�����ʽ�� // 参数fildes是文件句柄,cmd是操作命令,见上面23--30行。该函数可有以下几种形式: // int fcntl(int fildes, int
cmd); // ���ļ������ļ����ļ����֮�佨����ϵ�� // 打开文件。在文件与文件句柄之间建立联系。 // ����filename�������ļ����ļ�����flags������7-17���ϵı�־����ϡ� // 参数filename是欲打开文件的文件名,flags是上面7-17行上的标志的组合。 53
extern int open(const char * filename,
diff --git a/Book-Lite/code-list/html/P14-6.html b/Book-Lite/code-list/html/P14-6.html
index 3d5b7b3..2e58b39 100644
--- a/Book-Lite/code-list/html/P14-6.html
+++ b/Book-Lite/code-list/html/P14-6.html
@@ -10,24 +10,24 @@
{font-family:Wingdings;
panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
- {font-family:����;
+ {font-family:宋体;
panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
- {font-family:����;
+ {font-family:黑体;
panose-1:2 1 6 9 6 1 1 1 1 1;}
@font-face
- {font-family:����;
+ {font-family:黑体;
panose-1:2 1 6 9 6 1 1 1 1 1;}
@font-face
- {font-family:����С���μ���;}
+ {font-family:方正小标宋简体;}
@font-face
- {font-family:"\@����";
+ {font-family:"\@黑体";
panose-1:2 1 6 9 6 1 1 1 1 1;}
@font-face
- {font-family:"\@����";
+ {font-family:"\@宋体";
panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
- {font-family:"\@����С���μ���";}
+ {font-family:"\@方正小标宋简体";}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
@@ -37,7 +37,7 @@
font-size:10.0pt;
font-family:"Times New Roman","serif";}
h1
- {mso-style-link:"���� 1 Char";
+ {mso-style-link:"标题 1 Char";
margin-top:17.0pt;
margin-right:0cm;
margin-bottom:16.5pt;
@@ -49,7 +49,7 @@ h1
font-family:"Times New Roman","serif";
font-weight:bold;}
h2
- {mso-style-link:"���� 2 Char";
+ {mso-style-link:"标题 2 Char";
margin-top:13.0pt;
margin-right:0cm;
margin-bottom:13.0pt;
@@ -62,7 +62,7 @@ h2
font-family:"Arial","sans-serif";
font-weight:bold;}
h3
- {mso-style-link:"���� 3 Char";
+ {mso-style-link:"标题 3 Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -73,7 +73,7 @@ h3
font-family:"Arial","sans-serif";
font-weight:bold;}
h4
- {mso-style-link:"���� 4 Char";
+ {mso-style-link:"标题 4 Char";
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
@@ -87,7 +87,7 @@ h4
font-family:"Arial","sans-serif";
font-weight:bold;}
h5
- {mso-style-link:"���� 5 Char";
+ {mso-style-link:"标题 5 Char";
margin-top:14.0pt;
margin-right:0cm;
margin-bottom:14.5pt;
@@ -101,7 +101,7 @@ h5
font-family:"Times New Roman","serif";
font-weight:bold;}
h6
- {mso-style-link:"���� 6 Char";
+ {mso-style-link:"标题 6 Char";
margin-top:12.0pt;
margin-right:0cm;
margin-bottom:3.2pt;
@@ -115,7 +115,7 @@ h6
font-family:"Arial","sans-serif";
font-weight:bold;}
p.MsoHeading7, li.MsoHeading7, div.MsoHeading7
- {mso-style-link:"���� 7 Char";
+ {mso-style-link:"标题 7 Char";
margin-top:12.0pt;
margin-right:0cm;
margin-bottom:3.2pt;
@@ -129,7 +129,7 @@ p.MsoHeading7, li.MsoHeading7, div.MsoHeading7
font-family:"Times New Roman","serif";
font-weight:bold;}
p.MsoHeading8, li.MsoHeading8, div.MsoHeading8
- {mso-style-link:"���� 8 Char";
+ {mso-style-link:"标题 8 Char";
margin-top:12.0pt;
margin-right:0cm;
margin-bottom:3.2pt;
@@ -142,7 +142,7 @@ p.MsoHeading8, li.MsoHeading8, div.MsoHeading8
font-size:12.0pt;
font-family:"Arial","sans-serif";}
p.MsoHeading9, li.MsoHeading9, div.MsoHeading9
- {mso-style-link:"���� 9 Char";
+ {mso-style-link:"标题 9 Char";
margin-top:12.0pt;
margin-right:0cm;
margin-bottom:3.2pt;
@@ -330,20 +330,20 @@ p.MsoToc9, li.MsoToc9, div.MsoToc9
font-size:9.0pt;
font-family:"Times New Roman","serif";}
p.MsoFootnoteText, li.MsoFootnoteText, div.MsoFootnoteText
- {mso-style-link:"��ע�ı� Char";
+ {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";
+ {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";
+ {mso-style-link:"页眉 Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
@@ -353,14 +353,14 @@ p.MsoHeader, li.MsoHeader, div.MsoHeader
font-size:9.0pt;
font-family:"Times New Roman","serif";}
p.MsoFooter, li.MsoFooter, div.MsoFooter
- {mso-style-link:"ҳ�� Char";
+ {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";
+ {mso-style-name:"索引标题\,索引类目\,索引类目1\,索引类目2";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -411,7 +411,7 @@ p.MsoList4, li.MsoList4, div.MsoList4
font-size:10.0pt;
font-family:"Times New Roman","serif";}
p.MsoDate, li.MsoDate, div.MsoDate
- {mso-style-link:"���� Char";
+ {mso-style-link:"日期 Char";
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
@@ -422,36 +422,36 @@ p.MsoDate, li.MsoDate, div.MsoDate
font-size:10.0pt;
font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
- {mso-style-name:"������\,��������";
+ {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";
+ {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";
+ {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:����;}
+ {font-family:黑体;}
p.MsoCommentSubject, li.MsoCommentSubject, div.MsoCommentSubject
- {mso-style-link:"��ע���� Char";
+ {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";
+ {mso-style-link:"批注框文本 Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -459,7 +459,7 @@ p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
font-size:9.0pt;
font-family:"Times New Roman","serif";}
p.1, li.1, div.1
- {mso-style-name:��ʽ1;
+ {mso-style-name:样式1;
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
@@ -470,30 +470,30 @@ p.1, li.1, div.1
font-size:10.0pt;
font-family:"Times New Roman","serif";}
p.a, li.a, div.a
- {mso-style-name:�������;
- mso-style-link:"������� Char";
+ {mso-style-name:代码程序;
+ mso-style-link:"代码程序 Char";
margin:0cm;
margin-bottom:.0001pt;
font-size:10.0pt;
- font-family:����;}
+ font-family:宋体;}
span.Char
- {mso-style-name:"������� Char";
- mso-style-link:�������;
- font-family:����;}
+ {mso-style-name:"代码程序 Char";
+ mso-style-link:代码程序;
+ font-family:宋体;}
p.a0, li.a0, div.a0
- {mso-style-name:ͼ˵��;
- mso-style-link:"ͼ˵�� Char";
+ {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:����;}
+ {mso-style-name:"图说明 Char";
+ mso-style-link:图说明;
+ font-family:宋体;}
p.0, li.0, div.0
- {mso-style-name:����0;
+ {mso-style-name:封面0;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
@@ -501,7 +501,7 @@ p.0, li.0, div.0
font-family:"Times New Roman","serif";
font-weight:bold;}
p.10, li.10, div.10
- {mso-style-name:����1;
+ {mso-style-name:封面1;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
@@ -509,25 +509,25 @@ p.10, li.10, div.10
font-family:"Times New Roman","serif";
font-weight:bold;}
p.11, li.11, div.11
- {mso-style-name:�DZ���1;
+ {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-family:宋体;
font-weight:bold;}
p.a1, li.a1, div.a1
- {mso-style-name:�ı�����;
+ {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";
+ {mso-style-name:"图中文字3 Char Char";
+ mso-style-link:"图中文字3 Char Char Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
@@ -535,11 +535,11 @@ p.3CharChar, li.3CharChar, div.3CharChar
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:����;}
+ {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;
+ {mso-style-name:邮件post;
margin:0cm;
margin-bottom:.0001pt;
text-align:right;
@@ -547,7 +547,7 @@ p.post, li.post, div.post
font-size:10.0pt;
font-family:"Times New Roman","serif";}
p.3, li.3, div.3
- {mso-style-name:ͼ������3;
+ {mso-style-name:图中字体3;
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -555,44 +555,44 @@ p.3, li.3, div.3
font-size:10.0pt;
font-family:"Times New Roman","serif";}
span.3CharChar1CharCharChar
- {mso-style-name:"ͼ������3 Char Char1 Char Char Char";
- font-family:����;}
+ {mso-style-name:"图中文字3 Char Char1 Char Char Char";
+ font-family:宋体;}
span.3CharChar1CharChar
- {mso-style-name:"ͼ������3 Char Char1 Char Char";
- font-family:����;}
+ {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";
+ {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:����;}
+ {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";
+ {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:����;}
+ {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";
+ {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��;
+ {mso-style-name:图中文字小5号;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
@@ -600,28 +600,28 @@ p.5, li.5, div.5
font-size:9.0pt;
font-family:"Times New Roman","serif";}
p.2, li.2, div.2
- {mso-style-name:�������2;
+ {mso-style-name:代码程序2;
margin:0cm;
margin-bottom:.0001pt;
font-size:10.0pt;
- font-family:����;}
+ font-family:宋体;}
p.20, li.20, div.20
- {mso-style-name:ͼ˵��2;
+ {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;
+ {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";
+ {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;
@@ -629,18 +629,18 @@ p.3CharCharCharCharChar, li.3CharCharCharCharChar, div.3CharCharCharCharChar
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:����;}
+ {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:ͼ����;
+ {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";
+ {mso-style-name:"样式 标题 1 + 居中1";
margin-right:0cm;
margin-left:0cm;
text-align:center;
@@ -649,32 +649,32 @@ p.110, li.110, div.110
font-family:"Times New Roman","serif";
font-weight:bold;}
span.1Char
- {mso-style-name:"���� 1 Char";
- mso-style-link:"���� 1";
+ {mso-style-name:"标题 1 Char";
+ mso-style-link:"标题 1";
font-weight:bold;}
p.22, li.22, div.22
- {mso-style-name:"��ʽ �б� 2 + ����";
+ {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;
+ {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��;
+ {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;
+ {mso-style-name:样式11;
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
@@ -685,20 +685,20 @@ p.111, li.111, div.111
font-size:10.0pt;
font-family:"Times New Roman","serif";}
p.12, li.12, div.12
- {mso-style-name:�������1;
+ {mso-style-name:代码程序1;
margin:0cm;
margin-bottom:.0001pt;
font-size:10.0pt;
- font-family:����;}
+ font-family:宋体;}
p.13, li.13, div.13
- {mso-style-name:ͼ˵��1;
+ {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;
+ {mso-style-name:封面01;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
@@ -706,7 +706,7 @@ p.01, li.01, div.01
font-family:"Times New Roman","serif";
font-weight:bold;}
p.112, li.112, div.112
- {mso-style-name:����11;
+ {mso-style-name:封面11;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
@@ -714,24 +714,24 @@ p.112, li.112, div.112
font-family:"Times New Roman","serif";
font-weight:bold;}
p.113, li.113, div.113
- {mso-style-name:�DZ���11;
+ {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-family:宋体;
font-weight:bold;}
p.14, li.14, div.14
- {mso-style-name:�ı�����1;
+ {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";
+ {mso-style-name:"图中文字3 Char1";
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
@@ -739,7 +739,7 @@ p.3Char1, li.3Char1, div.3Char1
font-size:8.0pt;
font-family:"Times New Roman","serif";}
p.post1, li.post1, div.post1
- {mso-style-name:�ʼ�post1;
+ {mso-style-name:邮件post1;
margin:0cm;
margin-bottom:.0001pt;
text-align:right;
@@ -747,7 +747,7 @@ p.post1, li.post1, div.post1
font-size:10.0pt;
font-family:"Times New Roman","serif";}
p.31, li.31, div.31
- {mso-style-name:ͼ������31;
+ {mso-style-name:图中字体31;
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -755,35 +755,35 @@ p.31, li.31, div.31
font-size:10.0pt;
font-family:"Times New Roman","serif";}
p.5Char1, li.5Char1, div.5Char1
- {mso-style-name:"ͼ������5�� Char1";
+ {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";
+ {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";
+ {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;
+ {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;
+ {mso-style-name:样式12;
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
@@ -794,7 +794,7 @@ p.120, li.120, div.120
font-size:10.0pt;
font-family:"Times New Roman","serif";}
p.02, li.02, div.02
- {mso-style-name:����02;
+ {mso-style-name:封面02;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
@@ -802,7 +802,7 @@ p.02, li.02, div.02
font-family:"Times New Roman","serif";
font-weight:bold;}
p.121, li.121, div.121
- {mso-style-name:����12;
+ {mso-style-name:封面12;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
@@ -810,17 +810,17 @@ p.121, li.121, div.121
font-family:"Times New Roman","serif";
font-weight:bold;}
p.122, li.122, div.122
- {mso-style-name:�DZ���12;
+ {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-family:宋体;
font-weight:bold;}
p.3Char2, li.3Char2, div.3Char2
- {mso-style-name:"ͼ������3 Char2";
+ {mso-style-name:"图中文字3 Char2";
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
@@ -828,7 +828,7 @@ p.3Char2, li.3Char2, div.3Char2
font-size:8.0pt;
font-family:"Times New Roman","serif";}
p.post2, li.post2, div.post2
- {mso-style-name:�ʼ�post2;
+ {mso-style-name:邮件post2;
margin:0cm;
margin-bottom:.0001pt;
text-align:right;
@@ -836,7 +836,7 @@ p.post2, li.post2, div.post2
font-size:10.0pt;
font-family:"Times New Roman","serif";}
p.32, li.32, div.32
- {mso-style-name:ͼ������32;
+ {mso-style-name:图中字体32;
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -844,21 +844,21 @@ p.32, li.32, div.32
font-size:10.0pt;
font-family:"Times New Roman","serif";}
p.5Char2, li.5Char2, div.5Char2
- {mso-style-name:"ͼ������С5�� Char2";
+ {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;
+ {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";
+ {mso-style-name:"图中文字3 Char Char Char Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
@@ -866,7 +866,7 @@ p.3CharCharCharChar, li.3CharCharCharChar, div.3CharCharCharChar
font-size:8.0pt;
font-family:"Times New Roman","serif";}
p.130, li.130, div.130
- {mso-style-name:��ʽ13;
+ {mso-style-name:样式13;
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
@@ -877,13 +877,13 @@ p.130, li.130, div.130
font-size:10.0pt;
font-family:"Times New Roman","serif";}
p.30, li.30, div.30
- {mso-style-name:�������3;
+ {mso-style-name:代码程序3;
margin:0cm;
margin-bottom:.0001pt;
font-size:10.0pt;
- font-family:����;}
+ font-family:宋体;}
p.03, li.03, div.03
- {mso-style-name:����03;
+ {mso-style-name:封面03;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
@@ -891,7 +891,7 @@ p.03, li.03, div.03
font-family:"Times New Roman","serif";
font-weight:bold;}
p.131, li.131, div.131
- {mso-style-name:����13;
+ {mso-style-name:封面13;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
@@ -899,24 +899,24 @@ p.131, li.131, div.131
font-family:"Times New Roman","serif";
font-weight:bold;}
p.132, li.132, div.132
- {mso-style-name:�DZ���13;
+ {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-family:宋体;
font-weight:bold;}
p.33, li.33, div.33
- {mso-style-name:�ı�����3;
+ {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";
+ {mso-style-name:"图中文字3 Char3";
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
@@ -924,7 +924,7 @@ p.3Char3, li.3Char3, div.3Char3
font-size:8.0pt;
font-family:"Times New Roman","serif";}
p.post3, li.post3, div.post3
- {mso-style-name:�ʼ�post3;
+ {mso-style-name:邮件post3;
margin:0cm;
margin-bottom:.0001pt;
text-align:right;
@@ -932,7 +932,7 @@ p.post3, li.post3, div.post3
font-size:10.0pt;
font-family:"Times New Roman","serif";}
p.330, li.330, div.330
- {mso-style-name:ͼ������33;
+ {mso-style-name:图中字体33;
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -940,36 +940,36 @@ p.330, li.330, div.330
font-size:10.0pt;
font-family:"Times New Roman","serif";}
p.5Char20, li.5Char20, div.5Char20
- {mso-style-name:"ͼ������5�� Char2";
+ {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";
+ {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";
+ {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;
+ {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";
+ {mso-style-name:"图中文字3 Char";
+ mso-style-link:"图中文字3 Char Char5";
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
@@ -977,11 +977,11 @@ p.3Char, li.3Char, div.3Char
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:����;}
+ {mso-style-name:"图中文字3 Char Char5";
+ mso-style-link:"图中文字3 Char";
+ font-family:宋体;}
p.54, li.54, div.54
- {mso-style-name:ͼ������С5����;
+ {mso-style-name:图中文字小5紧密;
margin:0cm;
margin-bottom:.0001pt;
line-height:9.0pt;
@@ -989,7 +989,7 @@ p.54, li.54, div.54
font-size:9.0pt;
font-family:"Times New Roman","serif";}
p.24, li.24, div.24
- {mso-style-name:����2�Ŵ�����;
+ {mso-style-name:居中2号粗宋体;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
@@ -997,7 +997,7 @@ p.24, li.24, div.24
font-family:"Times New Roman","serif";
font-weight:bold;}
p.15, li.15, div.15
- {mso-style-name:"��ʽ ���� 1 + ����";
+ {mso-style-name:"样式 标题 1 + 居中";
margin-top:17.0pt;
margin-right:0cm;
margin-bottom:16.5pt;
@@ -1008,7 +1008,7 @@ p.15, li.15, div.15
font-family:"Times New Roman","serif";
font-weight:bold;}
p.25, li.25, div.25
- {mso-style-name:"��ʽ ���� 2 + �о�\: �����о�";
+ {mso-style-name:"样式 标题 2 + 行距\: 单倍行距";
margin-top:13.0pt;
margin-right:0cm;
margin-bottom:13.0pt;
@@ -1021,33 +1021,33 @@ p.25, li.25, div.25
font-family:"Arial","sans-serif";
font-weight:bold;}
span.2Char
- {mso-style-name:"���� 2 Char";
- mso-style-link:"���� 2";
+ {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;
+ {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;
+ {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;
+ {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;
+ {mso-style-name:列表4;
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
@@ -1058,166 +1058,166 @@ p.40, li.40, div.40
font-size:10.0pt;
font-family:"Times New Roman","serif";}
p.41, li.41, div.41
- {mso-style-name:��4;
+ {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;
+ {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;
+ {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;
+ {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;
+ {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;
+ {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;
+ {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;
+ {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;
+ {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;
+ {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;
+ {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;
+ {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;
+ {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;
+ {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;
+ {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;
+ {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;
+ {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;
+ {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;
+ {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;
+ {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";
+ {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:����;}
+ {mso-style-name:"图说明13 Char";
+ mso-style-link:图说明13;
+ font-family:宋体;}
p.134, li.134, div.134
- {mso-style-name:�б�13;
+ {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;
+ {mso-style-name:附录2;
margin-top:13.0pt;
margin-right:0cm;
margin-bottom:13.0pt;
@@ -1229,7 +1229,7 @@ p.26, li.26, div.26
font-family:"Arial","sans-serif";
font-weight:bold;}
p.36, li.36, div.36
- {mso-style-name:��¼3;
+ {mso-style-name:附录3;
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -1239,12 +1239,12 @@ p.36, li.36, div.36
font-family:"Arial","sans-serif";
font-weight:bold;}
span.3Char0
- {mso-style-name:"���� 3 Char";
- mso-style-link:"���� 3";
+ {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;
+ {mso-style-name:附录1;
margin-top:17.0pt;
margin-right:0cm;
margin-bottom:16.5pt;
@@ -1255,14 +1255,14 @@ p.16, li.16, div.16
font-family:"Times New Roman","serif";
font-weight:bold;}
p.17, li.17, div.17
- {mso-style-name:��¼��1;
+ {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;
+ {mso-style-name:附录4;
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -1272,19 +1272,19 @@ p.42, li.42, div.42
font-family:"Arial","sans-serif";
font-weight:bold;}
span.4Char
- {mso-style-name:"���� 4 Char";
- mso-style-link:"���� 4";
+ {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:��¼ͼ˵��;
+ {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;
+ {mso-style-name:序标题2;
margin-top:13.0pt;
margin-right:0cm;
margin-bottom:13.0pt;
@@ -1297,7 +1297,7 @@ p.27, li.27, div.27
font-family:"Arial","sans-serif";
font-weight:bold;}
p.a4, li.a4, div.a4
- {mso-style-name:�����;
+ {mso-style-name:参考标题;
margin-top:7.8pt;
margin-right:0cm;
margin-bottom:7.8pt;
@@ -1308,7 +1308,7 @@ p.a4, li.a4, div.a4
font-family:"Times New Roman","serif";
font-weight:bold;}
p.18, li.18, div.18
- {mso-style-name:��������1;
+ {mso-style-name:索引标题1;
margin-top:7.8pt;
margin-right:0cm;
margin-bottom:7.8pt;
@@ -1319,7 +1319,7 @@ p.18, li.18, div.18
font-family:"Times New Roman","serif";
font-weight:bold;}
p.19, li.19, div.19
- {mso-style-name:�б�1;
+ {mso-style-name:列表1;
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
@@ -1330,7 +1330,7 @@ p.19, li.19, div.19
font-size:10.0pt;
font-family:"Times New Roman","serif";}
p.1a, li.1a, div.1a
- {mso-style-name:��1;
+ {mso-style-name:表1;
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
@@ -1341,14 +1341,14 @@ p.1a, li.1a, div.1a
font-size:10.0pt;
font-family:"Times New Roman","serif";}
p.37, li.37, div.37
- {mso-style-name:ͼ˵��3;
+ {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��;
+ {mso-style-name:表中字体6号;
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -1357,8 +1357,8 @@ p.62, li.62, div.62
font-size:7.5pt;
font-family:"Times New Roman","serif";}
p.a5, li.a5, div.a5
- {mso-style-name:���Ĵ���;
- mso-style-link:"���Ĵ��� Char";
+ {mso-style-name:正文代码;
+ mso-style-link:"正文代码 Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -1366,11 +1366,11 @@ p.a5, li.a5, div.a5
font-size:10.0pt;
font-family:"Times New Roman","serif";}
span.Char1
- {mso-style-name:"���Ĵ��� Char";
- mso-style-link:���Ĵ���;
- font-family:����;}
+ {mso-style-name:"正文代码 Char";
+ mso-style-link:正文代码;
+ font-family:宋体;}
p.43, li.43, div.43
- {mso-style-name:"��ʽ ���� 4 +";
+ {mso-style-name:"样式 标题 4 +";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -1380,7 +1380,7 @@ p.43, li.43, div.43
font-family:"Arial","sans-serif";
font-weight:bold;}
p.140, li.140, div.140
- {mso-style-name:��14;
+ {mso-style-name:表14;
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
@@ -1391,8 +1391,8 @@ p.140, li.140, div.140
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";
+ {mso-style-name:图说明14;
+ mso-style-link:"图说明14 Char";
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
@@ -1403,11 +1403,11 @@ p.141, li.141, div.141
font-size:10.0pt;
font-family:"Times New Roman","serif";}
span.14Char
- {mso-style-name:"ͼ˵��14 Char";
- mso-style-link:ͼ˵��14;
- font-family:����;}
+ {mso-style-name:"图说明14 Char";
+ mso-style-link:图说明14;
+ font-family:宋体;}
p.a6, li.a6, div.a6
- {mso-style-name:�ļ�Ŀ¼��;
+ {mso-style-name:文件目录表;
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -1415,8 +1415,8 @@ p.a6, li.a6, div.a6
font-size:10.0pt;
font-family:"Times New Roman","serif";}
p.a7, li.a7, div.a7
- {mso-style-name:"��ʽ ���� +";
- mso-style-link:"��ʽ ���� + Char";
+ {mso-style-name:"样式 正文 +";
+ mso-style-link:"样式 正文 + Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -1424,39 +1424,39 @@ p.a7, li.a7, div.a7
font-size:10.0pt;
font-family:"Times New Roman","serif";}
span.Char2
- {mso-style-name:"��ʽ ���� + Char";
- mso-style-link:"��ʽ ���� +";
+ {mso-style-name:"样式 正文 + Char";
+ mso-style-link:"样式 正文 +";
font-family:"Times New Roman","serif";}
p.a8, li.a8, div.a8
- {mso-style-name:������ע;
+ {mso-style-name:表格题注;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:10.5pt;
- font-family:����;}
+ font-family:宋体;}
p.a9, li.a9, div.a9
- {mso-style-name:�б���ע;
+ {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:ͼ��ע;
+ {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:������ע;
+ {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:��������;
+ {mso-style-name:框中文字;
margin-top:0cm;
margin-right:21.0pt;
margin-bottom:0cm;
@@ -1469,7 +1469,7 @@ p.ac, li.ac, div.ac
font-size:9.0pt;
font-family:"Times New Roman","serif";}
p.125, li.125, div.125
- {mso-style-name:"��ʽ ���� 1 + ����2";
+ {mso-style-name:"样式 标题 1 + 居中2";
margin-top:17.0pt;
margin-right:0cm;
margin-bottom:16.5pt;
@@ -1480,14 +1480,14 @@ p.125, li.125, div.125
font-family:"Times New Roman","serif";
font-weight:bold;}
p.ad, li.ad, div.ad
- {mso-style-name:"��ʽ ��ע + ���� ��� ����";
+ {mso-style-name:"样式 题注 + 宋体 五号 居中";
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:10.5pt;
- font-family:����;}
+ font-family:黑体;}
p.1b, li.1b, div.1b
- {mso-style-name:�����1;
+ {mso-style-name:序标题1;
margin-top:17.0pt;
margin-right:0cm;
margin-bottom:16.5pt;
@@ -1498,16 +1498,16 @@ p.1b, li.1b, div.1b
font-family:"Times New Roman","serif";
font-weight:bold;}
p.38, li.38, div.38
- {mso-style-name:�����3;
+ {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:����С���μ���;}
+ font-family:方正小标宋简体;}
p.63, li.63, div.63
- {mso-style-name:��������6��;
+ {mso-style-name:表中文字6号;
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -1515,7 +1515,7 @@ p.63, li.63, div.63
font-size:7.5pt;
font-family:"Times New Roman","serif";}
p.64, li.64, div.64
- {mso-style-name:ͼ������6�������;
+ {mso-style-name:图中文字6号左对齐;
margin:0cm;
margin-bottom:.0001pt;
line-height:10.0pt;
@@ -1523,8 +1523,8 @@ p.64, li.64, div.64
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";
+ {mso-style-name:图中文字6号;
+ mso-style-link:"图中文字6号 Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
@@ -1533,11 +1533,11 @@ p.65, li.65, div.65
font-size:7.5pt;
font-family:"Times New Roman","serif";}
span.6Char
- {mso-style-name:"ͼ������6�� Char";
- mso-style-link:ͼ������6��;
- font-family:����;}
+ {mso-style-name:"图中文字6号 Char";
+ mso-style-link:图中文字6号;
+ font-family:宋体;}
p.ae, li.ae, div.ae
- {mso-style-name:ͼ��;
+ {mso-style-name:图标;
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -1545,7 +1545,7 @@ p.ae, li.ae, div.ae
font-size:10.0pt;
font-family:"Times New Roman","serif";}
p.28, li.28, div.28
- {mso-style-name:ͼ��2;
+ {mso-style-name:图标2;
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -1553,7 +1553,7 @@ p.28, li.28, div.28
font-size:10.0pt;
font-family:"Times New Roman","serif";}
p.af, li.af, div.af
- {mso-style-name:ϰ�����;
+ {mso-style-name:习题标题;
margin-top:6.0pt;
margin-right:0cm;
margin-bottom:0cm;
@@ -1563,9 +1563,9 @@ p.af, li.af, div.af
text-justify:inter-ideograph;
page-break-after:avoid;
font-size:14.0pt;
- font-family:����;}
+ font-family:黑体;}
p.1c, li.1c, div.1c
- {mso-style-name:���ֱ��1;
+ {mso-style-name:部分编号1;
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -1573,14 +1573,14 @@ p.1c, li.1c, div.1c
font-size:16.0pt;
font-family:"Times New Roman","serif";}
p.af0, li.af0, div.af0
- {mso-style-name:������;
+ {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:"��ʽ ��ע + ����";
+ {mso-style-name:"样式 题注 + 居中";
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
@@ -1629,7 +1629,7 @@ p.RightText, li.RightText, div.RightText
font-size:9.0pt;
font-family:"Times New Roman","serif";}
p.af2, li.af2, div.af2
- {mso-style-name:����������;
+ {mso-style-name:表中文字小五;
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -1637,8 +1637,8 @@ p.af2, li.af2, div.af2
font-size:9.0pt;
font-family:"Times New Roman","serif";}
p.af3, li.af3, div.af3
- {mso-style-name:�ؼ���;
- mso-style-link:"�ؼ��� Char";
+ {mso-style-name:关键词;
+ mso-style-link:"关键词 Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -1646,12 +1646,12 @@ p.af3, li.af3, div.af3
font-size:10.0pt;
font-family:"Times New Roman","serif";}
span.Char3
- {mso-style-name:"�ؼ��� Char";
- mso-style-link:�ؼ���;
- font-family:����;}
+ {mso-style-name:"关键词 Char";
+ mso-style-link:关键词;
+ font-family:宋体;}
p.af4, li.af4, div.af4
- {mso-style-name:���;
- mso-style-link:"��� Char";
+ {mso-style-name:文件名;
+ mso-style-link:"文件名 Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -1659,12 +1659,12 @@ p.af4, li.af4, div.af4
font-size:10.0pt;
font-family:"Times New Roman","serif";}
span.Char4
- {mso-style-name:"��� Char";
- mso-style-link:���;
- font-family:����;}
+ {mso-style-name:"文件名 Char";
+ mso-style-link:文件名;
+ font-family:宋体;}
p.af5, li.af5, div.af5
- {mso-style-name:ѡ��;
- mso-style-link:"ѡ�� Char";
+ {mso-style-name:选项;
+ mso-style-link:"选项 Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -1672,12 +1672,12 @@ p.af5, li.af5, div.af5
font-size:10.0pt;
font-family:"Times New Roman","serif";}
span.Char5
- {mso-style-name:"ѡ�� Char";
- mso-style-link:ѡ��;
- font-family:����;}
+ {mso-style-name:"选项 Char";
+ mso-style-link:选项;
+ font-family:宋体;}
p.af6, li.af6, div.af6
- {mso-style-name:������;
- mso-style-link:"������ Char";
+ {mso-style-name:命令行;
+ mso-style-link:"命令行 Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -1685,12 +1685,12 @@ p.af6, li.af6, div.af6
font-size:10.0pt;
font-family:"Times New Roman","serif";}
span.Char6
- {mso-style-name:"������ Char";
- mso-style-link:������;
- font-family:����;}
+ {mso-style-name:"命令行 Char";
+ mso-style-link:命令行;
+ font-family:宋体;}
p.af7, li.af7, div.af7
- {mso-style-name:������;
- mso-style-link:"������ Char";
+ {mso-style-name:函数名;
+ mso-style-link:"函数名 Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -1698,12 +1698,12 @@ p.af7, li.af7, div.af7
font-size:10.0pt;
font-family:"Times New Roman","serif";}
span.Char7
- {mso-style-name:"������ Char";
- mso-style-link:������;
- font-family:����;}
+ {mso-style-name:"函数名 Char";
+ mso-style-link:函数名;
+ font-family:宋体;}
p.af8, li.af8, div.af8
- {mso-style-name:�Ĵ�����;
- mso-style-link:"�Ĵ����� Char";
+ {mso-style-name:寄存器名;
+ mso-style-link:"寄存器名 Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -1711,12 +1711,12 @@ p.af8, li.af8, div.af8
font-size:10.0pt;
font-family:"Times New Roman","serif";}
span.Char8
- {mso-style-name:"�Ĵ����� Char";
- mso-style-link:�Ĵ�����;
+ {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";
+ {mso-style-name:变量名;
+ mso-style-link:"变量名 Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -1724,83 +1724,83 @@ p.af9, li.af9, div.af9
font-size:10.0pt;
font-family:"Times New Roman","serif";}
span.Char9
- {mso-style-name:"������ Char";
- mso-style-link:������;
- font-family:����;}
+ {mso-style-name:"变量名 Char";
+ mso-style-link:变量名;
+ font-family:宋体;}
p.58, li.58, div.58
- {mso-style-name:ͼ������С5����;
+ {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�ſ���;
+ {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 ����";
+ {mso-style-name:"样式 代码程序 + 左侧\: 9\.26 厘米";
margin:0cm;
margin-bottom:.0001pt;
layout-grid-mode:char;
font-size:10.0pt;
- font-family:����;}
+ font-family:宋体;}
span.5Char4
- {mso-style-name:"���� 5 Char";
- mso-style-link:"���� 5";
+ {mso-style-name:"标题 5 Char";
+ mso-style-link:"标题 5";
font-weight:bold;}
span.6Char0
- {mso-style-name:"���� 6 Char";
- mso-style-link:"���� 6";
+ {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";
+ {mso-style-name:"标题 7 Char";
+ mso-style-link:"标题 7";
font-weight:bold;}
span.8Char
- {mso-style-name:"���� 8 Char";
- mso-style-link:"���� 8";
+ {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";
+ {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:����;}
+ {mso-style-name:"脚注文本 Char";
+ mso-style-link:脚注文本;
+ font-family:宋体;}
span.Charb
- {mso-style-name:"��ע���� Char";
- mso-style-link:��ע����;
- font-family:����;}
+ {mso-style-name:"批注文字 Char";
+ mso-style-link:批注文字;
+ font-family:宋体;}
span.Charc
- {mso-style-name:"ҳü Char";
- mso-style-link:ҳü;
- font-family:����;}
+ {mso-style-name:"页眉 Char";
+ mso-style-link:页眉;
+ font-family:宋体;}
span.Chard
- {mso-style-name:"ҳ�� Char";
- mso-style-link:ҳ��;
- font-family:����;}
+ {mso-style-name:"页脚 Char";
+ mso-style-link:页脚;
+ font-family:宋体;}
span.Chare
- {mso-style-name:"���� Char";
- mso-style-link:����;
- font-family:����;}
+ {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:����;}
+ {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:����;
+ {mso-style-name:"批注主题 Char";
+ mso-style-link:批注主题;
+ font-family:宋体;
font-weight:bold;}
span.Charf0
- {mso-style-name:"��ע���ı� Char";
- mso-style-link:��ע���ı�;
- font-family:����;}
+ {mso-style-name:"批注框文本 Char";
+ mso-style-link:批注框文本;
+ font-family:宋体;}
.MsoChpDefault
{font-size:10.0pt;}
/* Page Definitions */
@@ -1824,7 +1824,7 @@ ul
����程序14-6 linux/include/signal.h 4
#include <sys/types.h> //
-����ͷ�ļ��������˻�����ϵͳ�������͡� 5 6
typedef int sig_atomic_t;
-// �����ź�ԭ�Ӳ������͡� 7
typedef unsigned int sigset_t;
-/* 32 bits */ // �����źż����͡� 8 9
#define _NSIG
-32 // �����ź����� -- 32 �֡� 10
#define NSIG
@@ -1869,185 +1869,185 @@ lang=EN-US> -- 32 �֡� 11 // ������Щ��Linux
-0.12�ں��ж�����źš����а�����POSIX.1Ҫ�������20���źš� // 以下这些是Linux
+0.12内核中定义的信号。其中包括了POSIX.1要求的所有20个信号。 12
#define SIGHUP
1
-// Hang Up -- �ҶϿ����ն˻���̡� 13
#define SIGINT
2
-// Interrupt -- ���Լ��̵��жϡ� 14
#define SIGQUIT
3
-// Quit -- ���Լ��̵��˳��� 15
#define SIGILL
4
-// Illeagle -- �Ƿ�ָ� 16
#define SIGTRAP
5
-// Trap -- ���ٶϵ㡣 17
#define SIGABRT
6
-// Abort -- �쳣������ 18
#define SIGIOT
6
-// IO Trap -- ͬ�ϡ� 19
#define SIGUNUSED
7
-// Unused -- û��ʹ�á� 20
#define SIGFPE
8
-// FPE -- ������������ 21
#define SIGKILL
9
-// Kill -- ǿ�Ƚ�����ֹ�� 22
#define SIGUSR1
10
-// User1 -- �û��ź�1�����̿�ʹ�á� 23
#define SIGSEGV
11
-// Segment Violation -- ��Ч�ڴ����á� 24
#define SIGUSR2
12
-// User2 -- �û��ź�2�����̿�ʹ�á� 25
#define SIGPIPE
13
-// Pipe -- �ܵ�д���������ߡ� 26
#define SIGALRM
14
-// Alarm -- ʵʱ��ʱ�������� 27
#define SIGTERM
15
-// Terminate -- ������ֹ�� 28
#define SIGSTKFLT
16
-// Stack Fault -- ջ������Э���������� 29
#define SIGCHLD
17
-// Child -- �ӽ���ֹͣ����ֹ�� 30
#define SIGCONT
18 //
-Continue -- �ָ����̼���ִ�С� 31
#define SIGSTOP
19
-// Stop -- ֹͣ���̵�ִ�С� 32
#define SIGTSTP
20
-// TTY Stop -- tty����ֹͣ���̣��ɺ��ԡ� 33
#define SIGTTIN
21
-// TTY In -- ��̨�����������롣 34
#define SIGTTOU
22
-// TTY Out -- ��̨������������� 35 36 /*
Ok, I haven't implemented sigactions, but trying to keep headers POSIX */ /* OK���һ�û��ʵ��sigactions�ı��ƣ�����ͷ�ļ�����ϣ������POSIX�� /* OK,我还没有实现sigactions的编制,但在头文件中仍希望遵守POSIX标准 */ // ����ԭע���Ѿ���ʱ����Ϊ��0.12�ں����Ѿ�ʵ����sigaction()��������sigaction�ṹ // 上面原注释已经过时,因为在0.12内核中已经实现了sigaction()。下面是sigaction结构 // sa_flags��־�ֶο�ȡ�ķ��ų���ֵ�� // sa_flags标志字段可取的符号常数值。 37
#define SA_NOCLDSTOP 1
-// ���ӽ��̴���ֹͣ״̬���Ͳ���SIGCHLD������ 38 #define SA_INTERRUPT
-0x20000000 // ϵͳ���ñ��ź��жϺ���������ϵͳ���á� 39
#define SA_NOMASK
-0x40000000 // ����ֹ��ָ�����źŴ������������յ����źš� 40
#define SA_ONESHOT
-0x80000000 // �źž��һ�������ù��ͻָ���Ĭ�ϴ�������� 41 // ���³�������sigprocmask(how, )-- �ı������źż�(������)�����ڸı�ú�������Ϊ�� // 以下常量用于sigprocmask(how, )-- 改变阻塞信号集(屏蔽码)。用于改变该函数的行为。 42
#define SIG_BLOCK
-0 /* for blocking signals */ // �������źż��м��ϸ����źš� 43
#define SIG_UNBLOCK
-1 /* for unblocking signals */ // �������źż���ɾ��ָ���źš� 44
#define SIG_SETMASK
-2 /* for setting the signal mask */ // ���������źż��� 45 // ���������������Ŷ���ʾָ������ֵ�ĺ���ָ�룬�Ҷ���һ��int���Ͳ�����������ָ�� // 以下两个常数符号都表示指向无返回值的函数指针,且都有一个int整型参数。这两个指针 // ֵ�����Ͻ�ʵ���ϲ����ܳ��ֵĺ�����ֵַ������Ϊ����signal�����ĵڶ����������� // 值是逻辑上讲实际上不可能出现的函数地址值。可作为下面signal函数的第二个参数。用 // �ڸ�֪�ںˣ����ں˴����źŻ���Զ��źŵĴ�����ʹ�÷����μ� kernel/signal.c���� // 于告知内核,让内核处理信号或忽略对信号的处理。使用方法参见 kernel/signal.c程序, // ��94--96�С� // 第94--96行。 46
#define SIG_DFL
@@ -2055,14 +2055,14 @@ lang=EN-US> kernel/signal.c����
-// Ĭ���źŴ��������źž������ 47
#define SIG_IGN
((void (*)(int))1) /* ignore signal */
-// �����źŵĴ������� 48 #define SIG_ERR
@@ -2070,46 +2070,46 @@ lang=EN-US> #define SIG_ERR &n
*/
-// �źŴ������ش��� 49 // ���涨���ʼ��������sigaction�ṹ�ź�������ĺꡣ // 下面定义初始操作设置sigaction结构信号屏蔽码的宏。 50
#ifdef notdef 51
#define sigemptyset(mask) ((*(mask) =
-0), 1) // ��mask���㡣 52
#define sigfillset(mask) ((*(mask) =
-~0), 1) // ��mask���б���λ��λ�� 53
#endif 54 // ������sigaction�����ݽṹ�� // 下面是sigaction的数据结构。 // sa_handler�Ƕ�Ӧij�ź�ָ��Ҫ��ȡ���ж��������������SIG_DFL����SIG_IGN�����Ը� // sa_handler是对应某信号指定要采取的行动。可以用上面的SIG_DFL,或SIG_IGN来忽略该 // �źţ�Ҳ������ָ�������źź�����һ��ָ�롣 // 信号,也可以是指向处理该信号函数的一个指针。 // sa_mask�����˶��źŵ������룬���źų���ִ��ʱ����������Щ�źŵĴ����� // sa_mask给出了对信号的屏蔽码,在信号程序执行时将阻塞对这些信号的处理。 // sa_flagsָ���ı��źŴ������̵��źż���������37-40�е�λ��־����ġ� // sa_flags指定改变信号处理过程的信号集。它是由37-40行的位标志定义的。 // sa_restorer�ǻָ�����ָ�룬�ɺ�����Libc�ṩ�����������û�̬��ջ���μ�signal.c�� // sa_restorer是恢复函数指针,由函数库Libc提供,用于清理用户态堆栈。参见signal.c。 // ���⣬�����źŴ������ź�Ҳ��������������ʹ����SA_NOMASK��־�� // 另外,引起触发信号处理的信号也将被阻塞,除非使用了SA_NOMASK标志。 55
struct sigaction { 61 // ����signal����������Ϊ�ź�_sig��װһ�µ��źŴ��������źž��������sigaction() // 下面signal函数用于是为信号_sig安装一新的信号处理程序(信号句柄),与sigaction() // ���ơ��ú�����������������ָ����Ҫ������ź�_sig������һ������������ֵ�ĺ���ָ�� // 类似。该函数含有两个参数:指定需要捕获的信号_sig;具有一个参数且无返回值的函数指针 // _func���ú�������ֵҲ�Ǿ���һ��int���������һ��(int)��������ֵ�ĺ���ָ�룬���� // _func。该函数返回值也是具有一个int参数(最后一个(int))且无返回值的函数指针,它是 // �������źŵ�ԭ��������� // 处理该信号的原处理句柄。 62
void (*signal(int _sig, void (*_func)(int)))(int); // �������������ڷ����źš�kill() �������κν��̻�����鷢���źš�raise()������ǰ�� // 下面两函数用于发送信号。kill() 用于向任何进程或进程组发送信号。raise()用于向当前进 // �����������źš������õȼ���kill(getpid(),sig)���μ�kernel/exit.c��60�С� // 程自身发送信号。其作用等价于kill(getpid(),sig)。参见kernel/exit.c,60行。 63 int
raise(int sig); // �ڽ��̵�����ṹ�У�����һ���Ա���λ��ʾ��ǰ���̴�������32λ�ź��ֶ�signal���⣬ // 在进程的任务结构中,除有一个以比特位表示当前进程待处理的32位信号字段signal以外, // ����һ��ͬ���Ա���λ��ʾ���������ν��̵�ǰ�����źż��������źż������ֶ�blocked�� // 还有一个同样以比特位表示的用于屏蔽进程当前阻塞信号集(屏蔽信号集)的字段blocked, // Ҳ��32λ��ÿ�����ش���һ����Ӧ�������źš��Ľ��̵������źż����������������� // 也是32位,每个比特代表一个对应的阻塞信号。修改进程的屏蔽信号集可以阻塞或解除阻塞 // ��ָ�����źš� ������������������ڲ������������źż�����Ȼ��ʵ�������ܼ��� // 所指定的信号。 以下五个函数就是用于操作进程屏蔽信号集,虽然简单实现起来很简单,但 // ���汾�ں��л�δʵ�֡� // 本版本内核中还未实现。 // ����sigaddset()
-�� sigdelset() ���ڶ��źż��е��źŽ�������ɾ�ġ� sigaddset()�� // 函数sigaddset()
+和 sigdelset() 用于对信号集中的信号进行增、删修改。 sigaddset()用 // ����maskָ����źż�������ָ�����ź�signo��sigdelset��֮������sigemptyset()�� // 于向mask指向的信号集中增加指定的信号signo。sigdelset则反之。函数sigemptyset()和 // sigfillset() ���ڳ�ʼ�����������źż���
-ÿ��������ʹ���źż�ǰ������Ҫʹ���������� // sigfillset() 用于初始化进程屏蔽信号集。
+每个程序在使用信号集前,都需要使用这两个函 // ��֮һ�������źż����г�ʼ���� sigemptyset()����������ε������źţ�Ҳ����Ӧ���е� // 数之一对屏蔽信号集进行初始化。 sigemptyset()用于清空屏蔽的所有信号,也即响应所有的 // �źš�sigfillset()���źż������������źţ�Ҳ�����������źš���Ȼ
-SIGINT�� SIGSTOP // 信号。sigfillset()向信号集中置入所有信号,也即屏蔽所有信号。当然
+SIGINT和 SIGSTOP // �Dz��ܱ����εġ� // 是不能被屏蔽的。 // sigismember()���ڲ���һ��ָ���ź��Ƿ����źż��У�1 - �ǣ�0 - ���ǣ�-1 - �������� // sigismember()用于测试一个指定信号是否在信号集中(1 - 是,0 - 不是,-1 - 出错)。 65 int
sigaddset(sigset_t
@@ -2212,41 +2212,41 @@ style='color:blue'>sigset_t *mask); // ��set�е��źŽ��м�⣬���Ƿ��й�����źš���set�з��ؽ����е�ǰ���������źż��� // 对set中的信号进行检测,看是否有挂起的信号。在set中返回进程中当前被阻塞的信号集。 70 int
sigpending(sigset_t
*set); // ���溯�����ڸı����Ŀǰ���������źż����ź������룩����oldset����NULL����ͨ���� // 下面函数用于改变进程目前被阻塞的信号集(信号屏蔽码)。若oldset不是NULL,则通过其 // ���ؽ��̵�ǰ�����źż�����setָ�벻��NULL�������how��41-43�У�ָʾ�Ľ������� // 返回进程当前屏蔽信号集。若set指针不是NULL,则根据how(41-43行)指示修改进程屏蔽 // �źż��� // 信号集。 71 int
sigprocmask(int how, sigset_t *set, sigset_t
*oldset); // ���溯����
-sigmask ��ʱ�滻���̵��ź�������,Ȼ����ͣ�ý���ֱ���յ�һ���źš����� // 下面函数用
+sigmask 临时替换进程的信号屏蔽码,然后暂停该进程直到收到一个信号。若捕捉 // ��ijһ�źŲ��Ӹ��źŴ��������з��أ���ú���Ҳ���أ������ź��������ָ������õ��� // 到某一信号并从该信号处理程序中返回,则该函数也返回,并且信号屏蔽码会恢复到调用调用 // ǰ��ֵ�� // 前的值。 72 int
sigsuspend(sigset_t
*sigmask); // sigaction() �������ڸı�������յ�ָ���ź�ʱ����ȡ���ж������ı��źŵĴ�������ܡ� // sigaction() 函数用于改变进程在收到指定信号时所采取的行动,即改变信号的处理句柄能。 // �μ���kernel/signal.c�����˵���� // 参见对kernel/signal.c程序的说明。 73 int
sigaction(int sig, struct
- ����程序14-7 linux/include/stdarg.h 3 4
-typedef char *va_list; // ����va_list��һ���ַ�ָ�����͡� 5 /* �������������ΪTYPE��arg�����б���Ҫ��Ŀռ������� /* 下面给出了类型为TYPE的arg参数列表所要求的空间容量。 TYPEҲ������ʹ�ø����͵�һ������ʽ TYPE也可以是使用该类型的一个表达式 */ 8 // ������䶨����ȡ�����TYPE���͵��ֽڳ���ֵ����int����(4)�ı����� // 下面这句定义了取整后的TYPE类型的字节长度值。是int长度(4)的倍数。 9
#define __va_rounded_size( 11 // ����������ʼ��ָ��AP��ʹ��ָ�������Ŀɱ�������ĵ�һ�������� // 下面这个宏初始化指针AP,使其指向传给函数的可变参数表的第一个参数。 // �ڵ�һ�ε���va_arg��va_end֮ǰ���������ȵ���va_start�ꡣ����LASTARG�Ǻ������� // 在第一次调用va_arg或va_end之前,必须首先调用va_start宏。参数LASTARG是函数定义 // �����ұ߲����ı�ʶ������'...'��ߵ�һ����ʶ����AP�ǿɱ����������ָ�룬LASTARG�� // 中最右边参数的标识符,即'...'左边的一个标识符。AP是可变参数表参数指针,LASTARG是 // ���һ��ָ��������&(LASTARG) ����ȡ���ַ������ָ�룩�����Ҹ�ָ�����ַ����͡����� // 最后一个指定参数。&(LASTARG) 用于取其地址(即其指针),并且该指针是字符类型。加上 // LASTARG�Ŀ���ֵ��AP���ǿɱ�������е�һ��������ָ�롣�ú�û�з���ֵ�� // LASTARG的宽度值后AP就是可变参数表中第一个参数的指针。该宏没有返回值。 // ��17���ϵĺ���
-__builtin_saveregs() ����gcc�Ŀ����libgcc2.c�ж���ģ����ڱ��� // 第17行上的函数
+__builtin_saveregs() 是在gcc的库程序libgcc2.c中定义的,用于保存 // �Ĵ����� ���˵���μ� gcc�ֲᡰTarget Description Macros�����С� // 寄存器。 相关说明参见 gcc手册“Target Description Macros”章中“Implementing the // Varargs Macros��С�ڡ� // Varargs Macros”小节。 12
#ifndef __sparc__ // ����ú����ڱ����ú������һ���������ء�va_end������APʹ�������µ��� // 下面该宏用于被调用函数完成一次正常返回。va_end可以修改AP使其在重新调用 // va_start֮ǰ���ܱ�ʹ�á�va_end������va_arg�������еIJ������ٱ����á� // va_start之前不能被使用。va_end必须在va_arg读完所有的参数后再被调用。 21
void va_end (va_list);
-/* Defined in gnulib */ /* ��gnulib�ж���/* Defined in gnulib */ /* 在gnulib中定义 */ 22
@@ -1951,19 +1951,19 @@ lang=EN-US> */ 23 // �����������չ����ʽʹ������һ�������ݲ���������ͬ�����ͺ�ֵ�� // 下面宏用于扩展表达式使其与下一个被传递参数具有相同的类型和值。 // ����ȱʡֵ��va_arg �������ַ��������ַ��������͡��ڵ�һ��ʹ�� va_argʱ������ // 对于缺省值,va_arg 可以用字符、无符号字符和浮点类型。在第一次使用 va_arg时,它返 // �ر��еĵ�һ��������������ÿ�ε��ö������ر��е���һ������������ͨ���ȷ���AP��Ȼ // 回表中的第一个参数,后续的每次调用都将返回表中的下一个参数。这是通过先访问AP,然 // ��������ֵ��ָ����һ����ʵ�ֵġ�va_arg ʹ��TYPE ����ɷ��ʺͶ�λ��һ�ÿ����һ // 后增加其值以指向下一项来实现的。va_arg 使用TYPE 来完成访问和定位下一项,每调用一 // ��va_arg��������AP��ָʾ���е���һ������ // 次va_arg,它就修改AP以指示表中的下一参数。 24
#define va_arg(AP,
����
+style='font-family:黑体'>程序
14-8 linux/include/stddef.h 6
typedef long ptrdiff_t;
-// ����ָ�������������͡� 7 #endif 11
typedef unsigned long size_t;
-// sizeof���ص����͡� 12 #endif 15
#define NULL ((void *)0)
-// ��ָ�롣 16 // ���涨����һ������ij��Ա��������ƫ��λ�õĺꡣʹ�øú����ȷ��һ����Ա���ֶΣ��� // �������Ľṹ�����дӽṹ��ʼ��������ֽ�ƫ��������Ľ��������Ϊ size_t �������� // ������ʽ��������һ�������÷���((TYPE *)0)�ǽ�һ������0����Ͷ�䣨type cast������ // �ݶ���ָ�����ͣ�Ȼ���ڸý���Ͻ������㡣 17
diff --git a/Book-Lite/code-list/html/P14-9.html b/Book-Lite/code-list/html/P14-9.html
index eb9cc5a..eec3ff1 100644
--- a/Book-Lite/code-list/html/P14-9.html
+++ b/Book-Lite/code-list/html/P14-9.html
@@ -11,24 +11,24 @@
{font-family:Wingdings;
panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
- {font-family:����;
+ {font-family:宋体;
panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
- {font-family:����;
+ {font-family:黑体;
panose-1:2 1 6 9 6 1 1 1 1 1;}
@font-face
- {font-family:����;
+ {font-family:黑体;
panose-1:2 1 6 9 6 1 1 1 1 1;}
@font-face
- {font-family:����С���μ���;}
+ {font-family:方正小标宋简体;}
@font-face
- {font-family:"\@����";
+ {font-family:"\@黑体";
panose-1:2 1 6 9 6 1 1 1 1 1;}
@font-face
- {font-family:"\@����";
+ {font-family:"\@宋体";
panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
- {font-family:"\@����С���μ���";}
+ {font-family:"\@方正小标宋简体";}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
@@ -36,9 +36,9 @@
text-align:justify;
text-justify:inter-ideograph;
font-size:10.5pt;
- font-family:����;}
+ font-family:宋体;}
h1
- {mso-style-link:"���� 1 Char";
+ {mso-style-link:"标题 1 Char";
margin-top:17.0pt;
margin-right:0cm;
margin-bottom:16.5pt;
@@ -50,7 +50,7 @@ h1
font-family:"Times New Roman","serif";
font-weight:bold;}
h2
- {mso-style-link:"���� 2 Char";
+ {mso-style-link:"标题 2 Char";
margin-top:13.0pt;
margin-right:0cm;
margin-bottom:13.0pt;
@@ -63,7 +63,7 @@ h2
font-family:"Arial","sans-serif";
font-weight:bold;}
h3
- {mso-style-link:"���� 3 Char";
+ {mso-style-link:"标题 3 Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -74,7 +74,7 @@ h3
font-family:"Arial","sans-serif";
font-weight:bold;}
h4
- {mso-style-link:"���� 4 Char";
+ {mso-style-link:"标题 4 Char";
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
@@ -88,7 +88,7 @@ h4
font-family:"Arial","sans-serif";
font-weight:bold;}
h5
- {mso-style-link:"���� 5 Char";
+ {mso-style-link:"标题 5 Char";
margin-top:14.0pt;
margin-right:0cm;
margin-bottom:14.5pt;
@@ -102,7 +102,7 @@ h5
font-family:"Times New Roman","serif";
font-weight:bold;}
h6
- {mso-style-link:"���� 6 Char";
+ {mso-style-link:"标题 6 Char";
margin-top:12.0pt;
margin-right:0cm;
margin-bottom:3.2pt;
@@ -116,7 +116,7 @@ h6
font-family:"Arial","sans-serif";
font-weight:bold;}
p.MsoHeading7, li.MsoHeading7, div.MsoHeading7
- {mso-style-link:"���� 7 Char";
+ {mso-style-link:"标题 7 Char";
margin-top:12.0pt;
margin-right:0cm;
margin-bottom:3.2pt;
@@ -130,7 +130,7 @@ p.MsoHeading7, li.MsoHeading7, div.MsoHeading7
font-family:"Times New Roman","serif";
font-weight:bold;}
p.MsoHeading8, li.MsoHeading8, div.MsoHeading8
- {mso-style-link:"���� 8 Char";
+ {mso-style-link:"标题 8 Char";
margin-top:12.0pt;
margin-right:0cm;
margin-bottom:3.2pt;
@@ -143,7 +143,7 @@ p.MsoHeading8, li.MsoHeading8, div.MsoHeading8
font-size:12.0pt;
font-family:"Arial","sans-serif";}
p.MsoHeading9, li.MsoHeading9, div.MsoHeading9
- {mso-style-link:"���� 9 Char";
+ {mso-style-link:"标题 9 Char";
margin-top:12.0pt;
margin-right:0cm;
margin-bottom:3.2pt;
@@ -331,20 +331,20 @@ p.MsoToc9, li.MsoToc9, div.MsoToc9
font-size:9.0pt;
font-family:"Times New Roman","serif";}
p.MsoFootnoteText, li.MsoFootnoteText, div.MsoFootnoteText
- {mso-style-link:"��ע�ı� Char";
+ {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";
+ {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";
+ {mso-style-link:"页眉 Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
@@ -354,14 +354,14 @@ p.MsoHeader, li.MsoHeader, div.MsoHeader
font-size:9.0pt;
font-family:"Times New Roman","serif";}
p.MsoFooter, li.MsoFooter, div.MsoFooter
- {mso-style-link:"ҳ�� Char";
+ {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";
+ {mso-style-name:"索引标题\,索引类目\,索引类目1\,索引类目2";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -412,7 +412,7 @@ p.MsoList4, li.MsoList4, div.MsoList4
font-size:10.0pt;
font-family:"Times New Roman","serif";}
p.MsoDate, li.MsoDate, div.MsoDate
- {mso-style-link:"���� Char";
+ {mso-style-link:"日期 Char";
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
@@ -423,36 +423,36 @@ p.MsoDate, li.MsoDate, div.MsoDate
font-size:10.0pt;
font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
- {mso-style-name:"������\,��������";
+ {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";
+ {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";
+ {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:����;}
+ {font-family:黑体;}
p.MsoCommentSubject, li.MsoCommentSubject, div.MsoCommentSubject
- {mso-style-link:"��ע���� Char";
+ {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";
+ {mso-style-link:"批注框文本 Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -460,7 +460,7 @@ p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
font-size:9.0pt;
font-family:"Times New Roman","serif";}
p.1, li.1, div.1
- {mso-style-name:��ʽ1;
+ {mso-style-name:样式1;
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
@@ -471,30 +471,30 @@ p.1, li.1, div.1
font-size:10.0pt;
font-family:"Times New Roman","serif";}
p.a, li.a, div.a
- {mso-style-name:�������;
- mso-style-link:"������� Char";
+ {mso-style-name:代码程序;
+ mso-style-link:"代码程序 Char";
margin:0cm;
margin-bottom:.0001pt;
font-size:10.0pt;
- font-family:����;}
+ font-family:宋体;}
span.Char
- {mso-style-name:"������� Char";
- mso-style-link:�������;
- font-family:����;}
+ {mso-style-name:"代码程序 Char";
+ mso-style-link:代码程序;
+ font-family:宋体;}
p.a0, li.a0, div.a0
- {mso-style-name:ͼ˵��;
- mso-style-link:"ͼ˵�� Char";
+ {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:����;}
+ {mso-style-name:"图说明 Char";
+ mso-style-link:图说明;
+ font-family:宋体;}
p.0, li.0, div.0
- {mso-style-name:����0;
+ {mso-style-name:封面0;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
@@ -502,7 +502,7 @@ p.0, li.0, div.0
font-family:"Times New Roman","serif";
font-weight:bold;}
p.10, li.10, div.10
- {mso-style-name:����1;
+ {mso-style-name:封面1;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
@@ -510,25 +510,25 @@ p.10, li.10, div.10
font-family:"Times New Roman","serif";
font-weight:bold;}
p.11, li.11, div.11
- {mso-style-name:�DZ���1;
+ {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-family:宋体;
font-weight:bold;}
p.a1, li.a1, div.a1
- {mso-style-name:�ı�����;
+ {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";
+ {mso-style-name:"图中文字3 Char Char";
+ mso-style-link:"图中文字3 Char Char Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
@@ -536,11 +536,11 @@ p.3CharChar, li.3CharChar, div.3CharChar
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:����;}
+ {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;
+ {mso-style-name:邮件post;
margin:0cm;
margin-bottom:.0001pt;
text-align:right;
@@ -548,7 +548,7 @@ p.post, li.post, div.post
font-size:10.0pt;
font-family:"Times New Roman","serif";}
p.3, li.3, div.3
- {mso-style-name:ͼ������3;
+ {mso-style-name:图中字体3;
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -556,44 +556,44 @@ p.3, li.3, div.3
font-size:10.0pt;
font-family:"Times New Roman","serif";}
span.3CharChar1CharCharChar
- {mso-style-name:"ͼ������3 Char Char1 Char Char Char";
- font-family:����;}
+ {mso-style-name:"图中文字3 Char Char1 Char Char Char";
+ font-family:宋体;}
span.3CharChar1CharChar
- {mso-style-name:"ͼ������3 Char Char1 Char Char";
- font-family:����;}
+ {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";
+ {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:����;}
+ {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";
+ {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:����;}
+ {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";
+ {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��;
+ {mso-style-name:图中文字小5号;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
@@ -601,28 +601,28 @@ p.5, li.5, div.5
font-size:9.0pt;
font-family:"Times New Roman","serif";}
p.2, li.2, div.2
- {mso-style-name:�������2;
+ {mso-style-name:代码程序2;
margin:0cm;
margin-bottom:.0001pt;
font-size:10.0pt;
- font-family:����;}
+ font-family:宋体;}
p.20, li.20, div.20
- {mso-style-name:ͼ˵��2;
+ {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;
+ {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";
+ {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;
@@ -630,18 +630,18 @@ p.3CharCharCharCharChar, li.3CharCharCharCharChar, div.3CharCharCharCharChar
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:����;}
+ {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:ͼ����;
+ {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";
+ {mso-style-name:"样式 标题 1 + 居中1";
margin-right:0cm;
margin-left:0cm;
text-align:center;
@@ -650,32 +650,32 @@ p.110, li.110, div.110
font-family:"Times New Roman","serif";
font-weight:bold;}
span.1Char
- {mso-style-name:"���� 1 Char";
- mso-style-link:"���� 1";
+ {mso-style-name:"标题 1 Char";
+ mso-style-link:"标题 1";
font-weight:bold;}
p.22, li.22, div.22
- {mso-style-name:"��ʽ �б� 2 + ����";
+ {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;
+ {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��;
+ {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;
+ {mso-style-name:样式11;
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
@@ -686,20 +686,20 @@ p.111, li.111, div.111
font-size:10.0pt;
font-family:"Times New Roman","serif";}
p.12, li.12, div.12
- {mso-style-name:�������1;
+ {mso-style-name:代码程序1;
margin:0cm;
margin-bottom:.0001pt;
font-size:10.0pt;
- font-family:����;}
+ font-family:宋体;}
p.13, li.13, div.13
- {mso-style-name:ͼ˵��1;
+ {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;
+ {mso-style-name:封面01;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
@@ -707,7 +707,7 @@ p.01, li.01, div.01
font-family:"Times New Roman","serif";
font-weight:bold;}
p.112, li.112, div.112
- {mso-style-name:����11;
+ {mso-style-name:封面11;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
@@ -715,24 +715,24 @@ p.112, li.112, div.112
font-family:"Times New Roman","serif";
font-weight:bold;}
p.113, li.113, div.113
- {mso-style-name:�DZ���11;
+ {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-family:宋体;
font-weight:bold;}
p.14, li.14, div.14
- {mso-style-name:�ı�����1;
+ {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";
+ {mso-style-name:"图中文字3 Char1";
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
@@ -740,7 +740,7 @@ p.3Char1, li.3Char1, div.3Char1
font-size:8.0pt;
font-family:"Times New Roman","serif";}
p.post1, li.post1, div.post1
- {mso-style-name:�ʼ�post1;
+ {mso-style-name:邮件post1;
margin:0cm;
margin-bottom:.0001pt;
text-align:right;
@@ -748,7 +748,7 @@ p.post1, li.post1, div.post1
font-size:10.0pt;
font-family:"Times New Roman","serif";}
p.31, li.31, div.31
- {mso-style-name:ͼ������31;
+ {mso-style-name:图中字体31;
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -756,35 +756,35 @@ p.31, li.31, div.31
font-size:10.0pt;
font-family:"Times New Roman","serif";}
p.5Char1, li.5Char1, div.5Char1
- {mso-style-name:"ͼ������5�� Char1";
+ {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";
+ {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";
+ {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;
+ {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;
+ {mso-style-name:样式12;
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
@@ -795,7 +795,7 @@ p.120, li.120, div.120
font-size:10.0pt;
font-family:"Times New Roman","serif";}
p.02, li.02, div.02
- {mso-style-name:����02;
+ {mso-style-name:封面02;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
@@ -803,7 +803,7 @@ p.02, li.02, div.02
font-family:"Times New Roman","serif";
font-weight:bold;}
p.121, li.121, div.121
- {mso-style-name:����12;
+ {mso-style-name:封面12;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
@@ -811,17 +811,17 @@ p.121, li.121, div.121
font-family:"Times New Roman","serif";
font-weight:bold;}
p.122, li.122, div.122
- {mso-style-name:�DZ���12;
+ {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-family:宋体;
font-weight:bold;}
p.3Char2, li.3Char2, div.3Char2
- {mso-style-name:"ͼ������3 Char2";
+ {mso-style-name:"图中文字3 Char2";
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
@@ -829,7 +829,7 @@ p.3Char2, li.3Char2, div.3Char2
font-size:8.0pt;
font-family:"Times New Roman","serif";}
p.post2, li.post2, div.post2
- {mso-style-name:�ʼ�post2;
+ {mso-style-name:邮件post2;
margin:0cm;
margin-bottom:.0001pt;
text-align:right;
@@ -837,7 +837,7 @@ p.post2, li.post2, div.post2
font-size:10.0pt;
font-family:"Times New Roman","serif";}
p.32, li.32, div.32
- {mso-style-name:ͼ������32;
+ {mso-style-name:图中字体32;
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -845,21 +845,21 @@ p.32, li.32, div.32
font-size:10.0pt;
font-family:"Times New Roman","serif";}
p.5Char2, li.5Char2, div.5Char2
- {mso-style-name:"ͼ������С5�� Char2";
+ {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;
+ {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";
+ {mso-style-name:"图中文字3 Char Char Char Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
@@ -867,7 +867,7 @@ p.3CharCharCharChar, li.3CharCharCharChar, div.3CharCharCharChar
font-size:8.0pt;
font-family:"Times New Roman","serif";}
p.130, li.130, div.130
- {mso-style-name:��ʽ13;
+ {mso-style-name:样式13;
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
@@ -878,13 +878,13 @@ p.130, li.130, div.130
font-size:10.0pt;
font-family:"Times New Roman","serif";}
p.30, li.30, div.30
- {mso-style-name:�������3;
+ {mso-style-name:代码程序3;
margin:0cm;
margin-bottom:.0001pt;
font-size:10.0pt;
- font-family:����;}
+ font-family:宋体;}
p.03, li.03, div.03
- {mso-style-name:����03;
+ {mso-style-name:封面03;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
@@ -892,7 +892,7 @@ p.03, li.03, div.03
font-family:"Times New Roman","serif";
font-weight:bold;}
p.131, li.131, div.131
- {mso-style-name:����13;
+ {mso-style-name:封面13;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
@@ -900,24 +900,24 @@ p.131, li.131, div.131
font-family:"Times New Roman","serif";
font-weight:bold;}
p.132, li.132, div.132
- {mso-style-name:�DZ���13;
+ {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-family:宋体;
font-weight:bold;}
p.33, li.33, div.33
- {mso-style-name:�ı�����3;
+ {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";
+ {mso-style-name:"图中文字3 Char3";
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
@@ -925,7 +925,7 @@ p.3Char3, li.3Char3, div.3Char3
font-size:8.0pt;
font-family:"Times New Roman","serif";}
p.post3, li.post3, div.post3
- {mso-style-name:�ʼ�post3;
+ {mso-style-name:邮件post3;
margin:0cm;
margin-bottom:.0001pt;
text-align:right;
@@ -933,7 +933,7 @@ p.post3, li.post3, div.post3
font-size:10.0pt;
font-family:"Times New Roman","serif";}
p.330, li.330, div.330
- {mso-style-name:ͼ������33;
+ {mso-style-name:图中字体33;
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -941,36 +941,36 @@ p.330, li.330, div.330
font-size:10.0pt;
font-family:"Times New Roman","serif";}
p.5Char20, li.5Char20, div.5Char20
- {mso-style-name:"ͼ������5�� Char2";
+ {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";
+ {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";
+ {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;
+ {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";
+ {mso-style-name:"图中文字3 Char";
+ mso-style-link:"图中文字3 Char Char5";
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
@@ -978,11 +978,11 @@ p.3Char, li.3Char, div.3Char
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:����;}
+ {mso-style-name:"图中文字3 Char Char5";
+ mso-style-link:"图中文字3 Char";
+ font-family:宋体;}
p.54, li.54, div.54
- {mso-style-name:ͼ������С5����;
+ {mso-style-name:图中文字小5紧密;
margin:0cm;
margin-bottom:.0001pt;
line-height:9.0pt;
@@ -990,7 +990,7 @@ p.54, li.54, div.54
font-size:9.0pt;
font-family:"Times New Roman","serif";}
p.24, li.24, div.24
- {mso-style-name:����2�Ŵ�����;
+ {mso-style-name:居中2号粗宋体;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
@@ -998,7 +998,7 @@ p.24, li.24, div.24
font-family:"Times New Roman","serif";
font-weight:bold;}
p.15, li.15, div.15
- {mso-style-name:"��ʽ ���� 1 + ����";
+ {mso-style-name:"样式 标题 1 + 居中";
margin-top:17.0pt;
margin-right:0cm;
margin-bottom:16.5pt;
@@ -1009,7 +1009,7 @@ p.15, li.15, div.15
font-family:"Times New Roman","serif";
font-weight:bold;}
p.25, li.25, div.25
- {mso-style-name:"��ʽ ���� 2 + �о�\: �����о�";
+ {mso-style-name:"样式 标题 2 + 行距\: 单倍行距";
margin-top:13.0pt;
margin-right:0cm;
margin-bottom:13.0pt;
@@ -1022,33 +1022,33 @@ p.25, li.25, div.25
font-family:"Arial","sans-serif";
font-weight:bold;}
span.2Char
- {mso-style-name:"���� 2 Char";
- mso-style-link:"���� 2";
+ {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;
+ {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;
+ {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;
+ {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;
+ {mso-style-name:列表4;
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
@@ -1059,166 +1059,166 @@ p.40, li.40, div.40
font-size:10.0pt;
font-family:"Times New Roman","serif";}
p.41, li.41, div.41
- {mso-style-name:��4;
+ {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;
+ {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;
+ {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;
+ {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;
+ {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;
+ {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;
+ {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;
+ {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;
+ {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;
+ {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;
+ {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;
+ {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;
+ {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;
+ {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;
+ {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;
+ {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;
+ {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;
+ {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;
+ {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;
+ {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";
+ {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:����;}
+ {mso-style-name:"图说明13 Char";
+ mso-style-link:图说明13;
+ font-family:宋体;}
p.134, li.134, div.134
- {mso-style-name:�б�13;
+ {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;
+ {mso-style-name:附录2;
margin-top:13.0pt;
margin-right:0cm;
margin-bottom:13.0pt;
@@ -1230,7 +1230,7 @@ p.26, li.26, div.26
font-family:"Arial","sans-serif";
font-weight:bold;}
p.36, li.36, div.36
- {mso-style-name:��¼3;
+ {mso-style-name:附录3;
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -1240,12 +1240,12 @@ p.36, li.36, div.36
font-family:"Arial","sans-serif";
font-weight:bold;}
span.3Char0
- {mso-style-name:"���� 3 Char";
- mso-style-link:"���� 3";
+ {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;
+ {mso-style-name:附录1;
margin-top:17.0pt;
margin-right:0cm;
margin-bottom:16.5pt;
@@ -1256,14 +1256,14 @@ p.16, li.16, div.16
font-family:"Times New Roman","serif";
font-weight:bold;}
p.17, li.17, div.17
- {mso-style-name:��¼��1;
+ {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;
+ {mso-style-name:附录4;
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -1273,19 +1273,19 @@ p.42, li.42, div.42
font-family:"Arial","sans-serif";
font-weight:bold;}
span.4Char
- {mso-style-name:"���� 4 Char";
- mso-style-link:"���� 4";
+ {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:��¼ͼ˵��;
+ {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;
+ {mso-style-name:序标题2;
margin-top:13.0pt;
margin-right:0cm;
margin-bottom:13.0pt;
@@ -1298,7 +1298,7 @@ p.27, li.27, div.27
font-family:"Arial","sans-serif";
font-weight:bold;}
p.a4, li.a4, div.a4
- {mso-style-name:�����;
+ {mso-style-name:参考标题;
margin-top:7.8pt;
margin-right:0cm;
margin-bottom:7.8pt;
@@ -1309,7 +1309,7 @@ p.a4, li.a4, div.a4
font-family:"Times New Roman","serif";
font-weight:bold;}
p.18, li.18, div.18
- {mso-style-name:��������1;
+ {mso-style-name:索引标题1;
margin-top:7.8pt;
margin-right:0cm;
margin-bottom:7.8pt;
@@ -1320,7 +1320,7 @@ p.18, li.18, div.18
font-family:"Times New Roman","serif";
font-weight:bold;}
p.19, li.19, div.19
- {mso-style-name:�б�1;
+ {mso-style-name:列表1;
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
@@ -1331,7 +1331,7 @@ p.19, li.19, div.19
font-size:10.0pt;
font-family:"Times New Roman","serif";}
p.1a, li.1a, div.1a
- {mso-style-name:��1;
+ {mso-style-name:表1;
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
@@ -1342,14 +1342,14 @@ p.1a, li.1a, div.1a
font-size:10.0pt;
font-family:"Times New Roman","serif";}
p.37, li.37, div.37
- {mso-style-name:ͼ˵��3;
+ {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��;
+ {mso-style-name:表中字体6号;
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -1358,8 +1358,8 @@ p.62, li.62, div.62
font-size:7.5pt;
font-family:"Times New Roman","serif";}
p.a5, li.a5, div.a5
- {mso-style-name:���Ĵ���;
- mso-style-link:"���Ĵ��� Char";
+ {mso-style-name:正文代码;
+ mso-style-link:"正文代码 Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -1367,11 +1367,11 @@ p.a5, li.a5, div.a5
font-size:10.0pt;
font-family:"Times New Roman","serif";}
span.Char1
- {mso-style-name:"���Ĵ��� Char";
- mso-style-link:���Ĵ���;
- font-family:����;}
+ {mso-style-name:"正文代码 Char";
+ mso-style-link:正文代码;
+ font-family:宋体;}
p.43, li.43, div.43
- {mso-style-name:"��ʽ ���� 4 +";
+ {mso-style-name:"样式 标题 4 +";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -1381,7 +1381,7 @@ p.43, li.43, div.43
font-family:"Arial","sans-serif";
font-weight:bold;}
p.140, li.140, div.140
- {mso-style-name:��14;
+ {mso-style-name:表14;
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
@@ -1392,8 +1392,8 @@ p.140, li.140, div.140
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";
+ {mso-style-name:图说明14;
+ mso-style-link:"图说明14 Char";
margin-top:0cm;
margin-right:0cm;
margin-bottom:0cm;
@@ -1404,11 +1404,11 @@ p.141, li.141, div.141
font-size:10.0pt;
font-family:"Times New Roman","serif";}
span.14Char
- {mso-style-name:"ͼ˵��14 Char";
- mso-style-link:ͼ˵��14;
- font-family:����;}
+ {mso-style-name:"图说明14 Char";
+ mso-style-link:图说明14;
+ font-family:宋体;}
p.a6, li.a6, div.a6
- {mso-style-name:�ļ�Ŀ¼��;
+ {mso-style-name:文件目录表;
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -1416,8 +1416,8 @@ p.a6, li.a6, div.a6
font-size:10.0pt;
font-family:"Times New Roman","serif";}
p.a7, li.a7, div.a7
- {mso-style-name:"��ʽ ���� +";
- mso-style-link:"��ʽ ���� + Char";
+ {mso-style-name:"样式 正文 +";
+ mso-style-link:"样式 正文 + Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -1425,39 +1425,39 @@ p.a7, li.a7, div.a7
font-size:10.0pt;
font-family:"Times New Roman","serif";}
span.Char2
- {mso-style-name:"��ʽ ���� + Char";
- mso-style-link:"��ʽ ���� +";
+ {mso-style-name:"样式 正文 + Char";
+ mso-style-link:"样式 正文 +";
font-family:"Times New Roman","serif";}
p.a8, li.a8, div.a8
- {mso-style-name:������ע;
+ {mso-style-name:表格题注;
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:10.5pt;
- font-family:����;}
+ font-family:宋体;}
p.a9, li.a9, div.a9
- {mso-style-name:�б���ע;
+ {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:ͼ��ע;
+ {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:������ע;
+ {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:��������;
+ {mso-style-name:框中文字;
margin-top:0cm;
margin-right:21.0pt;
margin-bottom:0cm;
@@ -1470,7 +1470,7 @@ p.ac, li.ac, div.ac
font-size:9.0pt;
font-family:"Times New Roman","serif";}
p.125, li.125, div.125
- {mso-style-name:"��ʽ ���� 1 + ����2";
+ {mso-style-name:"样式 标题 1 + 居中2";
margin-top:17.0pt;
margin-right:0cm;
margin-bottom:16.5pt;
@@ -1481,14 +1481,14 @@ p.125, li.125, div.125
font-family:"Times New Roman","serif";
font-weight:bold;}
p.ad, li.ad, div.ad
- {mso-style-name:"��ʽ ��ע + ���� ��� ����";
+ {mso-style-name:"样式 题注 + 宋体 五号 居中";
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
font-size:10.5pt;
- font-family:����;}
+ font-family:黑体;}
p.1b, li.1b, div.1b
- {mso-style-name:�����1;
+ {mso-style-name:序标题1;
margin-top:17.0pt;
margin-right:0cm;
margin-bottom:16.5pt;
@@ -1499,16 +1499,16 @@ p.1b, li.1b, div.1b
font-family:"Times New Roman","serif";
font-weight:bold;}
p.38, li.38, div.38
- {mso-style-name:�����3;
+ {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:����С���μ���;}
+ font-family:方正小标宋简体;}
p.63, li.63, div.63
- {mso-style-name:��������6��;
+ {mso-style-name:表中文字6号;
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -1516,7 +1516,7 @@ p.63, li.63, div.63
font-size:7.5pt;
font-family:"Times New Roman","serif";}
p.64, li.64, div.64
- {mso-style-name:ͼ������6�������;
+ {mso-style-name:图中文字6号左对齐;
margin:0cm;
margin-bottom:.0001pt;
line-height:10.0pt;
@@ -1524,8 +1524,8 @@ p.64, li.64, div.64
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";
+ {mso-style-name:图中文字6号;
+ mso-style-link:"图中文字6号 Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
@@ -1534,11 +1534,11 @@ p.65, li.65, div.65
font-size:7.5pt;
font-family:"Times New Roman","serif";}
span.6Char
- {mso-style-name:"ͼ������6�� Char";
- mso-style-link:ͼ������6��;
- font-family:����;}
+ {mso-style-name:"图中文字6号 Char";
+ mso-style-link:图中文字6号;
+ font-family:宋体;}
p.ae, li.ae, div.ae
- {mso-style-name:ͼ��;
+ {mso-style-name:图标;
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -1546,7 +1546,7 @@ p.ae, li.ae, div.ae
font-size:10.0pt;
font-family:"Times New Roman","serif";}
p.28, li.28, div.28
- {mso-style-name:ͼ��2;
+ {mso-style-name:图标2;
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -1554,7 +1554,7 @@ p.28, li.28, div.28
font-size:10.0pt;
font-family:"Times New Roman","serif";}
p.af, li.af, div.af
- {mso-style-name:ϰ�����;
+ {mso-style-name:习题标题;
margin-top:6.0pt;
margin-right:0cm;
margin-bottom:0cm;
@@ -1564,9 +1564,9 @@ p.af, li.af, div.af
text-justify:inter-ideograph;
page-break-after:avoid;
font-size:14.0pt;
- font-family:����;}
+ font-family:黑体;}
p.1c, li.1c, div.1c
- {mso-style-name:���ֱ��1;
+ {mso-style-name:部分编号1;
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -1574,14 +1574,14 @@ p.1c, li.1c, div.1c
font-size:16.0pt;
font-family:"Times New Roman","serif";}
p.af0, li.af0, div.af0
- {mso-style-name:������;
+ {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:"��ʽ ��ע + ����";
+ {mso-style-name:"样式 题注 + 居中";
margin:0cm;
margin-bottom:.0001pt;
text-align:center;
@@ -1630,7 +1630,7 @@ p.RightText, li.RightText, div.RightText
font-size:9.0pt;
font-family:"Times New Roman","serif";}
p.af2, li.af2, div.af2
- {mso-style-name:����������;
+ {mso-style-name:表中文字小五;
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -1638,8 +1638,8 @@ p.af2, li.af2, div.af2
font-size:9.0pt;
font-family:"Times New Roman","serif";}
p.af3, li.af3, div.af3
- {mso-style-name:�ؼ���;
- mso-style-link:"�ؼ��� Char";
+ {mso-style-name:关键词;
+ mso-style-link:"关键词 Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -1647,12 +1647,12 @@ p.af3, li.af3, div.af3
font-size:10.0pt;
font-family:"Times New Roman","serif";}
span.Char3
- {mso-style-name:"�ؼ��� Char";
- mso-style-link:�ؼ���;
- font-family:����;}
+ {mso-style-name:"关键词 Char";
+ mso-style-link:关键词;
+ font-family:宋体;}
p.af4, li.af4, div.af4
- {mso-style-name:���;
- mso-style-link:"��� Char";
+ {mso-style-name:文件名;
+ mso-style-link:"文件名 Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -1660,12 +1660,12 @@ p.af4, li.af4, div.af4
font-size:10.0pt;
font-family:"Times New Roman","serif";}
span.Char4
- {mso-style-name:"��� Char";
- mso-style-link:���;
- font-family:����;}
+ {mso-style-name:"文件名 Char";
+ mso-style-link:文件名;
+ font-family:宋体;}
p.af5, li.af5, div.af5
- {mso-style-name:ѡ��;
- mso-style-link:"ѡ�� Char";
+ {mso-style-name:选项;
+ mso-style-link:"选项 Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -1673,12 +1673,12 @@ p.af5, li.af5, div.af5
font-size:10.0pt;
font-family:"Times New Roman","serif";}
span.Char5
- {mso-style-name:"ѡ�� Char";
- mso-style-link:ѡ��;
- font-family:����;}
+ {mso-style-name:"选项 Char";
+ mso-style-link:选项;
+ font-family:宋体;}
p.af6, li.af6, div.af6
- {mso-style-name:������;
- mso-style-link:"������ Char";
+ {mso-style-name:命令行;
+ mso-style-link:"命令行 Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -1686,12 +1686,12 @@ p.af6, li.af6, div.af6
font-size:10.0pt;
font-family:"Times New Roman","serif";}
span.Char6
- {mso-style-name:"������ Char";
- mso-style-link:������;
- font-family:����;}
+ {mso-style-name:"命令行 Char";
+ mso-style-link:命令行;
+ font-family:宋体;}
p.af7, li.af7, div.af7
- {mso-style-name:������;
- mso-style-link:"������ Char";
+ {mso-style-name:函数名;
+ mso-style-link:"函数名 Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -1699,12 +1699,12 @@ p.af7, li.af7, div.af7
font-size:10.0pt;
font-family:"Times New Roman","serif";}
span.Char7
- {mso-style-name:"������ Char";
- mso-style-link:������;
- font-family:����;}
+ {mso-style-name:"函数名 Char";
+ mso-style-link:函数名;
+ font-family:宋体;}
p.af8, li.af8, div.af8
- {mso-style-name:�Ĵ�����;
- mso-style-link:"�Ĵ����� Char";
+ {mso-style-name:寄存器名;
+ mso-style-link:"寄存器名 Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -1712,12 +1712,12 @@ p.af8, li.af8, div.af8
font-size:10.0pt;
font-family:"Times New Roman","serif";}
span.Char8
- {mso-style-name:"�Ĵ����� Char";
- mso-style-link:�Ĵ�����;
+ {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";
+ {mso-style-name:变量名;
+ mso-style-link:"变量名 Char";
margin:0cm;
margin-bottom:.0001pt;
text-align:justify;
@@ -1725,95 +1725,95 @@ p.af9, li.af9, div.af9
font-size:10.0pt;
font-family:"Times New Roman","serif";}
span.Char9
- {mso-style-name:"������ Char";
- mso-style-link:������;
- font-family:����;}
+ {mso-style-name:"变量名 Char";
+ mso-style-link:变量名;
+ font-family:宋体;}
p.58, li.58, div.58
- {mso-style-name:ͼ������С5����;
+ {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�ſ���;
+ {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 ����";
+ {mso-style-name:"样式 代码程序 + 左侧\: 9\.26 厘米";
margin:0cm;
margin-bottom:.0001pt;
layout-grid-mode:char;
font-size:10.0pt;
- font-family:����;}
+ font-family:宋体;}
span.5Char4
- {mso-style-name:"���� 5 Char";
- mso-style-link:"���� 5";
+ {mso-style-name:"标题 5 Char";
+ mso-style-link:"标题 5";
font-weight:bold;}
span.6Char0
- {mso-style-name:"���� 6 Char";
- mso-style-link:"���� 6";
+ {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";
+ {mso-style-name:"标题 7 Char";
+ mso-style-link:"标题 7";
font-weight:bold;}
span.8Char
- {mso-style-name:"���� 8 Char";
- mso-style-link:"���� 8";
+ {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";
+ {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:����;}
+ {mso-style-name:"脚注文本 Char";
+ mso-style-link:脚注文本;
+ font-family:宋体;}
span.Charb
- {mso-style-name:"��ע���� Char";
- mso-style-link:��ע����;
- font-family:����;}
+ {mso-style-name:"批注文字 Char";
+ mso-style-link:批注文字;
+ font-family:宋体;}
span.Charc
- {mso-style-name:"ҳü Char";
- mso-style-link:ҳü;
- font-family:����;}
+ {mso-style-name:"页眉 Char";
+ mso-style-link:页眉;
+ font-family:宋体;}
span.Chard
- {mso-style-name:"ҳ�� Char";
- mso-style-link:ҳ��;
- font-family:����;}
+ {mso-style-name:"页脚 Char";
+ mso-style-link:页脚;
+ font-family:宋体;}
span.Chare
- {mso-style-name:"���� Char";
- mso-style-link:����;
- font-family:����;}
+ {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:����;}
+ {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:����;
+ {mso-style-name:"批注主题 Char";
+ mso-style-link:批注主题;
+ font-family:宋体;
font-weight:bold;}
span.Charf0
- {mso-style-name:"��ע���ı� Char";
- mso-style-link:��ע���ı�;
- font-family:����;}
+ {mso-style-name:"批注框文本 Char";
+ mso-style-link:批注框文本;
+ font-family:宋体;}
span.3CharChar1
- {mso-style-name:"ͼ������3 Char Char1";
- font-family:����;}
+ {mso-style-name:"图中文字3 Char Char1";
+ font-family:宋体;}
span.3CharChar3
- {mso-style-name:"ͼ������3 Char Char3";
- font-family:����;}
+ {mso-style-name:"图中文字3 Char Char3";
+ font-family:宋体;}
span.3CharCharChar1
- {mso-style-name:"ͼ������3 Char Char Char1";
- font-family:����;}
+ {mso-style-name:"图中文字3 Char Char Char1";
+ font-family:宋体;}
span.3CharChar1Char
- {mso-style-name:"ͼ������3 Char Char1 Char";
- font-family:����;}
+ {mso-style-name:"图中文字3 Char Char1 Char";
+ font-family:宋体;}
.MsoChpDefault
{font-size:10.0pt;}
/* Page Definitions */
@@ -1837,7 +1837,7 @@ ul
����程序14-9 linux/include/string.h * ����ַ���ͷ�ļ�����Ƕ��������ʽ�����������ַ�������������ʹ��gccʱ��ͬʱ * 这个字符串头文件以内嵌函数的形式定义了所有字符串操作函数。使用gcc时,同时 * �ٶ���ds=es=���ݿռ䣬��Ӧ���dz���ġ���������ַ����������Ǿ��ֹ����д��� * 假定了ds=es=数据空间,这应该是常规的。绝大多数字符串函数都是经手工进行大量 * �Ż��ģ������Ǻ���strtok��strstr��str[c]spn������Ӧ����������������ȴ������ * 优化的,尤其是函数strtok、strstr、str[c]spn。它们应该能正常工作,但却不是那 * ô�������⡣���еIJ��������϶���ʹ�üĴ���������ɵģ���ʹ�ú������������ࡣ * 么容易理解。所有的操作基本上都是使用寄存器集来完成的,这使得函数即快又整洁。 * ���еط���ʹ�����ַ���ָ�����ʹ�ô��롰������������ * 所有地方都使用了字符串指令,这又使得代码“稍微”难以理解J * 26
//// ��һ���ַ���(src)��������һ���ַ���(dest)��ֱ������NULL�ַ���ֹͣ�� //// 将一个字符串(src)拷贝到另一个字符串(dest),直到遇到NULL字符后停止。 // ������dest
-- Ŀ���ַ���ָ�룬src - Դ�ַ���ָ�롣 // 参数:dest
+- 目的字符串指针,src - 源字符串指针。 // %0 - esi(src)��%1 - edi(dest)�� // %0 - esi(src),%1 - edi(dest)。 27
extern inline char * strcpy(char *
@@ -1960,49 +1960,49 @@ dest,const char *src) 29
__asm__("cld\n"
-// �巽��λ�� 30
"1:\tlodsb\n\t"
-// ����DS:[esi]��1�ֽ���al��������esi�� 31
"stosb\n\t"
-// �洢�ֽ�al��ES:[edi]��������edi�� 32
"testb %%al,%%al\n\t"
-// �մ洢���ֽ���0�� 33
"jne 1b"
-// �����������ת�����1������������� 34
::"S" (src),"D" (dest):"si","di","ax"); 35
return dest;
-// ����Ŀ���ַ���ָ�롣 36 } 37 //// ����Դ�ַ���count���ֽڵ�Ŀ���ַ����� //// 拷贝源字符串count个字节到目的字符串。 // ���Դ������С��count���ֽڣ����ӿ��ַ�(NULL)��Ŀ���ַ����� // 如果源串长度小于count个字节,就附加空字符(NULL)到目的字符串。 // ������dest
-- Ŀ���ַ���ָ�룬src - Դ�ַ���ָ�룬count - �����ֽ����� // 参数:dest
+- 目的字符串指针,src - 源字符串指针,count - 拷贝字节数。 // %0 - esi(src)��%1 - edi(dest)��%2 - ecx(count)�� // %0 - esi(src),%1 - edi(dest),%2 - ecx(count)。 38
extern inline char * strncpy(char *
@@ -2012,38 +2012,38 @@ dest,const char *src,int count) 41
"1:\tdecl %2\n\t"
-// �Ĵ���ecx--��count--���� 42
-"js 2f\n\t" // ���count<0����ǰ��ת�����2�������� 43
"lodsb\n\t"
-// ȡds:[esi]��1�ֽ���al������esi++�� 44
"stosb\n\t"
-// �洢���ֽ���es:[edi]������edi++�� 45
"testb %%al,%%al\n\t"
-// ���ֽ���0�� 46
"jne 1b\n\t"
-// ���ǣ�����ǰ��ת�����1������������ 47
"rep\n\t"
-// ������Ŀ�Ĵ��д��ʣ������Ŀ��ַ��� 48
"stosb\n" 51
return dest;
-// ����Ŀ���ַ���ָ�롣 52 } 53 //// ��Դ�ַ���������Ŀ���ַ�����ĩβ���� //// 将源字符串拷贝到目的字符串的末尾处。 // ������dest
-- Ŀ���ַ���ָ�룬src - Դ�ַ���ָ�롣 // 参数:dest
+- 目的字符串指针,src - 源字符串指针。 // %0 - esi(src)��%1 - edi(dest)��%2 - eax(0)��%3 - ecx(-1)�� // %0 - esi(src),%1 - edi(dest),%2 - eax(0),%3 - ecx(-1)。 54
extern inline char * strcat(char *
@@ -2080,39 +2080,39 @@ dest,const char * src) 56
__asm__("cld\n\t"
-// �巽��λ�� 57
"repne\n\t"
-// �Ƚ�al��es:[edi]�ֽڣ�������edi++�� 58
"scasb\n\t"
-// ֱ���ҵ�Ŀ�Ĵ�����0���ֽڣ���ʱedi��ָ���1�ֽڡ� 59
"decl %1\n"
-// ��es:[edi]ָ��0ֵ�ֽڡ� 60
"1:\tlodsb\n\t"
-// ȡԴ�ַ����ֽ�ds:[esi]��al����esi++�� 61
"stosb\n\t"
-// �����ֽڴ浽es:[edi]����edi++�� 62
"testb %%al,%%al\n\t"
-// ���ֽ���0�� 63
"jne 1b"
-// ���ǣ��������ת�����1��������������������� 64
::"S" (src),"D" (dest),"a"
@@ -2120,21 +2120,21 @@ lang=EN-US>esi++�� 65
return dest;
-// ����Ŀ���ַ���ָ�롣 66 } 67 //// ��Դ�ַ�����count���ֽڸ��Ƶ�Ŀ���ַ�����ĩβ���������һ���ַ��� //// 将源字符串的count个字节复制到目的字符串的末尾处,最后添一空字符。 // ������dest
-- Ŀ���ַ�����src - Դ�ַ�����count - �����Ƶ��ֽ����� // 参数:dest
+- 目的字符串,src - 源字符串,count - 欲复制的字节数。 // %0 - esi(src)��%1 - edi(dest)��%2 - eax(0)��%3 - ecx(-1)��%4 - (count)�� // %0 - esi(src),%1 - edi(dest),%2 - eax(0),%3 - ecx(-1),%4 - (count)。 68
extern inline char * strncat(char *
@@ -2144,59 +2144,59 @@ dest,const char * src,int count)
70
__asm__("cld\n\t"
-// �巽��λ�� 71
"repne\n\t"
-// �Ƚ�al��es:[edi]�ֽڣ�edi++�� 72
"scasb\n\t"
-// ֱ���ҵ�Ŀ�Ĵ���ĩ��0ֵ�ֽڡ� 73
"decl %1\n\t"
-// ediָ���0ֵ�ֽڡ� 74
"movl %4,%3\n"
-// �������ֽ�����ecx�� 75
"1:\tdecl %3\n\t"
-// ecx--����0��ʼ�������� 76
-"js 2f\n\t" // ecx <0 ?��������ǰ��ת�����2���� 77
"lodsb\n\t"
-// ����ȡds:[esi]�����ֽ���al��esi++�� 78
"stosb\n\t"
-// �洢��es:[edi]����edi++�� 79
"testb %%al,%%al\n\t"
-// ���ֽ�ֵΪ0�� 80
"jne 1b\n" //
-�����������ת�����1�����������ơ� 81
"2:\txorl %2,%2\n\t"
-// ��al���㡣 82
"stosb"
-// �浽es:[edi]���� 83
::"S" (src),"D" (dest),"a"
@@ -2208,32 +2208,32 @@ style='color:blue'>count) 85
return dest;
-// ����Ŀ���ַ���ָ�롣 86 } 87 //// ��һ���ַ�������һ���ַ������бȽϡ� //// 将一个字符串与另一个字符串进行比较。 // ������cs
-- �ַ���1��ct - �ַ���2�� // 参数:cs
+- 字符串1,ct - 字符串2。 // %0 - eax(__res)����ֵ��%1 - edi(cs)�ַ���1ָ�룬%2
-- esi(ct)�ַ���2ָ�롣 // %0 - eax(__res)返回值,%1 - edi(cs)字符串1指针,%2
+- esi(ct)字符串2指针。 // ���أ������1 > ��2����1����1 = ��2����0����1 < ��2����-1�� // 返回:如果串1 > 串2,则返回1;串1 = 串2,则返回0;串1 < 串2,则返回-1。 // ��90�ж�����һ���ֲ��Ĵ����������ñ�������������eax�Ĵ����У��Ա��ڸ�Ч���ʺͲ����� // 第90行定义了一个局部寄存器变量。该变量将被保存在eax寄存器中,以便于高效访问和操作。 // ���ֶ�������ķ�����Ҫ������Ƕ�������С���ϸ˵���μ�gcc�ֲ���ָ���Ĵ����еı������� // 这种定义变量的方法主要用于内嵌汇编程序中。详细说明参见gcc手册“指定寄存器中的变量”。 88
extern inline int strcmp(const char *
@@ -2242,56 +2242,56 @@ cs,const char * ct) 89 { 90
-register int __res __asm__("ax"); // __res�ǼĴ�������(eax)�� 91
__asm__("cld\n"
- // �巽��λ�� 92
"1:\tlodsb\n\t"
-// ȡ�ַ���2���ֽ�ds:[esi]��al������esi++�� 93
"scasb\n\t"
-// al���ַ���1���ֽ�es:[edi]���Ƚϣ�����edi++�� 94
-"jne 2f\n\t" // �������ȣ�����ǰ��ת�����2�� 95
"testb %%al,%%al\n\t"
-// ���ֽ���0ֵ�ֽ����ַ�����β���� 96
"jne 1b\n\t"
-// ���ǣ��������ת�����1�������Ƚϡ� 97
-"xorl %%eax,%%eax\n\t" // �ǣ���ֵeax���㣬 98
-"jmp 3f\n" // ��ǰ��ת�����3�������� 99
-"2:\tmovl $1,%%eax\n\t" // eax����1�� 100 "jl 3f\n\t" // ��ǰ��Ƚ��д�2�ַ�<��1�ַ�������ֵ������ 101 "negl
%%eax\n"
-// ����eax = -eax�����ظ�ֵ�������� 102 "3:" 104 return __res;
-// ���رȽϽ���� 105 } 106 //// �ַ���1���ַ���2��ǰcount���ַ����бȽϡ� //// 字符串1与字符串2的前count个字符进行比较。 // ������cs
-- �ַ���1��ct - �ַ���2��count - �Ƚϵ��ַ����� // 参数:cs
+- 字符串1,ct - 字符串2,count - 比较的字符数。 // %0 - eax(__res)����ֵ��%1 - edi(cs)��1ָ�룬%2
-- esi(ct)��2ָ�룬%3 - ecx(count)�� // %0 - eax(__res)返回值,%1 - edi(cs)串1指针,%2
+- esi(ct)串2指针,%3 - ecx(count)。 // ���أ������1 > ��2����1����1 = ��2����0����1 < ��2����-1�� // 返回:如果串1 > 串2,则返回1;串1 = 串2,则返回0;串1 < 串2,则返回-1。 107 extern inline int strncmp(const
@@ -2335,65 +2335,65 @@ lang=EN-US> { 109 register int __res __asm__("ax");
-// __res�ǼĴ�������(eax)�� 110 __asm__("cld\n"
-// �巽��λ�� 111 "1:\tdecl
%3\n\t"
-// count--�� 112 "js 2f\n\t" // ���count<0������ǰ��ת�����2�� 113 "lodsb\n\t"
-// ȡ��2���ַ�ds:[esi]��al������esi++�� 114 "scasb\n\t"
-// �Ƚ�al�봮1���ַ�es:[edi]������edi++�� 115 "jne 3f\n\t" // �������ȣ�����ǰ��ת�����3�� 116 "testb %%al,%%al\n\t"
-// ���ַ���NULL�ַ��� 117 "jne
1b\n"
-// ���ǣ��������ת�����1�������Ƚϡ� 118 "2:\txorl
-%%eax,%%eax\n\t" // ��NULL�ַ�����eax���㣨����ֵ���� 119 "jmp 4f\n" // ��ǰ��ת�����4�������� 120 "3:\tmovl
-$1,%%eax\n\t" // eax����1�� 121 "jl 4f\n\t" // ���ǰ��Ƚ��д�2�ַ�<��1�ַ�����1������ 122 "negl
%%eax\n"
-// ����eax = -eax�����ظ�ֵ�������� 123 "4:" 125 return __res;
-// ���رȽϽ���� 126 } 127 //// ���ַ�����Ѱ�ҵ�һ��ƥ����ַ��� //// 在字符串中寻找第一个匹配的字符。 // ������s
-- �ַ�����c - ��Ѱ�ҵ��ַ��� // 参数:s
+- 字符串,c - 欲寻找的字符。 // %0 - eax(__res)��%1 - esi(�ַ���ָ��s)��%2
-- eax(�ַ�c)�� // %0 - eax(__res),%1 - esi(字符串指针s),%2
+- eax(字符c)。 // ���أ������ַ����е�һ�γ���ƥ���ַ���ָ�롣��û���ҵ�ƥ����ַ����ؿ�ָ�롣 // 返回:返回字符串中第一次出现匹配字符的指针。若没有找到匹配的字符,则返回空指针。 128 extern inline char * strchr(const
@@ -2432,56 +2432,56 @@ char * s,char c) 130 register char * __res __asm__("ax"); // __res�ǼĴ�������(eax)�� 131 __asm__("cld\n\t"
-// �巽��λ�� 132 "movb
%%al,%%ah\n"
-// �����Ƚ��ַ��Ƶ�ah�� 133 "1:\tlodsb\n\t"
-// ȡ�ַ������ַ�ds:[esi]��al������esi++�� 134 "cmpb
-%%ah,%%al\n\t" // �ַ������ַ�al��ָ���ַ�ah��Ƚϡ� 135 "je 2f\n\t" // ����ȣ�����ǰ��ת�����2���� 136 "testb
-%%al,%%al\n\t" // al���ַ���NULL�ַ��𣿣��ַ�����β���� 137 "jne
1b\n\t"
-// �����ǣ��������ת�����1�������Ƚϡ� 138 "movl
$1,%1\n"
-// �ǣ���˵��û���ҵ�ƥ���ַ���esi��1�� 139 "2:\tmovl
-%1,%0\n\t" // ��ָ��ƥ���ַ���һ���ֽڴ���ָ��ֵ���� // 将指向匹配字符后一个字节处的指针值放入eax 140 "decl
%0"
-// ��ָ�����Ϊָ��ƥ����ַ��� 141 :"=a"
@@ -2489,7 +2489,7 @@ lang=EN-US> :"=a"
142 return __res;
-// ����ָ�롣 143 } 144 //// Ѱ���ַ�����ָ���ַ����һ�γ��ֵĵط��������������ַ����� //// 寻找字符串中指定字符最后一次出现的地方。(反向搜索字符串) // ������s
-- �ַ�����c - ��Ѱ�ҵ��ַ��� // 参数:s
+- 字符串,c - 欲寻找的字符。 // %0 - edx(__res)��%1 - edx(0)��%2 - esi(�ַ���ָ��s)��%3 - eax(�ַ�c)�� // %0 - edx(__res),%1 - edx(0),%2 - esi(字符串指针s),%3 - eax(字符c)。 // ���أ������ַ��������һ�γ���ƥ���ַ���ָ�롣��û���ҵ�ƥ����ַ����ؿ�ָ�롣 // 返回:返回字符串中最后一次出现匹配字符的指针。若没有找到匹配的字符,则返回空指针。 145 extern inline char * strrchr(const
@@ -2516,50 +2516,50 @@ char * s,char c) 147 register char * __res __asm__("dx"); // __res�ǼĴ�������(edx)�� 148 __asm__("cld\n\t"
-// �巽��λ�� 149 "movb
%%al,%%ah\n"
-// ����Ѱ�ҵ��ַ��Ƶ�ah�� 150 "1:\tlodsb\n\t"
-// ȡ�ַ������ַ�ds:[esi]��al������esi++�� 151 "cmpb
-%%ah,%%al\n\t" // �ַ������ַ�al��ָ���ַ�ah���Ƚϡ� 152 "jne 2f\n\t" // ������ȣ�����ǰ��ת�����2���� 153 "movl
%%esi,%0\n\t" //
-���ַ�ָ�뱣�浽edx�С� 154 "decl
%0\n"
-// ָ�����һλ��ָ���ַ�����ƥ���ַ����� 155 "2:\ttestb
-%%al,%%al\n\t" // �Ƚϵ��ַ���0�𣨵��ַ���β���� 156 "jne
1b"
-// �����������ת�����1���������Ƚϡ� 157 :"=d"
@@ -2568,7 +2568,7 @@ lang=EN-US> :"=d"
158 return __res;
-// ����ָ�롣 159 } 160 //// ���ַ���1��Ѱ�ҵ�1���ַ����У����ַ������е��κ��ַ����������ַ���2�С� //// 在字符串1中寻找第1个字符序列,该字符序列中的任何字符都包含在字符串2中。 // ������cs
-- �ַ���1ָ�룬ct - �ַ���2ָ�롣 // 参数:cs
+- 字符串1指针,ct - 字符串2指针。 // %0 - esi(__res)��%1 - eax(0)��%2 - ecx(-1)��%3 - esi(��1ָ��cs)��%4 - (��2ָ��ct)�� // %0 - esi(__res),%1 - eax(0),%2 - ecx(-1),%3 - esi(串1指针cs),%4 - (串2指针ct)。 // �����ַ���1�а����ַ���2���κ��ַ������ַ����еij���ֵ�� // 返回字符串1中包含字符串2中任何字符的首个字符序列的长度值。 161 extern inline int strspn(const
@@ -2600,84 +2600,84 @@ char * cs, const char * ct) 163 register char * __res __asm__("si"); // __res�ǼĴ�������(esi)�� 164 __asm__("cld\n\t"
-// �巽��λ�� 165 "movl
%4,%%edi\n\t" //
-���ȼ��㴮2�ij��ȡ���2ָ�����edi�С� 166 "repne\n\t"
-// �Ƚ�al(0)�봮2�е��ַ���es:[edi]������edi++�� 167 "scasb\n\t"
-// �������Ⱦͼ����Ƚ�(ecx�ݼ�)�� 168 "notl
%%ecx\n\t"
-// ecx��ÿλȡ���� 169 "decl
%%ecx\n\t"
-// ecx--���ô�2�ij���ֵ�� 170 "movl
-%%ecx,%%edx\n" // ����2�ij���ֵ�ݷ���edx�С� 171 "1:\tlodsb\n\t"
-// ȡ��1�ַ�ds:[esi]��al������esi++�� 172 "testb
-%%al,%%al\n\t" // ���ַ�����0ֵ�𣨴�1��β���� 173 "je 2f\n\t" // ����ǣ�����ǰ��ת�����2���� 174 "movl %4,%%edi\n\t"
-// ȡ��2ͷָ�����edi�С� 175 "movl
-%%edx,%%ecx\n\t" // �ٽ���2�ij���ֵ����ecx�С� 176 "repne\n\t"
-// �Ƚ�al�봮2���ַ�es:[edi]������edi++�� 177 "scasb\n\t"
-// �������Ⱦͼ����Ƚϡ� 178 "je
1b\n"
-// �����ȣ��������ת�����1���� 179 "2:\tdecl
%0"
-// esi--��ָ�����һ�������ڴ�2�е��ַ��� 180 :"=S"
@@ -2689,7 +2689,7 @@ lang=EN-US> :"ax"
182 return __res-cs;
-// �����ַ����еij���ֵ�� 183 } 184 //// Ѱ���ַ���1�в������ַ���2���κ��ַ������ַ����С� //// 寻找字符串1中不包含字符串2中任何字符的首个字符序列。 // ������cs
-- �ַ���1ָ�룬ct - �ַ���2ָ�롣 // 参数:cs
+- 字符串1指针,ct - 字符串2指针。 // %0 - esi(__res)��%1 - eax(0)��%2 - ecx(-1)��%3 - esi(��1ָ��cs)��%4 - (��2ָ��ct)�� // %0 - esi(__res),%1 - eax(0),%2 - ecx(-1),%3 - esi(串1指针cs),%4 - (串2指针ct)。 // �����ַ���1�в������ַ���2���κ��ַ������ַ����еij���ֵ�� // 返回字符串1中不包含字符串2中任何字符的首个字符序列的长度值。 185 extern inline int strcspn(const
@@ -2720,86 +2720,86 @@ char * cs, const char * ct) 187 register char * __res __asm__("si"); // __res�ǼĴ�������(esi)�� 188 __asm__("cld\n\t"
-// �巽��λ�� 189 "movl
%4,%%edi\n\t" //
-���ȼ��㴮2�ij��ȡ���2ָ�����edi�С� 190 "repne\n\t"
//
-�Ƚ�al(0)�봮2�е��ַ���es:[edi]������edi++�� 191 "scasb\n\t"
-// �������Ⱦͼ����Ƚ�(ecx�ݼ�)�� 192 "notl
%%ecx\n\t"
-// ecx��ÿλȡ���� 193 "decl
%%ecx\n\t"
-// ecx--���ô�2�ij���ֵ�� 194 "movl %%ecx,%%edx\n"
-// ����2�ij���ֵ�ݷ���edx�С� 195 "1:\tlodsb\n\t"
-// ȡ��1�ַ�ds:[esi]��al������esi++�� 196 "testb
-%%al,%%al\n\t" // ���ַ�����0ֵ�𣨴�1��β���� 197 "je 2f\n\t" // ����ǣ�����ǰ��ת�����2���� 198 "movl
%4,%%edi\n\t" //
-ȡ��2ͷָ�����edi�С� 199 "movl
-%%edx,%%ecx\n\t" // �ٽ���2�ij���ֵ����ecx�С� 200 "repne\n\t"
-// �Ƚ�al�봮2���ַ�es:[edi]������edi++�� 201 "scasb\n\t"
-// �������Ⱦͼ����Ƚϡ� 202 "jne
1b\n"
- // �������ȣ��������ת�����1���� 203 "2:\tdecl
%0"
-// esi--��ָ�����һ�������ڴ�2�е��ַ��� 204 :"=S"
@@ -2811,7 +2811,7 @@ lang=EN-US> :"ax"
206 return __res-cs;
-// �����ַ����еij���ֵ�� 207 } 208 //// ���ַ���1��Ѱ�����������ַ���2�е��κ��ַ��� //// 在字符串1中寻找首个包含在字符串2中的任何字符。 // ������cs
-- �ַ���1��ָ�룬ct - �ַ���2��ָ�롣 // 参数:cs
+- 字符串1的指针,ct - 字符串2的指针。 // %0 -esi(__res)��%1 -eax(0)��%2 -ecx(0xffffffff)��%3 -esi(��1ָ��cs)��%4 -(��2ָ��ct)�� // %0 -esi(__res),%1 -eax(0),%2 -ecx(0xffffffff),%3 -esi(串1指针cs),%4 -(串2指针ct)。 // �����ַ���1���������ַ���2���ַ���ָ�롣 // 返回字符串1中首个包含字符串2中字符的指针。 209 extern inline char * strpbrk(const
@@ -2842,92 +2842,92 @@ char * cs,const char * ct) 211 register char * __res __asm__("si"); // __res�ǼĴ�������(esi)�� 212 __asm__("cld\n\t"
-// �巽��λ�� 213 "movl
%4,%%edi\n\t" //
-���ȼ��㴮2�ij��ȡ���2ָ�����edi�С� 214 "repne\n\t"
-// �Ƚ�al(0)�봮2�е��ַ���es:[edi]������edi++�� 215 "scasb\n\t"
-// �������Ⱦͼ����Ƚ�(ecx�ݼ�)�� 216 "notl
%%ecx\n\t"
-// ecx��ÿλȡ���� 217 "decl
%%ecx\n\t"
-// ecx--���ô�2�ij���ֵ�� 218 "movl
-%%ecx,%%edx\n" // ����2�ij���ֵ�ݷ���edx�С� 219 "1:\tlodsb\n\t"
-// ȡ��1�ַ�ds:[esi]��al������esi++�� 220 "testb
-%%al,%%al\n\t" // ���ַ�����0ֵ�𣨴�1��β���� 221 "je 2f\n\t" // ����ǣ�����ǰ��ת�����2���� 222 "movl
%4,%%edi\n\t" //
-ȡ��2ͷָ�����edi�С� 223 "movl
-%%edx,%%ecx\n\t" // �ٽ���2�ij���ֵ����ecx�С� 224 "repne\n\t"
-// �Ƚ�al�봮2���ַ�es:[edi]������edi++�� 225 "scasb\n\t"
-// �������Ⱦͼ����Ƚϡ� 226 "jne
1b\n\t"
-// �������ȣ��������ת�����1���� 227 "decl %0\n\t"
-// esi--��ָ��һ�������ڴ�2�е��ַ��� 228 "jmp 3f\n" // ��ǰ��ת�����3���� 229 "2:\txorl
%0,%0\n"
-// û���ҵ����������ģ�������ֵΪNULL�� 230 "3:" 233 return __res;
-// ����ָ��ֵ�� 234 } 235 //// ���ַ���1��Ѱ����ƥ�������ַ���2���ַ����� //// 在字符串1中寻找首个匹配整个字符串2的字符串。 // ������cs
-- �ַ���1��ָ�룬ct - �ַ���2��ָ�롣 // 参数:cs
+- 字符串1的指针,ct - 字符串2的指针。 // %0 -eax(__res)��%1 -eax(0)��%2 -ecx(0xffffffff)��%3 -esi(��1ָ��cs)��%4 -(��2ָ��ct)�� // %0 -eax(__res),%1 -eax(0),%2 -ecx(0xffffffff),%3 -esi(串1指针cs),%4 -(串2指针ct)。 // ���أ������ַ���1����ƥ���ַ���2���ַ���ָ�롣 // 返回:返回字符串1中首个匹配字符串2的字符串指针。 236 extern inline char * strstr(const
@@ -2973,32 +2973,32 @@ char * cs,const char * ct) 238 register char * __res __asm__("ax"); // __res�ǼĴ�������(eax)�� 239 __asm__("cld\n\t" \
-// �巽��λ�� 240 "movl
%4,%%edi\n\t" //
-���ȼ��㴮2�ij��ȡ���2ָ�����edi�С� 241 "repne\n\t"
-// �Ƚ�al(0)�봮2�е��ַ���es:[edi]������edi++�� 242 "scasb\n\t"
-// �������Ⱦͼ����Ƚ�(ecx�ݼ�)�� 243 "notl
%%ecx\n\t"
-// ecx��ÿλȡ���� 244 "decl
@@ -3006,71 +3006,71 @@ lang=EN-US> "decl
searchstring='' */
-/* ע�⣡���������Ϊ�գ�������Z��־ */ // �ô�2�ij���ֵ�� 245 "movl
-%%ecx,%%edx\n" // ����2�ij���ֵ�ݷ���edx�С� 246 "1:\tmovl
-%4,%%edi\n\t" // ȡ��2ͷָ�����edi�С� 247 "movl
-%%esi,%%eax\n\t" // ����1��ָ�븴�Ƶ�eax�С� 248 "movl
-%%edx,%%ecx\n\t" // �ٽ���2�ij���ֵ����ecx�С� 249 "repe\n\t"
-// �Ƚϴ�1�ʹ�2�ַ�(ds:[esi],es:[edi])��esi++,edi++�� 250 "cmpsb\n\t"
-// ����Ӧ�ַ���Ⱦ�һֱ�Ƚ���ȥ�� 251 "je 2f\n\t" /* also works for empty string, see above */
-/* �Կմ�ͬ����Ч�������� */ // ��ȫ��ȣ���ת�����2�� 252 "xchgl
-%%eax,%%esi\n\t" // ��1ͷָ����esi���ȽϽ���Ĵ�1ָ����eax�� 253 "incl
%%esi\n\t"
-// ��1ͷָ��ָ����һ���ַ��� 254 "cmpb
-$0,-1(%%eax)\n\t" // ��1ָ��(eax-1)��ָ�ֽ���0�� 255 "jne
1b\n\t"
-// ������ת�����1�������Ӵ�1�ĵ�2���ַ���ʼ�Ƚϡ� 256 "xorl
-%%eax,%%eax\n\t" // ��eax����ʾû���ҵ�ƥ�䡣 257 "2:" 260 return __res;
-// ���رȽϽ���� 261 } 262 //// �����ַ������ȡ� //// 计算字符串长度。 // ������s
-- �ַ����� // 参数:s
+- 字符串。 // %0 - ecx(__res)��%1 - edi(�ַ���ָ��s)��%2
-- eax(0)��%3 - ecx(0xffffffff)�� // %0 - ecx(__res),%1 - edi(字符串指针s),%2
+- eax(0),%3 - ecx(0xffffffff)。 // ���أ������ַ����ij��ȡ� // 返回:返回字符串的长度。 263 extern inline int strlen(const
@@ -3113,29 +3113,29 @@ lang=EN-US> { 265 register int __res __asm__("cx");
-// __res�ǼĴ�������(ecx)�� 266 __asm__("cld\n\t"
-// �巽��λ�� 267 "repne\n\t"
-// al(0)���ַ������ַ�es:[edi]�Ƚϣ� 268 "scasb\n\t"
-// ������Ⱦ�һֱ�Ƚϡ� 269 "notl
%0\n\t"
-// ecxȡ���� 270 "decl
%0"
-// ecx--�����ַ����ó���ֵ�� 271 :"=c"
@@ -3144,7 +3144,7 @@ lang=EN-US> :"=c"
272 return __res;
-// �����ַ�������ֵ�� 273 } 275 extern char * ___strtok;
-// ������ʱ���ָ�����汻�����ַ���1(s)��ָ�롣 276 //// �����ַ���2�е��ַ����ַ���1�ָ�ɱ��(tokern)���С� //// 利用字符串2中的字符将字符串1分割成标记(tokern)序列。 // ����1�����ǰ��������������(token)�����У����ɷָ���ַ���2�е�һ�������ַ� // 将串1看作是包含零个或多个单词(token)的序列,并由分割符字符串2中的一个或多个字符 // �ֿ�����һ�ε��� strtok()ʱ��������ָ���ַ���1�е�1��token���ַ���ָ�룬���ڷ� // 分开。第一次调用 strtok()时,将返回指向字符串1中第1个token首字符的指针,并在返 // ��tokenʱ��һ
-null�ַ�д���ָ����������ʹ�� null ��Ϊ�ַ���1�ĵ��ã��������ַ� // 回token时将一
+null字符写到分割符处。后续使用 null 作为字符串1的调用,将用这种方 // ������ɨ���ַ���1��ֱ��û��token Ϊֹ���ڲ�ͬ�ĵ��ù����У��ָ����2���Բ�ͬ�� // 法继续扫描字符串1,直到没有token 为止。在不同的调用过程中,分割符串2可以不同。 // ������s
-- ���������ַ���1��ct - ���������ָ�����ַ���2�� // 参数:s
+- 待处理的字符串1,ct - 包含各个分割符的字符串2。 // ��������%0
-- ebx(__res)��%1 - esi(__strtok)�� // 汇编输出:%0
+- ebx(__res),%1 - esi(__strtok); // ������룺%2
-- ebx(__strtok)��%3 - esi(�ַ���1ָ��s)��%4 - (�ַ���2ָ��ct)�� // 汇编输入:%2
+- ebx(__strtok),%3 - esi(字符串1指针s),%4 - (字符串2指针ct)。 // ���أ������ַ���s�е�1��token�����û���ҵ�token����һ��nullָ�롣 // 返回:返回字符串s中第1个token,如果没有找到token,则返回一个null指针。 // ����ʹ���ַ���sָ��Ϊnull�ĵ��ã�����ԭ�ַ���s��������һ��token�� // 后续使用字符串s指针为null的调用,将在原字符串s中搜索下一个token。 277 extern inline char * strtok(char
@@ -3209,235 +3209,235 @@ lang=EN-US> register char * __res __asm__("si"); 280 __asm__("testl %1,%1\n\t"
- // ���Ȳ���esi(�ַ���1ָ��s)�Ƿ���NULL�� 281 "jne 1f\n\t" // ������ǣ���������״ε��ñ���������ת���1�� 282 "testl
%0,%0\n\t"
-// ����NULL����ʾ�˴��Ǻ������ã���ebx(__strtok)�� 283 "je 8f\n\t" // ���ebxָ����NULL�����ܴ�������ת������ 284 "movl
%0,%1\n"
-// ��ebxָ�븴�Ƶ�esi�� 285 "1:\txorl
-%0,%0\n\t" // ��ebxָ�롣 286 "movl
-$-1,%%ecx\n\t" // ��ecx = 0xffffffff�� 287 "xorl
-%%eax,%%eax\n\t" // ����eax�� 288 "cld\n\t"
-// �巽��λ�� 289 "movl
%4,%%edi\n\t" //
-�������ַ���2�ij��ȡ�ediָ���ַ���2�� 290 "repne\n\t"
-// ��al(0)��es:[edi]�Ƚϣ�����edi++�� 291 "scasb\n\t"
-// ֱ���ҵ��ַ���2�Ľ���null�ַ��������ecx==0�� 292 "notl
%%ecx\n\t"
-// ��ecxȡ���� 293 "decl
%%ecx\n\t"
-// ecx--���õ��ַ���2�ij���ֵ�� 294 "je 7f\n\t" /* empty delimeter-string */
-/* �ָ���ַ����� */ // ����2����Ϊ0����ת���7�� 295 "movl
-%%ecx,%%edx\n" // ����2�����ݴ���edx�� 296 "2:\tlodsb\n\t"
-// ȡ��1���ַ�ds:[esi]��al������esi++�� 297 "testb
-%%al,%%al\n\t" // ���ַ�Ϊ0ֵ��(��1����)�� 298 "je 7f\n\t" // ����ǣ�����ת���7�� 299 "movl %4,%%edi\n\t"
-// edi�ٴ�ָ��2�ס� 300 "movl
-%%edx,%%ecx\n\t" // ȡ��2�ij���ֵ���������ecx�� 301 "repne\n\t"
-// ��al�д�1���ַ��봮2�������ַ��Ƚϣ� 302 "scasb\n\t"
-// �жϸ��ַ��Ƿ�Ϊ�ָ���� 303 "je
2b\n\t"
- // �����ڴ�2���ҵ���ͬ�ַ����ָ����������ת���2�� 304 "decl
%1\n\t"
-// �����Ƿָ������1ָ��esiָ���ʱ�ĸ��ַ��� 305 "cmpb
$0,(%1)\n\t"
-// ���ַ���NULL�ַ��� 306 "je 7f\n\t" // ���ǣ�����ת���7���� 307 "movl
%1,%0\n"
- // �����ַ���ָ��esi�����ebx�� 308 "3:\tlodsb\n\t"
-// ȡ��1��һ���ַ�ds:[esi]��al������esi++�� 309 "testb
-%%al,%%al\n\t" // ���ַ���NULL�ַ��� 310 "je 5f\n\t" // ���ǣ���ʾ��1��������ת�����5�� 311 "movl
%4,%%edi\n\t" //
-edi�ٴ�ָ��2�ס� 312 "movl
-%%edx,%%ecx\n\t" // ��2����ֵ���������ecx�� 313 "repne\n\t"
-// ��al�д�1���ַ��봮2��ÿ���ַ��Ƚϣ� 314 "scasb\n\t"
-// ����al�ַ��Ƿ��Ƿָ���� 315 "jne
3b\n\t"
-// �����Ƿָ������ת���3����1����һ���ַ��� 316 "decl
%1\n\t"
-// ���Ƿָ������esi--��ָ��÷ָ���ַ��� 317 "cmpb
$0,(%1)\n\t"
-// �÷ָ����NULL�ַ��� 318 "je 5f\n\t" // ���ǣ�����ת�����5�� 319 "movb
$0,(%1)\n\t"
-// �����ǣ��÷ָ����NULL�ַ��滻���� 320 "incl
%1\n\t"
-// esiָ��1����һ���ַ���Ҳ��ʣ�മ�ס� 321 "jmp 6f\n" // ��ת���6���� 322 "5:\txorl
%1,%1\n"
-// esi���㡣 323 "6:\tcmpb
-$0,(%0)\n\t" // ebxָ��ָ��NULL�ַ��� 324 "jne 7f\n\t" // �����ǣ�����ת���7�� 325 "xorl
%0,%0\n"
-// ���ǣ�����ebx=NULL�� 326 "7:\ttestl
-%0,%0\n\t" // ebxָ��ΪNULL�� 327 "jne 8f\n\t" // ����������ת8�����������롣 328 "movl
%0,%1\n" //
-��esi��ΪNULL�� 329 "8:" 333 return __res;
-// ����ָ����token��ָ�롣 334 } 335 //// �ڴ�鸴�ơ���Դ��ַsrc����ʼ����n���ֽڵ�Ŀ�ĵ�ַdest���� //// 内存块复制。从源地址src处开始复制n个字节到目的地址dest处。 // ������dest
-- ���Ƶ�Ŀ�ĵ�ַ��src - ���Ƶ�Դ��ַ��n - �����ֽ����� // 参数:dest
+- 复制的目的地址,src - 复制的源地址,n - 复制字节数。 // %0 - ecx(n)��%1 - esi(src)��%2 - edi(dest)�� // %0 - ecx(n),%1 - esi(src),%2 - edi(dest)。 336 extern inline void * memcpy(void
@@ -3482,16 +3482,16 @@ lang=EN-US> { 338 __asm__("cld\n\t"
-// �巽��λ�� 339 "rep\n\t"
-// �ظ�ִ�и���ecx���ֽڣ� 340 "movsb"
-// ��ds:[esi]��es:[edi]��esi++��edi++�� 341 ::"c"
@@ -3502,7 +3502,7 @@ lang=EN-US> :"cx"
343 return dest;
-// ����Ŀ�ĵ�ַ�� 344 } 345 //// �ڴ���ƶ���ͬ�ڴ�鸴�ƣ��������ƶ��ķ��� //// 内存块移动。同内存块复制,但考虑移动的方向。 // ������dest
-- ���Ƶ�Ŀ�ĵ�ַ��src - ���Ƶ�Դ��ַ��n - �����ֽ����� // 参数:dest
+- 复制的目的地址,src - 复制的源地址,n - 复制字节数。 // ��dest<src��%0 - ecx(n)��%1 - esi(src)��%2 - edi(dest)�� // 若dest<src则:%0 - ecx(n),%1 - esi(src),%2 - edi(dest)。 // ����%0
-- ecx(n)��%1 - esi(src+n-1)��%2 -
-edi(dest+n-1)�� // 否则:%0
+- ecx(n),%1 - esi(src+n-1),%2 -
+edi(dest+n-1)。 // ����������Ϊ�˷�ֹ�ڸ���ʱ������ص����ǡ� // 这样操作是为了防止在复制时错误地重叠覆盖。 346 extern inline void * memmove(void
@@ -3537,16 +3537,16 @@ lang=EN-US> if (dest<src) 349 __asm__("cld\n\t"
-// �巽��λ�� 350 "rep\n\t"
-// ��ds:[esi]��es:[edi]������esi++��edi++�� 351 "movsb"
- // �ظ�ִ�и���ecx�ֽڡ� 352 ::"c"
@@ -3560,16 +3560,16 @@ lang=EN-US> else 355 __asm__("std\n\t"
-// �÷���λ����ĩ�˿�ʼ���ơ� 356 "rep\n\t"
-// ��ds:[esi]��es:[edi]������esi--��edi--�� 357 "movsb"
-// ����ecx���ֽڡ� 358 ::"c"
@@ -3587,22 +3587,22 @@ lang=EN-US> } 362 //// �Ƚ�n���ֽڵ������ڴ棨�����ַ���������ʹ����NULL�ֽ�Ҳ��ֹͣ�Ƚϡ� //// 比较n个字节的两块内存(两个字符串),即使遇上NULL字节也不停止比较。 // ������cs
-- �ڴ��1��ַ��ct - �ڴ��2��ַ��count - �Ƚϵ��ֽ����� // 参数:cs
+- 内存块1地址,ct - 内存块2地址,count - 比较的字节数。 // %0 - eax(__res)��%1 - eax(0)��%2 - edi(�ڴ��1)��%3 - esi(�ڴ��2)��%4 - ecx(count)�� // %0 - eax(__res),%1 - eax(0),%2 - edi(内存块1),%3 - esi(内存块2),%4 - ecx(count)。 // ���أ�����1>��2 ����1����1<��2������-1����1==��2����0�� // 返回:若块1>块2 返回1;块1<块2,返回-1;块1==块2,则返回0。 363 extern inline int memcmp(const
@@ -3613,38 +3613,38 @@ lang=EN-US> { 365 register int __res __asm__("ax");
-// __res�ǼĴ��������� 366 __asm__("cld\n\t"
-// �巽��λ�� 367 "repe\n\t"
-// ���������ظ��� 368 "cmpsb\n\t"
-// �Ƚ�ds:[esi]��es:[edi]�����ݣ�����esi++��edi++�� 369 "je 1f\n\t" // �������ͬ������ת�����1������0(eax)ֵ 370 "movl
$1,%%eax\n\t" //
-����eax��1�� 371 "jl 1f\n\t" // ���ڴ��2���ݵ�ֵ<�ڴ��1������ת���1�� 372 "negl
%%eax\n"
-// ����eax = -eax�� 373 "1:" 376 return __res;
-// ���رȽϽ���� 377 } 378 //// ��n�ֽڴ�С���ڴ��(�ַ���)��Ѱ��ָ���ַ��� //// 在n字节大小的内存块(字符串)中寻找指定字符。 // ������cs
-- ָ���ڴ���ַ��c - ָ�����ַ���count - �ڴ�鳤�ȡ� // 参数:cs
+- 指定内存块地址,c - 指定的字符,count - 内存块长度。 // %0 - edi(__res)��%1 - eax(�ַ�c)��%2 - edi(�ڴ���ַcs)��%3 - ecx(�ֽ���count)�� // %0 - edi(__res),%1 - eax(字符c),%2 - edi(内存块地址cs),%3 - ecx(字节数count)。 // ���ص�һ��ƥ���ַ���ָ�룬���û���ҵ�����NULL�ַ��� // 返回第一个匹配字符的指针,如果没有找到,则返回NULL字符。 379 extern inline void * memchr(const
@@ -3688,11 +3688,11 @@ void * cs,char c,int count) 381 register void * __res __asm__("di"); // __res�ǼĴ��������� 382 if (!count)
-// ����ڴ�鳤��==0����NULL��û���ҵ��� 383 return NULL; 384 __asm__("cld\n\t"
-// �巽��λ�� 385 "repne\n\t"
-// �����������ظ�ִ��������䣬 386 "scasb\n\t"
-// al���ַ���es:[edi]�ַ����Ƚϣ�����edi++�� 387 "je 1f\n\t" // ����������ǰ��ת�����1���� 388 "movl
$1,%0\n"
-// ����edi����1�� 389 "1:\tdecl
%0"
-// ��ediָ���ҵ����ַ�������NULL���� 390 :"=D"
@@ -3733,7 +3733,7 @@ lang=EN-US> :"cx"
392 return __res;
-// �����ַ�ָ�롣 393 } 394 //// ���ַ���дָ�������ڴ�顣 //// 用字符填写指定长度内存块。 // ���ַ�c��дsָ����ڴ�������count�ֽڡ� // 用字符c填写s指向的内存区域,共填count字节。 // %0 - eax(�ַ�c)��%1 - edi(�ڴ��ַ)��%2 - ecx(�ֽ���count)�� // %0 - eax(字符c),%1 - edi(内存地址),%2 - ecx(字节数count)。 395 extern inline void * memset(void
@@ -3759,17 +3759,17 @@ lang=EN-US> { 397 __asm__("cld\n\t"
-// �巽��λ�� 398 "rep\n\t"
- // �ظ�ecxָ���Ĵ�����ִ�� 399 "stosb"
-// ��al���ַ�����es:[edi]�У�����edi++�� 400 ::"a"