日期:2014-05-19  浏览次数:20780 次

谁说说关于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