<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>凌云窟</title><link>http://blog.vckbase.com/howto/</link><description>南山巅上火麟烈，北海潜深雪饮寒。可怜两锋未缘见，雪刀封隐孤剑鸣。</description><managingEditor>莫问春秋</managingEditor><dc:language>zh-CHS</dc:language><generator>.Text Version 0.958.2004.214</generator><item><dc:creator>莫问春秋</dc:creator><title>x86是满递减堆栈还是空递减堆栈？</title><link>http://blog.vckbase.com/howto/archive/2007/07/14/27388.html</link><pubDate>Sat, 14 Jul 2007 15:17:00 GMT</pubDate><guid>http://blog.vckbase.com/howto/archive/2007/07/14/27388.html</guid><wfw:comment>http://blog.vckbase.com/howto/comments/27388.html</wfw:comment><comments>http://blog.vckbase.com/howto/archive/2007/07/14/27388.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://blog.vckbase.com/howto/comments/commentRss/27388.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/howto/services/trackbacks/27388.html</trackback:ping><description>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 所谓满递减堆栈是指堆栈通过减小存储器的地址向下增长，堆栈指针指向内含有效数据项的最低地址。空递减堆栈是指堆栈通过减小存储器的地址向下增长，堆栈指针指向堆栈下的第一个空位置。&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 那么x86是属于那一种呢？&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 结论是x86的堆栈是满递减堆栈。&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 我们经常遇到的堆栈操作就是函数调用时需要将函数的参数入栈，因此在调用函数的地方设置一个断点，然后查看汇编代码：&lt;BR&gt;&lt;IMG height=48 src="/images/vckbase_com/howto/disa.JPG" width=384 border=0&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 这里Hello函数有一个默认值为9的参数.&lt;BR&gt;&lt;BR&gt;在00401078这行代码执行后停住，然后打开vc的registers可以看到目前esp的值，这是一个内存地址。然后在Memory里面查看esp所值的内存的值，结果是刚好是9.&lt;BR&gt;&lt;IMG style="WIDTH: 356px; HEIGHT: 177px" height=173 src="/images/vckbase_com/howto/registers.JPG" width=356 border=0&gt;&lt;BR&gt;&lt;BR&gt;&lt;IMG height=173 src="/images/vckbase_com/howto/memory.JPG" width=356 border=0&gt;&lt;img src ="http://blog.vckbase.com/howto/aggbug/27388.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>莫问春秋</dc:creator><title>构造函数调用虚函数追踪 </title><link>http://blog.vckbase.com/howto/archive/2007/06/27/27120.html</link><pubDate>Wed, 27 Jun 2007 14:33:00 GMT</pubDate><guid>http://blog.vckbase.com/howto/archive/2007/06/27/27120.html</guid><wfw:comment>http://blog.vckbase.com/howto/comments/27120.html</wfw:comment><comments>http://blog.vckbase.com/howto/archive/2007/06/27/27120.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://blog.vckbase.com/howto/comments/commentRss/27120.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/howto/services/trackbacks/27120.html</trackback:ping><description>&lt;P&gt;&amp;nbsp; 好久不写blog都生疏了，刚好公司要组织一次C++的基本功考试,就一个派生类调用虚函数的问题研究了一下编译器的实现：&lt;BR&gt;&lt;/P&gt;
&lt;DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"&gt;
&lt;DIV&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;SPAN style="COLOR: #0000ff"&gt;class&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;A&lt;BR&gt;&lt;IMG id=Codehighlighter1_8_76_Open_Image onclick="this.style.display='none'; Codehighlighter1_8_76_Open_Text.style.display='none'; Codehighlighter1_8_76_Closed_Image.style.display='inline'; Codehighlighter1_8_76_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_8_76_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_8_76_Closed_Text.style.display='none'; Codehighlighter1_8_76_Open_Image.style.display='inline'; Codehighlighter1_8_76_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedBlock.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_8_76_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_8_76_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;public&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;:&lt;BR&gt;&lt;IMG id=Codehighlighter1_22_23_Open_Image onclick="this.style.display='none'; Codehighlighter1_22_23_Open_Text.style.display='none'; Codehighlighter1_22_23_Closed_Image.style.display='inline'; Codehighlighter1_22_23_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_22_23_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_22_23_Closed_Text.style.display='none'; Codehighlighter1_22_23_Open_Image.style.display='inline'; Codehighlighter1_22_23_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedSubBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;A()&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_22_23_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_22_23_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG id=Codehighlighter1_30_31_Open_Image onclick="this.style.display='none'; Codehighlighter1_30_31_Open_Text.style.display='none'; Codehighlighter1_30_31_Closed_Image.style.display='inline'; Codehighlighter1_30_31_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_30_31_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_30_31_Closed_Text.style.display='none'; Codehighlighter1_30_31_Open_Image.style.display='inline'; Codehighlighter1_30_31_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedSubBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;~&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;A()&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_30_31_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_30_31_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG id=Codehighlighter1_57_74_Open_Image onclick="this.style.display='none'; Codehighlighter1_57_74_Open_Text.style.display='none'; Codehighlighter1_57_74_Closed_Image.style.display='inline'; Codehighlighter1_57_74_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_57_74_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_57_74_Closed_Text.style.display='none'; Codehighlighter1_57_74_Open_Image.style.display='inline'; Codehighlighter1_57_74_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedSubBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;virtual&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;void&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;Display()&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_57_74_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_57_74_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{cout&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;A&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;endl;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top&gt;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;class&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;B:&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;public&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;A&lt;BR&gt;&lt;IMG id=Codehighlighter1_97_174_Open_Image onclick="this.style.display='none'; Codehighlighter1_97_174_Open_Text.style.display='none'; Codehighlighter1_97_174_Closed_Image.style.display='inline'; Codehighlighter1_97_174_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_97_174_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_97_174_Closed_Text.style.display='none'; Codehighlighter1_97_174_Open_Image.style.display='inline'; Codehighlighter1_97_174_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedBlock.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_97_174_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_97_174_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;public&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;:&lt;BR&gt;&lt;IMG id=Codehighlighter1_111_122_Open_Image onclick="this.style.display='none'; Codehighlighter1_111_122_Open_Text.style.display='none'; Codehighlighter1_111_122_Closed_Image.style.display='inline'; Codehighlighter1_111_122_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_111_122_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_111_122_Closed_Text.style.display='none'; Codehighlighter1_111_122_Open_Image.style.display='inline'; Codehighlighter1_111_122_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedSubBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;B()&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_111_122_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_111_122_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{Display();}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG id=Codehighlighter1_129_130_Open_Image onclick="this.style.display='none'; Codehighlighter1_129_130_Open_Text.style.display='none'; Codehighlighter1_129_130_Closed_Image.style.display='inline'; Codehighlighter1_129_130_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_129_130_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_129_130_Closed_Text.style.display='none'; Codehighlighter1_129_130_Open_Image.style.display='inline'; Codehighlighter1_129_130_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedSubBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;~&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;B()&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_129_130_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_129_130_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG id=Codehighlighter1_155_172_Open_Image onclick="this.style.display='none'; Codehighlighter1_155_172_Open_Text.style.display='none'; Codehighlighter1_155_172_Closed_Image.style.display='inline'; Codehighlighter1_155_172_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_155_172_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_155_172_Closed_Text.style.display='none'; Codehighlighter1_155_172_Open_Image.style.display='inline'; Codehighlighter1_155_172_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedSubBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;virtual&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;void&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;Display()&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_155_172_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_155_172_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{cout&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;B&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;endl;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top&gt;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;int&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;main()&lt;BR&gt;&lt;IMG id=Codehighlighter1_188_224_Open_Image onclick="this.style.display='none'; Codehighlighter1_188_224_Open_Text.style.display='none'; Codehighlighter1_188_224_Closed_Image.style.display='inline'; Codehighlighter1_188_224_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_188_224_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_188_224_Closed_Text.style.display='none'; Codehighlighter1_188_224_Open_Image.style.display='inline'; Codehighlighter1_188_224_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedBlock.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_188_224_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_188_224_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;B&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;*&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;pBb&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;B;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;delete&amp;nbsp;pBb;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top&gt;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;在B(){Display();}设定一个断点，跟踪到汇编代码得到如下代码：&lt;BR&gt;00401391&amp;nbsp;&amp;nbsp; mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; eax,dword ptr [ebp-10h]&lt;BR&gt;00401394&amp;nbsp;&amp;nbsp; mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dword ptr [eax],offset B::`vftable' (00432020)&lt;BR&gt;0040139A&amp;nbsp;&amp;nbsp; mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ecx,dword ptr [ebp-10h]&lt;BR&gt;0040139D&amp;nbsp;&amp;nbsp; call&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#ff0000&gt;@ILT+155(B::Display) (004010a0)&lt;/FONT&gt;&lt;BR&gt;前三排的代码是设置虚函数表，然后直接调用了B::Display函数，并没有通过虚函数表间接调用这个函数。这说明在构造函数中虽然虚函数表已经设置好了，但是调用虚函数是不会使用虚函数表的，是直接调用.&lt;BR&gt;&lt;BR&gt;下面的代码是非构造函数内经过虚函数表间接调用Display的汇编码：&lt;BR&gt;0040127E&amp;nbsp;&amp;nbsp; mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; edx,dword ptr [ebp-10h]&lt;BR&gt;00401281&amp;nbsp;&amp;nbsp; mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; eax,dword ptr [edx]&lt;BR&gt;00401283&amp;nbsp;&amp;nbsp; mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; esi,esp&lt;BR&gt;00401285&amp;nbsp;&amp;nbsp; mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ecx,dword ptr [ebp-10h]&lt;BR&gt;00401288&amp;nbsp;&amp;nbsp; call&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;FONT color=#ff0000&gt;dword ptr [eax]&lt;/FONT&gt;&lt;img src ="http://blog.vckbase.com/howto/aggbug/27120.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>莫问春秋</dc:creator><title>很遗憾，minix的阅读计划被我取消了</title><link>http://blog.vckbase.com/howto/archive/2006/12/31/23807.html</link><pubDate>Sun, 31 Dec 2006 15:20:00 GMT</pubDate><guid>http://blog.vckbase.com/howto/archive/2006/12/31/23807.html</guid><wfw:comment>http://blog.vckbase.com/howto/comments/23807.html</wfw:comment><comments>http://blog.vckbase.com/howto/archive/2006/12/31/23807.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://blog.vckbase.com/howto/comments/commentRss/23807.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/howto/services/trackbacks/23807.html</trackback:ping><description>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 可以说是迫于压力吧，工作这几个月来发现linux的用途太广泛了，既然这样发时间研究minix操作系统为什么不研究linux ？操作系统理论很成熟的，都是在x86上变化自然不大。&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 另外一个原因就是minix本身的问题，用它来研究x86硬件体系和基础操作系统实现很适合，但是某些高级功能是不可能在它里面找到的而linux有。&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 没什么好说的了，Go&amp;nbsp; on!&lt;img src ="http://blog.vckbase.com/howto/aggbug/23807.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>莫问春秋</dc:creator><title>今天一过就是2007年了，在这里作个总结吧！</title><link>http://blog.vckbase.com/howto/archive/2006/12/31/23805.html</link><pubDate>Sun, 31 Dec 2006 14:51:00 GMT</pubDate><guid>http://blog.vckbase.com/howto/archive/2006/12/31/23805.html</guid><wfw:comment>http://blog.vckbase.com/howto/comments/23805.html</wfw:comment><comments>http://blog.vckbase.com/howto/archive/2006/12/31/23805.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.vckbase.com/howto/comments/commentRss/23805.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/howto/services/trackbacks/23805.html</trackback:ping><description>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 今年认真读过的书：&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&amp;lt; code complete &amp;gt;&amp;gt;&amp;nbsp; :&amp;nbsp; 对于刚毕业的我来说，我认为正是这本书把我领进了软件工业的大门。&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&amp;lt; exception C++ style &amp;gt;&amp;gt;&amp;nbsp; : 对于C++爱好者来说，这本书让我更加深入了解C++语言。&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&amp;lt; 设计模式 &amp;gt;&amp;gt; : 做面向对象软件设计个人认为必看之书，还是比较好理解，不过要灵活运用恐怕需要多些时间。&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&amp;lt; 嵌入式实时操作系统uCOS-Ⅱ &amp;gt;&amp;gt; : 毕业设计是做操作系统的调度内核，认真研究了一下这本书。很高兴的一件事情，看过这本书后对操作系统产生了浓厚的兴趣。然后看了&amp;lt;&amp;lt;Operating&amp;nbsp;System&amp;nbsp;-&amp;nbsp;Design&amp;nbsp;and&amp;nbsp;Implement&amp;gt;&amp;gt;(minix)的前几章，很可惜后来换工作就没有继续看下去了，后来考虑一些比较现实的问题就决定看linux。这样研究操作系统就成为我下半年的主要业余任务。&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 个人比较喜欢收集经典书籍，所以这些书我都买下来了，其他的看过的电子书就不提了。&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 工作上取得的进步： &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 现在跟我刚出校门时简直没有什么变化，我还是需要时间和机会来证明自己的能力。我现在还是郁闷我的水平到底如何？&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 感觉也没什么好总结的，最大的宽慰就是现在对x86硬件体系和操作系统在全局有了把握。很可惜的是，这个过程中我浪费了很多时间在game上，不然应该更好的。&lt;BR&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 明年的事情在敲定工作后在打算吧。主要研究包括： linux操作系统源代码分析、C++深入研究、底层网络开发。&lt;img src ="http://blog.vckbase.com/howto/aggbug/23805.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>莫问春秋</dc:creator><title>[转贴]总结一下C++的名称查找顺序  from cppblog.com/shifan3</title><link>http://blog.vckbase.com/howto/archive/2006/12/29/23717.html</link><pubDate>Fri, 29 Dec 2006 02:44:00 GMT</pubDate><guid>http://blog.vckbase.com/howto/archive/2006/12/29/23717.html</guid><wfw:comment>http://blog.vckbase.com/howto/comments/23717.html</wfw:comment><comments>http://blog.vckbase.com/howto/archive/2006/12/29/23717.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.vckbase.com/howto/comments/commentRss/23717.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/howto/services/trackbacks/23717.html</trackback:ping><description>&lt;P&gt;1。符号查找（对于函数此时只看名字，不看参数）&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 大致顺序是&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (1)如果有限定名( XXX:: )那么就直接在XXX里查找&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (2)函数局部名字空间&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (3)(如果是成员)类名字空间&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (4)递归向上至所有基类的名字空间&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (5)当前名字空间&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (6)递归向外至所有外层名字空间,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 在任一层里, 用using导入的符号和该层的其他符号同一对待。&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; keonig查找: 对于函数, 如果参数为类/结构/模版类并位于其他的名字空间,&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 在(5)和(6)的查找中导入该空间(不递归向外)的符号一同查找.&lt;/P&gt;
&lt;P&gt;2。（如果是函数）重载决议（注意此时特化的函数不参与决议）&lt;/P&gt;
&lt;P&gt;3。（如果是类内部的名字）检查访问权（注意此时特化的函数仍然不参与决议）&lt;/P&gt;
&lt;P&gt;4。（如果找到了一个模版）模版特化决议&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;编译器执行以上步骤的时候是使用贪心匹配，只要找到一个符合当前检查内容的就会停止查&lt;BR&gt;找&lt;BR&gt;所以任何一层都有可能发生错误的掩盖情况&lt;/P&gt;
&lt;P&gt;例1&lt;BR&gt;&lt;/P&gt;
&lt;DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"&gt;&lt;SPAN style="COLOR: #008080"&gt;&amp;nbsp;1&lt;/SPAN&gt; &lt;IMG id=Codehighlighter1_11_12_Open_Image onclick="this.style.display='none'; Codehighlighter1_11_12_Open_Text.style.display='none'; Codehighlighter1_11_12_Closed_Image.style.display='inline'; Codehighlighter1_11_12_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top&gt; &lt;IMG id=Codehighlighter1_11_12_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_11_12_Closed_Text.style.display='none'; Codehighlighter1_11_12_Open_Image.style.display='inline'; Codehighlighter1_11_12_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top&gt; &lt;SPAN style="COLOR: #0000ff"&gt;void&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;f(&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;int&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;)&lt;/SPAN&gt; &lt;SPAN id=Codehighlighter1_11_12_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="http://www.cppblog.com/Images/dot.gif"&gt; &lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_11_12_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{}&lt;/SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;&amp;nbsp;2&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&lt;IMG src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;class&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;Y&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;&amp;nbsp;3&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&lt;IMG id=Codehighlighter1_22_81_Open_Image onclick="this.style.display='none'; Codehighlighter1_22_81_Open_Text.style.display='none'; Codehighlighter1_22_81_Closed_Image.style.display='inline'; Codehighlighter1_22_81_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top&gt; &lt;IMG id=Codehighlighter1_22_81_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_22_81_Closed_Text.style.display='none'; Codehighlighter1_22_81_Open_Image.style.display='inline'; Codehighlighter1_22_81_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top&gt; &lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_22_81_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="http://www.cppblog.com/Images/dot.gif"&gt; &lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_22_81_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;&amp;nbsp;4&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&lt;IMG src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;:&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;&amp;nbsp;5&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&lt;IMG id=Codehighlighter1_44_45_Open_Image onclick="this.style.display='none'; Codehighlighter1_44_45_Open_Text.style.display='none'; Codehighlighter1_44_45_Closed_Image.style.display='inline'; Codehighlighter1_44_45_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top&gt; &lt;IMG id=Codehighlighter1_44_45_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_44_45_Closed_Text.style.display='none'; Codehighlighter1_44_45_Open_Image.style.display='inline'; Codehighlighter1_44_45_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;void&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;f()&lt;/SPAN&gt; &lt;SPAN id=Codehighlighter1_44_45_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="http://www.cppblog.com/Images/dot.gif"&gt; &lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_44_45_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{}&lt;/SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;&amp;nbsp;6&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&lt;IMG src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Y()&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;&amp;nbsp;7&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&lt;IMG id=Codehighlighter1_59_79_Open_Image onclick="this.style.display='none'; Codehighlighter1_59_79_Open_Text.style.display='none'; Codehighlighter1_59_79_Closed_Image.style.display='inline'; Codehighlighter1_59_79_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top&gt; &lt;IMG id=Codehighlighter1_59_79_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_59_79_Closed_Text.style.display='none'; Codehighlighter1_59_79_Open_Image.style.display='inline'; Codehighlighter1_59_79_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;SPAN id=Codehighlighter1_59_79_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="http://www.cppblog.com/Images/dot.gif"&gt; &lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_59_79_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;&amp;nbsp;8&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&lt;IMG src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;f(&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;1&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;);&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;&amp;nbsp;9&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&lt;IMG src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008080"&gt;10&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&lt;IMG src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top&gt;}&lt;/SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;;&lt;/SPAN&gt; &lt;/DIV&gt;
&lt;P&gt;&lt;BR&gt;这里的f(2)在1.(2)这里找到了符号f，就不会向上到1.(5)查找到真正的f(int)了&lt;/P&gt;
&lt;P&gt;例2&lt;BR&gt;&lt;/P&gt;
&lt;DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"&gt;&lt;IMG id=Codehighlighter1_11_12_Open_Image onclick="this.style.display='none'; Codehighlighter1_11_12_Open_Text.style.display='none'; Codehighlighter1_11_12_Closed_Image.style.display='inline'; Codehighlighter1_11_12_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top&gt; &lt;IMG id=Codehighlighter1_11_12_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_11_12_Closed_Text.style.display='none'; Codehighlighter1_11_12_Open_Image.style.display='inline'; Codehighlighter1_11_12_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top&gt; &lt;SPAN style="COLOR: #0000ff"&gt;void&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;g(&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;int&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;)&lt;/SPAN&gt; &lt;SPAN id=Codehighlighter1_11_12_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="http://www.cppblog.com/Images/dot.gif"&gt; &lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_11_12_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{}&lt;/SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;namespace&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;S&lt;BR&gt;&lt;IMG id=Codehighlighter1_26_83_Open_Image onclick="this.style.display='none'; Codehighlighter1_26_83_Open_Text.style.display='none'; Codehighlighter1_26_83_Closed_Image.style.display='inline'; Codehighlighter1_26_83_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_26_83_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_26_83_Closed_Text.style.display='none'; Codehighlighter1_26_83_Open_Image.style.display='inline'; Codehighlighter1_26_83_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top&gt;&lt;/SPAN&gt; &lt;SPAN id=Codehighlighter1_26_83_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="http://www.cppblog.com/Images/dot.gif"&gt; &lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_26_83_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG id=Codehighlighter1_40_41_Open_Image onclick="this.style.display='none'; Codehighlighter1_40_41_Open_Text.style.display='none'; Codehighlighter1_40_41_Closed_Image.style.display='inline'; Codehighlighter1_40_41_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_40_41_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_40_41_Closed_Text.style.display='none'; Codehighlighter1_40_41_Open_Image.style.display='inline'; Codehighlighter1_40_41_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;void&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;g()&lt;/SPAN&gt; &lt;SPAN id=Codehighlighter1_40_41_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="http://www.cppblog.com/Images/dot.gif"&gt; &lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_40_41_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{}&lt;/SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top&gt; &lt;BR&gt;&lt;IMG src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;void&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;h()&lt;BR&gt;&lt;IMG id=Codehighlighter1_61_81_Open_Image onclick="this.style.display='none'; Codehighlighter1_61_81_Open_Text.style.display='none'; Codehighlighter1_61_81_Closed_Image.style.display='inline'; Codehighlighter1_61_81_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_61_81_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_61_81_Closed_Text.style.display='none'; Codehighlighter1_61_81_Open_Image.style.display='inline'; Codehighlighter1_61_81_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;SPAN id=Codehighlighter1_61_81_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="http://www.cppblog.com/Images/dot.gif"&gt; &lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_61_81_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;g(&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;1&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;);&lt;BR&gt;&lt;IMG src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top&gt;}&lt;/SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top&gt; &lt;BR&gt;&lt;IMG src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top&gt; &lt;/SPAN&gt;&lt;/DIV&gt;
&lt;P&gt;这里的g(1)在1.(5)这里找到了符号g，就不会向上到1.(6)查找到真正的g(int)了&lt;/P&gt;
&lt;P&gt;例3&lt;BR&gt;&lt;/P&gt;
&lt;DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"&gt;&lt;IMG src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top&gt; &lt;SPAN style="COLOR: #0000ff"&gt;class&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;Y&lt;BR&gt;&lt;IMG id=Codehighlighter1_8_69_Open_Image onclick="this.style.display='none'; Codehighlighter1_8_69_Open_Text.style.display='none'; Codehighlighter1_8_69_Closed_Image.style.display='inline'; Codehighlighter1_8_69_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_8_69_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_8_69_Closed_Text.style.display='none'; Codehighlighter1_8_69_Open_Image.style.display='inline'; Codehighlighter1_8_69_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top&gt;&lt;/SPAN&gt; &lt;SPAN id=Codehighlighter1_8_69_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="http://www.cppblog.com/Images/dot.gif"&gt; &lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_8_69_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG id=Codehighlighter1_25_26_Open_Image onclick="this.style.display='none'; Codehighlighter1_25_26_Open_Text.style.display='none'; Codehighlighter1_25_26_Closed_Image.style.display='inline'; Codehighlighter1_25_26_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_25_26_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_25_26_Closed_Text.style.display='none'; Codehighlighter1_25_26_Open_Image.style.display='inline'; Codehighlighter1_25_26_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;void&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;f(&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;int&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;)&lt;/SPAN&gt; &lt;SPAN id=Codehighlighter1_25_26_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="http://www.cppblog.com/Images/dot.gif"&gt; &lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_25_26_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{}&lt;/SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt; &lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt; &lt;SPAN style="COLOR: #008000"&gt;[1]&lt;/SPAN&gt; &lt;SPAN style="COLOR: #008000"&gt;&lt;BR&gt;&lt;IMG src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;:&lt;BR&gt;&lt;IMG id=Codehighlighter1_60_61_Open_Image onclick="this.style.display='none'; Codehighlighter1_60_61_Open_Text.style.display='none'; Codehighlighter1_60_61_Closed_Image.style.display='inline'; Codehighlighter1_60_61_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_60_61_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_60_61_Closed_Text.style.display='none'; Codehighlighter1_60_61_Open_Image.style.display='inline'; Codehighlighter1_60_61_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;void&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;f(&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;double&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;)&lt;/SPAN&gt; &lt;SPAN id=Codehighlighter1_60_61_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="http://www.cppblog.com/Images/dot.gif"&gt; &lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_60_61_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{}&lt;/SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt; &lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt; &lt;SPAN style="COLOR: #008000"&gt;[2]&lt;/SPAN&gt; &lt;SPAN style="COLOR: #008000"&gt;&lt;BR&gt;&lt;IMG src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;}&lt;/SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;;&lt;BR&gt;&lt;IMG src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top&gt;&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;int&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;main()&lt;BR&gt;&lt;IMG id=Codehighlighter1_84_107_Open_Image onclick="this.style.display='none'; Codehighlighter1_84_107_Open_Text.style.display='none'; Codehighlighter1_84_107_Closed_Image.style.display='inline'; Codehighlighter1_84_107_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_84_107_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_84_107_Closed_Text.style.display='none'; Codehighlighter1_84_107_Open_Image.style.display='inline'; Codehighlighter1_84_107_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top&gt;&lt;/SPAN&gt; &lt;SPAN id=Codehighlighter1_84_107_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="http://www.cppblog.com/Images/dot.gif"&gt; &lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_84_107_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Y&amp;nbsp;y;&lt;BR&gt;&lt;IMG src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;y.f(&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;1&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;);&lt;BR&gt;&lt;IMG src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top&gt;}&lt;/SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top&gt; &lt;BR&gt;&lt;IMG src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top&gt; &lt;/SPAN&gt;&lt;/DIV&gt;
&lt;P&gt;y.f(1)会调用[2]吗？不会，因为在第2步重载决议的时候就选定[1]了，因此这段代码会报&lt;BR&gt;出无法访问private成员的错误&lt;/P&gt;
&lt;P&gt;例4&lt;BR&gt;&lt;/P&gt;
&lt;DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"&gt;&lt;IMG src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top&gt; &lt;SPAN style="COLOR: #000000"&gt;template&amp;nbsp;&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;typename&amp;nbsp;T&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&amp;gt;&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG id=Codehighlighter1_31_32_Open_Image onclick="this.style.display='none'; Codehighlighter1_31_32_Open_Text.style.display='none'; Codehighlighter1_31_32_Closed_Image.style.display='inline'; Codehighlighter1_31_32_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top&gt; &lt;IMG id=Codehighlighter1_31_32_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_31_32_Closed_Text.style.display='none'; Codehighlighter1_31_32_Open_Image.style.display='inline'; Codehighlighter1_31_32_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;void&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;f(T)&lt;/SPAN&gt; &lt;SPAN id=Codehighlighter1_31_32_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="http://www.cppblog.com/Images/dot.gif"&gt; &lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_31_32_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{}&lt;/SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt; &lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt; &lt;SPAN style="COLOR: #008000"&gt;[1]&lt;/SPAN&gt; &lt;SPAN style="COLOR: #008000"&gt;&lt;BR&gt;&lt;IMG src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top&gt;template&amp;nbsp;&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;typename&amp;nbsp;T&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&amp;gt;&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG id=Codehighlighter1_73_74_Open_Image onclick="this.style.display='none'; Codehighlighter1_73_74_Open_Text.style.display='none'; Codehighlighter1_73_74_Closed_Image.style.display='inline'; Codehighlighter1_73_74_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top&gt; &lt;IMG id=Codehighlighter1_73_74_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_73_74_Closed_Text.style.display='none'; Codehighlighter1_73_74_Open_Image.style.display='inline'; Codehighlighter1_73_74_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;void&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;f(T&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;*&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;)&lt;/SPAN&gt; &lt;SPAN id=Codehighlighter1_73_74_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="http://www.cppblog.com/Images/dot.gif"&gt; &lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_73_74_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{}&lt;/SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt; &lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt; &lt;SPAN style="COLOR: #008000"&gt;[2]&lt;/SPAN&gt; &lt;SPAN style="COLOR: #008000"&gt;&lt;BR&gt;&lt;IMG src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top&gt;template&amp;nbsp;&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&amp;gt;&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG id=Codehighlighter1_113_114_Open_Image onclick="this.style.display='none'; Codehighlighter1_113_114_Open_Text.style.display='none'; Codehighlighter1_113_114_Closed_Image.style.display='inline'; Codehighlighter1_113_114_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top&gt; &lt;IMG id=Codehighlighter1_113_114_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_113_114_Closed_Text.style.display='none'; Codehighlighter1_113_114_Open_Image.style.display='inline'; Codehighlighter1_113_114_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;void&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;f&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;int&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;*&amp;gt;&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;(&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;int&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;*&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;)&lt;/SPAN&gt; &lt;SPAN id=Codehighlighter1_113_114_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="http://www.cppblog.com/Images/dot.gif"&gt; &lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_113_114_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{}&lt;/SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt; &lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt; &lt;SPAN style="COLOR: #008000"&gt;[3]&lt;/SPAN&gt; &lt;SPAN style="COLOR: #008000"&gt;&lt;BR&gt;&lt;IMG src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top&gt; &lt;BR&gt;&lt;IMG src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;int&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;main()&lt;BR&gt;&lt;IMG id=Codehighlighter1_135_163_Open_Image onclick="this.style.display='none'; Codehighlighter1_135_163_Open_Text.style.display='none'; Codehighlighter1_135_163_Closed_Image.style.display='inline'; Codehighlighter1_135_163_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_135_163_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_135_163_Closed_Text.style.display='none'; Codehighlighter1_135_163_Open_Image.style.display='inline'; Codehighlighter1_135_163_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top&gt;&lt;/SPAN&gt; &lt;SPAN id=Codehighlighter1_135_163_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="http://www.cppblog.com/Images/dot.gif"&gt; &lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_135_163_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;int&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;*&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;p&amp;nbsp;&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;;&lt;BR&gt;&lt;IMG src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;f(p);&lt;BR&gt;&lt;IMG src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top&gt;}&lt;/SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top&gt; &lt;BR&gt;&lt;IMG src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top&gt; &lt;/SPAN&gt;&lt;/DIV&gt;
&lt;P&gt;这里的f(p)会调用[3]吗？&lt;BR&gt;不会，因为在进行到第二步重载决议的时候，只有[1]和[2]参与了重载决议，结果选择了&lt;BR&gt;[2]，那么[1]的特化版本[3]当然就轮不到了。&lt;/P&gt;
&lt;P&gt;例5&lt;BR&gt;&lt;/P&gt;
&lt;DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"&gt;&lt;IMG src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top&gt; &lt;SPAN style="COLOR: #0000ff"&gt;class&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;X&lt;BR&gt;&lt;IMG id=Codehighlighter1_8_88_Open_Image onclick="this.style.display='none'; Codehighlighter1_8_88_Open_Text.style.display='none'; Codehighlighter1_8_88_Closed_Image.style.display='inline'; Codehighlighter1_8_88_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_8_88_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_8_88_Closed_Text.style.display='none'; Codehighlighter1_8_88_Open_Image.style.display='inline'; Codehighlighter1_8_88_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top&gt;&lt;/SPAN&gt; &lt;SPAN id=Codehighlighter1_8_88_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="http://www.cppblog.com/Images/dot.gif"&gt; &lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_8_88_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG id=Codehighlighter1_45_46_Open_Image onclick="this.style.display='none'; Codehighlighter1_45_46_Open_Text.style.display='none'; Codehighlighter1_45_46_Closed_Image.style.display='inline'; Codehighlighter1_45_46_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_45_46_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_45_46_Closed_Text.style.display='none'; Codehighlighter1_45_46_Open_Image.style.display='inline'; Codehighlighter1_45_46_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;template&amp;nbsp;&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;typename&amp;nbsp;T&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&amp;gt;&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;void&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;g()&amp;nbsp;&lt;/SPAN&gt; &lt;SPAN id=Codehighlighter1_45_46_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="http://www.cppblog.com/Images/dot.gif"&gt; &lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_45_46_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{}&lt;/SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;:&lt;BR&gt;&lt;IMG id=Codehighlighter1_85_86_Open_Image onclick="this.style.display='none'; Codehighlighter1_85_86_Open_Text.style.display='none'; Codehighlighter1_85_86_Closed_Image.style.display='inline'; Codehighlighter1_85_86_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_85_86_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_85_86_Closed_Text.style.display='none'; Codehighlighter1_85_86_Open_Image.style.display='inline'; Codehighlighter1_85_86_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;template&amp;nbsp;&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&amp;gt;&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;void&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;g&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;int&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&amp;gt;&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;()&lt;/SPAN&gt; &lt;SPAN id=Codehighlighter1_85_86_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="http://www.cppblog.com/Images/dot.gif"&gt; &lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_85_86_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{}&lt;/SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top&gt;}&lt;/SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;;&lt;BR&gt;&lt;IMG src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top&gt;&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;int&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;main()&lt;BR&gt;&lt;IMG id=Codehighlighter1_103_130_Open_Image onclick="this.style.display='none'; Codehighlighter1_103_130_Open_Text.style.display='none'; Codehighlighter1_103_130_Closed_Image.style.display='inline'; Codehighlighter1_103_130_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_103_130_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_103_130_Closed_Text.style.display='none'; Codehighlighter1_103_130_Open_Image.style.display='inline'; Codehighlighter1_103_130_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top&gt;&lt;/SPAN&gt; &lt;SPAN id=Codehighlighter1_103_130_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="http://www.cppblog.com/Images/dot.gif"&gt; &lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_103_130_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;X&amp;nbsp;y;&lt;BR&gt;&lt;IMG src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;y.g&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;int&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&amp;gt;&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;();&lt;BR&gt;&lt;IMG src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top&gt;}&lt;/SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top&gt; &lt;BR&gt;&lt;IMG src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top&gt; &lt;/SPAN&gt;&lt;/DIV&gt;
&lt;P&gt;这里首先第3步访问检查发现g为private（此时g的特化版本被直接无视了），所以即使&lt;BR&gt;g&amp;lt;int&amp;gt;为public, 该段代码仍然不能够编译通过&lt;/P&gt;
&lt;P&gt;例6&lt;BR&gt;&lt;/P&gt;
&lt;DIV style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"&gt;&lt;IMG src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top&gt; &lt;SPAN style="COLOR: #0000ff"&gt;namespace&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;E&lt;BR&gt;&lt;IMG id=Codehighlighter1_12_51_Open_Image onclick="this.style.display='none'; Codehighlighter1_12_51_Open_Text.style.display='none'; Codehighlighter1_12_51_Closed_Image.style.display='inline'; Codehighlighter1_12_51_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_12_51_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_12_51_Closed_Text.style.display='none'; Codehighlighter1_12_51_Open_Image.style.display='inline'; Codehighlighter1_12_51_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top&gt;&lt;/SPAN&gt; &lt;SPAN id=Codehighlighter1_12_51_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="http://www.cppblog.com/Images/dot.gif"&gt; &lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_12_51_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG id=Codehighlighter1_25_26_Open_Image onclick="this.style.display='none'; Codehighlighter1_25_26_Open_Text.style.display='none'; Codehighlighter1_25_26_Closed_Image.style.display='inline'; Codehighlighter1_25_26_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_25_26_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_25_26_Closed_Text.style.display='none'; Codehighlighter1_25_26_Open_Image.style.display='inline'; Codehighlighter1_25_26_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;class&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;X&lt;/SPAN&gt; &lt;SPAN id=Codehighlighter1_25_26_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="http://www.cppblog.com/Images/dot.gif"&gt; &lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_25_26_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{}&lt;/SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;;&lt;BR&gt;&lt;IMG id=Codehighlighter1_42_43_Open_Image onclick="this.style.display='none'; Codehighlighter1_42_43_Open_Text.style.display='none'; Codehighlighter1_42_43_Closed_Image.style.display='inline'; Codehighlighter1_42_43_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_42_43_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_42_43_Closed_Text.style.display='none'; Codehighlighter1_42_43_Open_Image.style.display='inline'; Codehighlighter1_42_43_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;void&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;f(X)&lt;/SPAN&gt; &lt;SPAN id=Codehighlighter1_42_43_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="http://www.cppblog.com/Images/dot.gif"&gt; &lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_42_43_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{}&lt;/SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt; &lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt; &lt;SPAN style="COLOR: #008000"&gt;[1]&lt;/SPAN&gt; &lt;SPAN style="COLOR: #008000"&gt;&lt;BR&gt;&lt;IMG src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;}&lt;/SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top&gt; &lt;BR&gt;&lt;IMG id=Codehighlighter1_66_67_Open_Image onclick="this.style.display='none'; Codehighlighter1_66_67_Open_Text.style.display='none'; Codehighlighter1_66_67_Closed_Image.style.display='inline'; Codehighlighter1_66_67_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top&gt; &lt;IMG id=Codehighlighter1_66_67_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_66_67_Closed_Text.style.display='none'; Codehighlighter1_66_67_Open_Image.style.display='inline'; Codehighlighter1_66_67_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;void&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;f(E::X)&lt;/SPAN&gt; &lt;SPAN id=Codehighlighter1_66_67_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="http://www.cppblog.com/Images/dot.gif"&gt; &lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_66_67_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{}&lt;/SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt; &lt;SPAN style="COLOR: #008000"&gt;[2]&lt;/SPAN&gt; &lt;SPAN style="COLOR: #008000"&gt;&lt;BR&gt;&lt;IMG src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;class&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;X&lt;BR&gt;&lt;IMG id=Codehighlighter1_85_177_Open_Image onclick="this.style.display='none'; Codehighlighter1_85_177_Open_Text.style.display='none'; Codehighlighter1_85_177_Closed_Image.style.display='inline'; Codehighlighter1_85_177_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_85_177_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_85_177_Closed_Text.style.display='none'; Codehighlighter1_85_177_Open_Image.style.display='inline'; Codehighlighter1_85_177_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top&gt;&lt;/SPAN&gt; &lt;SPAN id=Codehighlighter1_85_177_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="http://www.cppblog.com/Images/dot.gif"&gt; &lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_85_177_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top&gt;&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;:&lt;BR&gt;&lt;IMG id=Codehighlighter1_107_108_Open_Image onclick="this.style.display='none'; Codehighlighter1_107_108_Open_Text.style.display='none'; Codehighlighter1_107_108_Closed_Image.style.display='inline'; Codehighlighter1_107_108_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_107_108_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_107_108_Closed_Text.style.display='none'; Codehighlighter1_107_108_Open_Image.style.display='inline'; Codehighlighter1_107_108_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;void&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;f()&lt;/SPAN&gt; &lt;SPAN id=Codehighlighter1_107_108_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="http://www.cppblog.com/Images/dot.gif"&gt; &lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_107_108_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{}&lt;/SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt; &lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt; &lt;SPAN style="COLOR: #008000"&gt;[3]&lt;/SPAN&gt; &lt;SPAN style="COLOR: #008000"&gt;&lt;BR&gt;&lt;IMG src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;void&lt;/SPAN&gt; &lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;g()&lt;BR&gt;&lt;IMG id=Codehighlighter1_133_175_Open_Image onclick="this.style.display='none'; Codehighlighter1_133_175_Open_Text.style.display='none'; Codehighlighter1_133_175_Closed_Image.style.display='inline'; Codehighlighter1_133_175_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_133_175_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_133_175_Closed_Text.style.display='none'; Codehighlighter1_133_175_Open_Image.style.display='inline'; Codehighlighter1_133_175_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt; &lt;SPAN id=Codehighlighter1_133_175_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="http://www.cppblog.com/Images/dot.gif"&gt; &lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_133_175_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;E::X&amp;nbsp;x;&lt;BR&gt;&lt;IMG src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;f(x);&amp;nbsp;&lt;/SPAN&gt; &lt;SPAN style="COLOR: #008000"&gt;//&lt;/SPAN&gt; &lt;SPAN style="COLOR: #008000"&gt;[4]&lt;/SPAN&gt; &lt;SPAN style="COLOR: #008000"&gt;&lt;BR&gt;&lt;IMG src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top&gt;}&lt;/SPAN&gt; &lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;;&lt;BR&gt;&lt;IMG src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top&gt;&lt;/SPAN&gt; &lt;/DIV&gt;
&lt;P&gt;[4]会调用那个呢? 在1.(3)里就确定了是[3],因此参数不匹配&lt;BR&gt;如果注释掉[3]的f,那么由于koenig查找, 在1.(5)里[1]和[2]都会是平等的可选项&lt;BR&gt;所以会出现二义性.&lt;BR&gt;如果把namespace E改为class E, 把E中的f改为静态函数&lt;BR&gt;由于koenig查找仅仅导入参数的名字空间, 因此[1]将不参与1.(5)的查找,&lt;BR&gt;最终结果会是[2]&lt;/P&gt;&lt;img src ="http://blog.vckbase.com/howto/aggbug/23717.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>莫问春秋</dc:creator><title>短短2个多月，身边变化太大了</title><link>http://blog.vckbase.com/howto/archive/2006/12/25/23659.html</link><pubDate>Mon, 25 Dec 2006 09:47:00 GMT</pubDate><guid>http://blog.vckbase.com/howto/archive/2006/12/25/23659.html</guid><wfw:comment>http://blog.vckbase.com/howto/comments/23659.html</wfw:comment><comments>http://blog.vckbase.com/howto/archive/2006/12/25/23659.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://blog.vckbase.com/howto/comments/commentRss/23659.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/howto/services/trackbacks/23659.html</trackback:ping><description>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 毕业后10月份离开了实习的那家公司，原因很简单，公司根本就不是搞软件的。&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;接下来开始重新找工作，所以就没有看minix了，花了一个月搞定了新工作，公司是搞操作系统的，心理自然很高兴。然后又开始上班，很可惜的是，公司让我去搞gui库，偏偏我对这个没丝毫兴趣。不过自问在那里呆的1个半月我还是认真负责的做自己的工作，并没有因为兴趣而懈怠。&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 突然接到华为叫我去报道的电话通知 ，我觉得这是个机会啊，毅然决定去深圳。可是现在28号了，还没等到书面的报道通知 。打过几次电话给他们人事部，只有一个叫我等待的答复。&amp;nbsp;既然已经出来了，就打算在这边呆一呆 。不过老是这样等待让我觉得这个事情有点玄，所以我也开始投简历了。&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 这边的同学都说这边机会多，这个我自然相信。不过经过毕业后的这几个月的经历，认识到找工作真的要慎重。自己的个性真的不喜欢总是换工作。既然已经出来了，就要找个自己能够长久适宜的工作。&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 努力吧！！自己的路还很长啊。听这边的同学谈了一下深圳的情况，我和他们那些学长的差距还很大啊！！ &lt;img src ="http://blog.vckbase.com/howto/aggbug/23659.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>莫问春秋</dc:creator><title>Minix3 Context Switch实现分析</title><link>http://blog.vckbase.com/howto/archive/2006/09/04/22226.html</link><pubDate>Mon, 04 Sep 2006 07:57:00 GMT</pubDate><guid>http://blog.vckbase.com/howto/archive/2006/09/04/22226.html</guid><wfw:comment>http://blog.vckbase.com/howto/comments/22226.html</wfw:comment><comments>http://blog.vckbase.com/howto/archive/2006/09/04/22226.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://blog.vckbase.com/howto/comments/commentRss/22226.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/howto/services/trackbacks/22226.html</trackback:ping><description>&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 以前我研究过ucosII的源代码，对应于x86来说，ucos是实模式下面的操作系统。而Minix是保护模式下的操作系统，自然他们的Context Switch有不一样的地方，现在，我就结合我知道的知识谈一下二者的区别。&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Context Switch是多任务操作系统必不可少的部分，它的主要任务就是保护cpu的执行现场，将cpu的寄存器保存起来。在这一点上Minix3 和ucosII是没有区别的。同时二者在实现的层面上都和堆栈有关。&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 现在着重谈一下他们的区别：&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 第一个首要关注的地方就是x86的硬件体系，保护模式下的内容远远比实模式丰富，研究保护模式下的操作系统，必然跟GDT、LDT、IDT发生关系。所以，保护模式下Conext Switch就要比实模式复杂些。&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ucosII在实现Context Switch时，仅仅将cpu的执行现场也就是寄存器保存在任务自己的堆栈中，保存和还原任务寄存器的功能都是通过中断机制完成的。保护模式下的Context Switch的内容就要丰富的多，首要提到的东西就是新增加的tr寄存器，tr寄存器保存的是任务状态段&lt;BR&gt;TSS的段选择子。&lt;/P&gt;
&lt;DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"&gt;
&lt;DIV&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;SPAN style="COLOR: #0000ff"&gt;struct&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;tss_s&amp;nbsp;&lt;BR&gt;&lt;IMG id=Codehighlighter1_14_194_Open_Image onclick="this.style.display='none'; Codehighlighter1_14_194_Open_Text.style.display='none'; Codehighlighter1_14_194_Closed_Image.style.display='inline'; Codehighlighter1_14_194_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_14_194_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_14_194_Closed_Text.style.display='none'; Codehighlighter1_14_194_Open_Image.style.display='inline'; Codehighlighter1_14_194_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedBlock.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_14_194_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_14_194_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;reg_t&amp;nbsp;backlink;&lt;BR&gt;&lt;IMG id=Codehighlighter1_66_108_Open_Image onclick="this.style.display='none'; Codehighlighter1_66_108_Open_Text.style.display='none'; Codehighlighter1_66_108_Closed_Image.style.display='inline'; Codehighlighter1_66_108_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_66_108_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_66_108_Closed_Text.style.display='none'; Codehighlighter1_66_108_Open_Image.style.display='inline'; Codehighlighter1_66_108_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedSubBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;reg_t&amp;nbsp;sp0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_66_108_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;/**/&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_66_108_Open_Text&gt;&lt;SPAN style="COLOR: #008000"&gt;/*&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&amp;nbsp;stack&amp;nbsp;pointer&amp;nbsp;to&amp;nbsp;use&amp;nbsp;during&amp;nbsp;interrupt&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;*/&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG id=Codehighlighter1_142_184_Open_Image onclick="this.style.display='none'; Codehighlighter1_142_184_Open_Text.style.display='none'; Codehighlighter1_142_184_Closed_Image.style.display='inline'; Codehighlighter1_142_184_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_142_184_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_142_184_Closed_Text.style.display='none'; Codehighlighter1_142_184_Open_Image.style.display='inline'; Codehighlighter1_142_184_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedSubBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;reg_t&amp;nbsp;ss0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_142_184_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;/**/&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_142_184_Open_Text&gt;&lt;SPAN style="COLOR: #008000"&gt;/*&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;"&amp;nbsp;&amp;nbsp;&amp;nbsp;segment&amp;nbsp;&amp;nbsp;"&amp;nbsp;&amp;nbsp;"&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;"&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;"&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;*/&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;.&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;.&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top&gt;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;struct&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;tss_s&amp;nbsp;tss;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;tss.ss0&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;DS_SELECTOR;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;init_dataseg(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;amp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;gdt[TSS_INDEX],&amp;nbsp;vir2phys(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;amp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;tss),&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;sizeof&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;(tss),&amp;nbsp;INTR_PRIVILEGE);&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;gdt[TSS_INDEX].access&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;PRESENT&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;|&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;(INTR_PRIVILEGE&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;lt;&amp;lt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;DPL_SHIFT)&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;|&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;TSS_TYPE;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 可以看出，TSS段实际上就是保存一个tss_s结构。那tss_s又有什么用？&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 首先需要说明，保护模式下发生Context Switch时，cpu寄存器并不是保存在自己的工作堆栈中的，而是保存在进程控制块中的。 
&lt;DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"&gt;
&lt;DIV&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;SPAN style="COLOR: #0000ff"&gt;struct&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;proc&amp;nbsp;&lt;BR&gt;&lt;IMG id=Codehighlighter1_13_98_Open_Image onclick="this.style.display='none'; Codehighlighter1_13_98_Open_Text.style.display='none'; Codehighlighter1_13_98_Closed_Image.style.display='inline'; Codehighlighter1_13_98_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_13_98_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_13_98_Closed_Text.style.display='none'; Codehighlighter1_13_98_Open_Image.style.display='inline'; Codehighlighter1_13_98_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedBlock.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_13_98_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;&lt;IMG src="/Images/dot.gif"&gt;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_13_98_Open_Text&gt;&lt;SPAN style="COLOR: #000000"&gt;{&lt;BR&gt;&lt;IMG id=Codehighlighter1_44_88_Open_Image onclick="this.style.display='none'; Codehighlighter1_44_88_Open_Text.style.display='none'; Codehighlighter1_44_88_Closed_Image.style.display='inline'; Codehighlighter1_44_88_Closed_Text.style.display='inline';" src="/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top&gt;&lt;IMG id=Codehighlighter1_44_88_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_44_88_Closed_Text.style.display='none'; Codehighlighter1_44_88_Open_Image.style.display='inline'; Codehighlighter1_44_88_Open_Text.style.display='inline';" src="/Images/OutliningIndicators/ContractedSubBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;struct&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;stackframe_s&amp;nbsp;p_reg;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_44_88_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"&gt;/**/&lt;/SPAN&gt;&lt;SPAN id=Codehighlighter1_44_88_Open_Text&gt;&lt;SPAN style="COLOR: #008000"&gt;/*&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;&amp;nbsp;process'&amp;nbsp;registers&amp;nbsp;saved&amp;nbsp;in&amp;nbsp;stack&amp;nbsp;frame&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #008000"&gt;*/&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;.&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/InBlock.gif" align=top&gt;&amp;nbsp;&amp;nbsp;.&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top&gt;}&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tss_s的两个最重要的成员就是sp0和ss0。ss0用来指明任务控制块位于数据段内，sp0就指向p_reg的最高位，因为x86的堆栈是向下增加的。&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 这样，当中断发生时，通过tr就能够找到tss的sp0和ss0，然后就能够寻址到p_reg，中断将自动压入一些寄存器的指，另外一些则需要我们来压入,如下通过save函数。以下是一个简化的中断处理过程。 
&lt;DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"&gt;
&lt;DIV&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;call&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;save&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ret&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;!&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;为什么是ret而不是iret，因为ret会跳到_restart然后iret(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;?&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;push&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_restart&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;?&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;)&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;相关代码如下：&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.align&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;16&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;save:&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cld&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;!&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;set&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;direction&amp;nbsp;flag&amp;nbsp;to&amp;nbsp;a&amp;nbsp;known&amp;nbsp;value&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pushad&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;!&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;save&amp;nbsp;EAX,&amp;nbsp;ECX,&amp;nbsp;EDX,&amp;nbsp;EBX,&amp;nbsp;original&amp;nbsp;ESP,&amp;nbsp;EBP,&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;!&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;ESI,&amp;nbsp;and&amp;nbsp;EDI&amp;nbsp;registers&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;o16&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;push&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ds&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;!&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;save&amp;nbsp;ds&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;o16&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;push&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;es&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;!&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;save&amp;nbsp;es&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;o16&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;push&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fs&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;!&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;save&amp;nbsp;fs&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;o16&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;push&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;gs&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;!&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;save&amp;nbsp;gs&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dx,&amp;nbsp;ss&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;!&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;ss&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;is&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;kernel&amp;nbsp;data&amp;nbsp;segment，&amp;nbsp;tss.ss0&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;=&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;DS_SELECTOR&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ds,&amp;nbsp;dx&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;!&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;load&amp;nbsp;rest&amp;nbsp;of&amp;nbsp;kernel&amp;nbsp;segments&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;es,&amp;nbsp;dx&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;!&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;kernel&amp;nbsp;does&amp;nbsp;not&amp;nbsp;use&amp;nbsp;fs,&amp;nbsp;gs&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;eax,&amp;nbsp;esp&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;!&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;prepare&amp;nbsp;to&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;return&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;incb&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(_k_reenter)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;!&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;from&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;-&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;1&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;if&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;not&amp;nbsp;reentering&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;jnz&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;set_restart1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;!&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;stack&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;is&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;already&amp;nbsp;kernel&amp;nbsp;stack&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;esp,&amp;nbsp;k_stktop&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;!&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;push&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;_restart&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;!&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;build&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;return&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;address&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;for&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;int&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;handler&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;xor&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ebp,&amp;nbsp;ebp&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;!&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;for&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;stacktrace&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;jmp&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RETADR&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;-&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;P_STACKBASE(eax)&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;!&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;堆栈sp已经被改变了，所以只能够通过硬寻址找到返回地址&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.align&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;4&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;set_restart1:&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;push&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;restart1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;!&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;存在中断嵌套&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;jmp&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RETADR&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;-&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;P_STACKBASE(eax)&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;_restart:&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;!&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;找到更高优先级的任务，并将相应任务控制块的p_reg赋值给tss.sp0&amp;nbsp;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cmp&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(_next_ptr),&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;!&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;see&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;if&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;another&amp;nbsp;process&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;is&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;scheduled&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;jz&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;0f&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;eax,&amp;nbsp;(_next_ptr)&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(_proc_ptr),&amp;nbsp;eax&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;!&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;schedule&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;process&amp;nbsp;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(_next_ptr),&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;esp,&amp;nbsp;(_proc_ptr)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;!&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;will&amp;nbsp;assume&amp;nbsp;P_STACKBASE&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;==&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lldt&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;P_LDT_SEL(esp)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;!&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;enable&amp;nbsp;process&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;'&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;segment&amp;nbsp;descriptors&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lea&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;eax,&amp;nbsp;P_STACKTOP(esp)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;!&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;arrange&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;for&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;next&amp;nbsp;interrupt&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(_tss&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;+&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;TSS3_S_SP0),&amp;nbsp;eax&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;!&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;to&amp;nbsp;save&amp;nbsp;state&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;in&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;process&amp;nbsp;table&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;restart1:&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;decb&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(_k_reenter)&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;o16&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pop&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;gs&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;o16&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pop&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fs&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;o16&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pop&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;es&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;o16&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;pop&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ds&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;popad&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;add&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;esp,&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;4&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;!&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;skip&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;return&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;adr(&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;?&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;call&amp;nbsp;save&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;?&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;)&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;iretd&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;!&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;continue&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;process&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;/SPAN&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;BR&gt;-----------------------------------------------------------------------------------------------------------&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 如果随笔中有什么错误，还请大家指教。谢谢！&lt;img src ="http://blog.vckbase.com/howto/aggbug/22226.html" width = "1" height = "1" /&gt;</description></item><item><dc:creator>莫问春秋</dc:creator><title>mpx386.asm细节小记</title><link>http://blog.vckbase.com/howto/archive/2006/08/31/22170.html</link><pubDate>Thu, 31 Aug 2006 08:42:00 GMT</pubDate><guid>http://blog.vckbase.com/howto/archive/2006/08/31/22170.html</guid><wfw:comment>http://blog.vckbase.com/howto/comments/22170.html</wfw:comment><comments>http://blog.vckbase.com/howto/archive/2006/08/31/22170.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blog.vckbase.com/howto/comments/commentRss/22170.html</wfw:commentRss><trackback:ping>http://blog.vckbase.com/howto/services/trackbacks/22170.html</trackback:ping><description>&amp;nbsp; 这只是mpx386.asm文件的一部分内容，随着学习的深入我会把余下部分的注解也写下来。不过有一点很抱歉，我的这个注解主要是写给自己看，以免以后遗忘后无从下手。所以注解未免太个人化，不太容易懂。敬请谅解！&lt;BR&gt;&lt;BR&gt;
&lt;DIV style="BORDER-RIGHT: windowtext 0.5pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: windowtext 0.5pt solid; PADDING-LEFT: 5.4pt; BACKGROUND: #e6e6e6; PADDING-BOTTOM: 4px; BORDER-LEFT: windowtext 0.5pt solid; WIDTH: 98%; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid"&gt;
&lt;DIV&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;SPAN style="COLOR: #000000"&gt;!&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;在阅读这份代码之前，必须了解cpu的保护模式、GDT、LDT、IDT等相关概念。&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;.sect&amp;nbsp;.text&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;!*===========================================================================*&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;!*&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MINIX&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;*&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;!*===========================================================================*&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;MINIX:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;!&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;this&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;is&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;the&amp;nbsp;entry&amp;nbsp;point&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;for&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;the&amp;nbsp;MINIX&amp;nbsp;kernel&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;jmp&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;over_flags&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;!&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;skip&amp;nbsp;over&amp;nbsp;the&amp;nbsp;next&amp;nbsp;few&amp;nbsp;bytes&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.data2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CLICK_SHIFT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;!&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;for&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;the&amp;nbsp;monitor:&amp;nbsp;memory&amp;nbsp;granularity&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;flags:&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.data2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0x01FD&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;!&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;boot&amp;nbsp;monitor&amp;nbsp;flags:&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;!&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;call&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;in&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;386&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;mode,&amp;nbsp;make&amp;nbsp;bss,&amp;nbsp;make&amp;nbsp;stack,&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;!&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;load&amp;nbsp;high,&amp;nbsp;don&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;'&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;t&amp;nbsp;patch,&amp;nbsp;will&amp;nbsp;return,&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;!&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;uses&amp;nbsp;generic&amp;nbsp;INT,&amp;nbsp;memory&amp;nbsp;vector,&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;!&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;boot&amp;nbsp;code&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;return&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;nop&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;!&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;extra&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;byte&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;to&amp;nbsp;sync&amp;nbsp;up&amp;nbsp;disassembler&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;over_flags:&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;!&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;在minix中将引导kernel也就是MINIX标签前的执行代码称之为mointor。&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;!&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;The&amp;nbsp;monitor&amp;nbsp;sets&amp;nbsp;CS&amp;nbsp;to&amp;nbsp;the&amp;nbsp;kernel&amp;nbsp;code,&amp;nbsp;DS&amp;nbsp;to&amp;nbsp;kernel&amp;nbsp;data,&amp;nbsp;ES&amp;nbsp;to&amp;nbsp;a&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;flat&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;!&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;4G&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;"&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;descriptor&amp;nbsp;that&amp;nbsp;address&amp;nbsp;all&amp;nbsp;memory&amp;nbsp;simply&amp;nbsp;from&amp;nbsp;0&amp;nbsp;up,&amp;nbsp;and&amp;nbsp;SS&amp;nbsp;still&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;!&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;points&amp;nbsp;to&amp;nbsp;the&amp;nbsp;monitor&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;'&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;s&amp;nbsp;stack.&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;!&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;Set&amp;nbsp;up&amp;nbsp;a&amp;nbsp;C&amp;nbsp;stack&amp;nbsp;frame&amp;nbsp;on&amp;nbsp;the&amp;nbsp;monitor&amp;nbsp;stack.&amp;nbsp;&amp;nbsp;(The&amp;nbsp;monitor&amp;nbsp;sets&amp;nbsp;cs&amp;nbsp;and&amp;nbsp;ds&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;!&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;right.&amp;nbsp;&amp;nbsp;The&amp;nbsp;ss&amp;nbsp;descriptor&amp;nbsp;still&amp;nbsp;references&amp;nbsp;the&amp;nbsp;monitor&amp;nbsp;data&amp;nbsp;segment.)&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;movzx&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;esp,&amp;nbsp;sp&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;!&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;monitor&amp;nbsp;stack&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;is&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;a&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;16&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;bit&amp;nbsp;stack&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;push&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ebp&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ebp,&amp;nbsp;esp&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;push&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;esi&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;push&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;edi&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;cmp&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;4&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;(ebp),&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;0&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;!&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;monitor&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;return&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;vector&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;is&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;jz&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;noret&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;!&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;nonzero&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;if&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;return&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;possible&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;inc&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(_mon_return)&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;noret:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(_mon_sp),&amp;nbsp;esp&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;!&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;save&amp;nbsp;stack&amp;nbsp;pointer&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;for&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;later&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;return&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;!&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;Copy&amp;nbsp;the&amp;nbsp;monitor&amp;nbsp;global&amp;nbsp;descriptor&amp;nbsp;table&amp;nbsp;to&amp;nbsp;the&amp;nbsp;address&amp;nbsp;space&amp;nbsp;of&amp;nbsp;kernel&amp;nbsp;and&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;!&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;switch&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;over&amp;nbsp;to&amp;nbsp;it.&amp;nbsp;&amp;nbsp;Prot_init()&amp;nbsp;can&amp;nbsp;then&amp;nbsp;update&amp;nbsp;it&amp;nbsp;with&amp;nbsp;immediate&amp;nbsp;effect.&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sgdt&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(_gdt&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;+&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;GDT_SELECTOR)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;!&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #0000ff"&gt;get&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;the&amp;nbsp;monitor&amp;nbsp;gdtr&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;esi,&amp;nbsp;(_gdt&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;+&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;GDT_SELECTOR&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;+&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;2&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;!&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;absolute&amp;nbsp;address&amp;nbsp;of&amp;nbsp;GDT&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ebx,&amp;nbsp;_gdt&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;!&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;address&amp;nbsp;of&amp;nbsp;kernel&amp;nbsp;GDT&lt;BR&gt;&lt;IMG src="/Images/OutliningIndicators/None.gif" align=top&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mov&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ecx,&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;8&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;*&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;8&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;SPAN style="COLOR: #000000"&gt;!&lt;/SPAN&gt