惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

P
Privacy International News Feed
T
The Exploit Database - CXSecurity.com
Cisco Talos Blog
Cisco Talos Blog
Schneier on Security
Schneier on Security
C
CXSECURITY Database RSS Feed - CXSecurity.com
Simon Willison's Weblog
Simon Willison's Weblog
P
Privacy & Cybersecurity Law Blog
Know Your Adversary
Know Your Adversary
NISL@THU
NISL@THU
Scott Helme
Scott Helme
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Latest news
Latest news
P
Proofpoint News Feed
P
Palo Alto Networks Blog
K
Kaspersky official blog
I
Intezer
The Last Watchdog
The Last Watchdog
Google DeepMind News
Google DeepMind News
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
小众软件
小众软件
G
GRAHAM CLULEY
Last Week in AI
Last Week in AI
量子位
IT之家
IT之家
F
Full Disclosure
T
Threatpost
Hacker News: Ask HN
Hacker News: Ask HN
W
WeLiveSecurity
Y
Y Combinator Blog
V
V2EX
L
LINUX DO - 热门话题
Martin Fowler
Martin Fowler
月光博客
月光博客
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
D
Docker
Google DeepMind News
Google DeepMind News
博客园 - Franky
M
MIT News - Artificial intelligence
爱范儿
爱范儿
I
InfoQ
C
Cisco Blogs
L
LangChain Blog
J
Java Code Geeks
N
News | PayPal Newsroom
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Vercel News
Vercel News
Hugging Face - Blog
Hugging Face - Blog
S
Secure Thoughts
A
About on SuperTechFans

博客园 - Justin Shen

[.Net 4.0]泛型的协变,以及高阶函数对泛型的影响 Part 1 随笔 - WCF and Data Service - Justin Shen 面向对象语言中的Environment和Binding 有多少东西需要学习? [电子书下载]Dissecting a C# Application: Inside SharpDevelop [MSDNTV]Don Box再次出击 :) 追踪你的时间使用状况 听说《csdn开发高手》停刊了 在nant中改变编译的目标平台 让使用MSN就像访问网页一样容易! System.String是不可变的字符串吗? 对中国计算机大学教育的一些牢骚 [VS2005]做了两个Code Expansion用的Code Snippet。 VC2005中依然没有Refactoring和Code Expansion. [VS2005 Tip]定制Code Expansion。 [C++/CLI]在栈上声明Reference Type [C++/CLI] 析构函数等于IDisposable::Dispose()方法 用80386汇编来编写asp.net页面。 关于C#泛型中的new()约束
元数据
Justin Shen · 2007-12-16 · via 博客园 - Justin Shen

从初学.NET的时候,就常常挂在嘴边的一句话是:托管程序和原生程序最大的区别是编译器在程序集中加入了大量的元数据,因此托管程序是自描述的,我们可以在运行时获得关于源程序的任何信息,从而使用反射之类的高级机制。

一直以为自己对这句话的理解已经很透彻了,但自己鼓捣编译器,才豁然发现,原来编译成IL,编译器需要Emit这么多的描述类型描述方法的元数据,在代码生成阶段,我们依然要保留大量的诸如Namespace, Class, Method的信息。而编译成x86 ASM的话,到代码生成阶段,就只有对应指令流的IR树罢了。在源代码层面的类型啊、函数定义啊、操作符啊、函数重载啊之类的信息,已经完全丢失了。

还挺好玩的,嘿嘿。