首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

哪位高手说说关于C#中的方法表

2012-01-19 
谁说说关于C#中的方法表?C#中的方法表是怎么回事?C++中的呢?每种语言都有方法表吗?谢谢,给个连接也行[解决

谁说说关于C#中的方法表?
C#中的方法表是怎么回事?
C++中的呢?

每种语言都有方法表吗?

谢谢,给个连接也行

[解决办法]
前看C++的书籍时也听过C++中方法表的介绍,.NET中也有方法表。在.NET中每个类型都会有一个CORINFO_CLASS_STRUCT的数据结构,有Equals、GetHashCode之类的方法,也有用户自定义的方法在里边。这个结构为方法提供了入口点。而默认的,每个入口点都指向了一个stub routine(书上是叫“存根例程”),即是对JIT编译器进行调用。所以在JIT进行编译之前我们可以知道每一个方法调用的不是某段代码,而是JIT,具体代码的位置要等JIT来给定。在JIT之前我们看到stub routine中的数据应该都是call xxxxxxxx这样的东东。等JIT生成本机代码后,stub routine中的内容会变为jmp XXXXXXXX,跳转到要执行的代码。我想这样带来的好处是,如果某方法不再被使用(unreachable in GC),那JIT可以忽略它以减少系统开销;或是对方法表进行优化,让常用的方法被放在同一个内存页面中。
[解决办法]
http://blog.csdn.net/foyuan/archive/2007/08/02/1722481.aspx

热点排行