随笔分类 - CLI研究
摘要:以一个简单的实例来说明如何查看jit运行时输出的优化x86代码,并给出了若干有趣的观察结论。
阅读全文
摘要:推荐五篇关于Exception Handling的经典好文,另附一个关于其大致发展历程的Roadmap。以前只是粗略地了解过异常处理的实现机制,这两天又细细看了一遍,越来越觉得值得回味,从中依稀看到不少SSCLI中频繁用到的Stackwalking、托管线程逻辑堆栈复用、编译时动态监视点插入等思想的影子,其实思路都是连贯的、相通的,无非所处的发展阶段不一样。如果你跟我一样曾经对Rotor 2中的E...
阅读全文
摘要:CLI Calling Conventions [in ECMA-335] CLI函数调用协定精确地描述了托管代码函数调用方Caller与被调用方Callee之间是如何利用堆栈来传递调用参数的。由于CLI采用了完全基于堆栈的简易虚拟机模型,因此,托管函数调用中所有的实参均通过CLI堆栈来传递。下面给出了在调用call指令之前,托管堆栈帧的构造步骤及示例: 1. this引用压栈,如果是方法...
阅读全文
摘要:A. 如何在Visual Studio 2005中对托管代码及非托管的CLR环境同时进行调试? 步骤远比你想象的简单,而且更重要的是比windbg方便。举例: 1. 开启一个C#的项目,打开该项目的属性窗口 2. 将Debug页面中的Enable Unmanaged Code Debugging选中 3. 在某语句处设置好断点,F5重新编译,运行,命中断点 4. 打开Immediat...
阅读全文
摘要:添加了泛型和匿名方法等若干新特性的内部实现细节;编译工具已改为使用Visual Studio 2005。移植性方面基本跟1.0一样,现成的代码只支持WinXP SP2下编译,如果需要在FreeBSD、Linux下编译,仍需修改相关的pal代码。立马在英文版WinXP Pro(外加中文多语言包, non-Unicode程序的默认语言选择的是Chinese PRC)下编译了一回,发现nmake报了两个...
阅读全文
摘要:这两天在csdn上围绕着C# 2.0中的泛型特性引发了一场大讨论,一时间热闹非凡,场面蔚为壮观:) 讨论的焦点就是:C# 2.0中的泛型技术是否有用,并由此衍生出两个子问题,其一是C# 2.0泛型究竟是如何处理值类型、引用类型差异的(值类型泛型需不需要boxing/unboxing)?其二是,C# 2.0泛型能否提高性能? 如果能,究竟能提高多少性能? 从字面上来揣度,我的第一感觉是讨论的主题很有...
阅读全文
摘要:这些是我已经读过了的或者是正在读的.net图书,同时也是我在综合了网上及论坛中各方面意见之后,认为在目前的.net框架领域内最值得系统研习的6本核心书籍,而且其编号是根据由易到难、从入门到上手有序排列的,特把它们罗列出来,希望在过年前后能够集中完成其阅读(尤其是后三本书,工作量还是非常大的)。 1. Applied Microsoft .NET Framework Programming, Je...
阅读全文
摘要:作为同时适用于本地/托管环境的新一代C++语言扩充,C++/CLI的定位与原有的Managed Extensions for C++基本一致,在CLR 2.0环境中,它主要承载了如下5个使命: A. 源码级集成 (本地/托管/混合代码编译) B. 对象模型集成 (本地类型/指针、CLR类型/指针等) C. 组件模型集成 (元数据支持、属性-事件语义、P/Invoke/COM Interop...
阅读全文