什么是 mdToken?它与 MethodTable 有何不同?

发布于 2024-11-30 16:55:34 字数 40 浏览 0 评论 0原文

正如标题所示,它是什么以及它与 MethodTable 有何不同?

As in the title, what is it and how does it differ from MethodTable?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梦旅人picnic 2024-12-07 16:55:34

mdToken 是一个元数据标记,或者或多或少是元数据表中的行 id(int 的一部分标识它所属的表,另一部分标识该表中的行)。

有两种类型的令牌 - 内部令牌和外部令牌。

内部令牌比外部令牌小,仅使用 4 个字节:3 个字节用于行 id,1 个字节用于表 id。 (我不确定 x64 的这些大小是否已更改,但您明白了)
示例:方法表中的第一行(从零开始)为 0x06000000。

外部标记(或编码标记)更大,并且适用于一系列表,而不是特定表。有几种不同的编码令牌类型,并且它们具有已知的模式,您必须了解这些模式才能理解它们的编码值。例如,HasCustomAttribute 标记可以是 19 个元数据表中任何一个的标记(因为属性可以附加到代码的许多不同部分)。编码令牌的一部分是表的 id,也称为标签(但用于保留这部分的位宽度因每个而不同 - 因此是已知的模式),其余部分留给行 id。外部标记的大小可能会有所不同 - 这有助于在行数较小时保持较小的大小。

mdToken is a metadata token, or more or less a row id in a metadata table (part of the int identifies the table it belongs to and the other part identifies the row in that table).

There are 2 types of tokens - internal and external.

Internal tokens are smaller than external and use only 4 bytes: 3 bytes for the row id and 1 byte for the table id. (I'm not sure if these sizes have changed for x64 but you get the idea)
Example: 0x06000000 for the first row (zero based) in the Method table.

External tokens (or coded tokens) are bigger and are for a range of tables, not a specific table. There are several different coded token types and they have known schemas that you have to know to understand their coded values. For example the HasCustomAttribute token can be a token for any of 19 metadata tables (since attributes can be attached to so many different parts of your code). Part of the coded token is the id of the table also called a tag (but the bit width used to keep this part differs with each - hence the known schemas), the remaining part is left for the row id. Sizes of external tokens can vary - this helps keep the size smaller when the row counts are smaller.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文