2012-03-03 15 views
2

.NET/CLR-問題:每個對象都有一個指向方法表的指針作爲其第二個字段。 CLR(x86體系結構)版本4.0中此方法表的確切(精確!)佈局如何?如果您可以給我一個提示,在哪裏可以找到這些信息(以及有關域寬接口表佈局的類似信息),那將會很好。CLR中的方法表的確切佈局(版本4.0)

+2

爲什麼你需要知道這個?爲什麼它必須準確? – svick 2012-03-03 17:26:19

+0

我知道COM竭盡全力描述這種類型的信息,但我不確定CLR的確如此。你能告訴我們你想如何使用這些信息嗎?可能會幫助我們爲您指出一個好的解決方案。 – JaredPar 2012-03-03 17:29:28

+0

看看這個問題,答案和它們包含的鏈接。不一定是.NET 4.0的最新版本,但是一個好的開始。 http://stackoverflow.com/questions/5385653/object-layout-structure-in-net-using-disassembler – 2012-03-03 17:31:38

回答

0

文章「Drill Into .NET Framework Internals to See How the CLR Creates Runtime Objects」詳細描述了.Net中的方法。

從2005年5月開始,所以它不是特定於.Net 4,但我懷疑自此以後發生了什麼顯着變化。

+0

沒有什麼理由假定.NET 4中沒有任何變化,只是MethodTable類*聲明*是SSCLI20版本中的2599行代碼,並且與CLR管道的其餘部分交織在一起。 clr/src/vm/methodtable.h源文件。在答案中期望確切的佈局不在表格中。 – 2012-03-03 17:48:28

+0

我知道這個和類似的文章,我喜歡他們。但他們已經過時了。 (原理可能沒有改變,但細節有所改變。)我想跟蹤(用VS2020和SOS)從C#角度理解的接口方法調度的實現。純粹的好奇心! – Cord 2012-03-03 20:47:23

+0

@Cord,你有沒有嘗試根據舊文章做到這一點?也許那些你感興趣的部分沒有改變。如果遇到問題,詢問新的具體問題可能會有所幫助。 – svick 2012-03-03 21:22:50