如何通过WinDbg查看托管方法的汇编指令?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2700个文字,预计阅读时间需要11分钟。
这是一个价值不高的简单实验,对于已经了解.NET编程的大多数家庭来说,几乎没有什么好处。尽管老赵一直强调基础,例如实际的算法和数据结构能力,以及对一些必要支持的掌握,例如操作系统。
这是一个没有多大价值的小实验,对于大家了解.NET编程等方面几乎没有任何好处,尽管老赵一直强调“基础”,例如扎实的算法和数据结构能力,并且对一些必要的支持,例如操作系统,计算机体系结构,计算机网络有足够的了解,拥有“常识”,在需要的时候有足够的能力去深入了解便可;但是对于还有一些科目,例如“编译原理”,它虽然可以加强对于一个人对程序的理解,但是我也并不觉得这是一条“必经之路”。了解黑盒内部肯定是有好处的,但是是否值得学习还要进行权衡,至少要考虑(1)了解这些对于一个人究竟好处有多大,是否真那么关键;(2)同样了解这些知识,需要了解到多深,是否我们走的是了解这些的“必经之路”。同样,对于那种动辄一个问题就深入“IL”,“系统底层”的做法,老赵对此持保留态度1。当然,对于亲手进行一番尝试和探索的做法,我总是支持的,这表明了一种严谨的治学态度——但是,前提是我们并不是“以此为荣”而去搞这些(老赵也一直强调,谁说搞应用层的技术含量就比搞所谓“底层”要差了),在搞这些之前也已经有必要的根基。我们是为了探索而去研究,不是为了研究而去研究。
有时候,我们需要查看一个托管方法的汇编指令是怎么样的。记得在大学的时候,我们使用gcc -s和objdump来获得一个c程序代码的汇编指令。但是对于.NET程序来说,我们肯定无法轻松地获得这些内容。因为所有的.NET程序都是编译成IL代码的,而只有在运行时才会被JIT编译成本机代码。因此,我们必须要在程序运行之后,再使用某种方式去“探得”汇编指令为何——除非我们可以让JIT在不运行程序的时候编译IL代码,老赵不知道该怎么做,可能需要朋友的提点。
本文共计2700个文字,预计阅读时间需要11分钟。
这是一个价值不高的简单实验,对于已经了解.NET编程的大多数家庭来说,几乎没有什么好处。尽管老赵一直强调基础,例如实际的算法和数据结构能力,以及对一些必要支持的掌握,例如操作系统。
这是一个没有多大价值的小实验,对于大家了解.NET编程等方面几乎没有任何好处,尽管老赵一直强调“基础”,例如扎实的算法和数据结构能力,并且对一些必要的支持,例如操作系统,计算机体系结构,计算机网络有足够的了解,拥有“常识”,在需要的时候有足够的能力去深入了解便可;但是对于还有一些科目,例如“编译原理”,它虽然可以加强对于一个人对程序的理解,但是我也并不觉得这是一条“必经之路”。了解黑盒内部肯定是有好处的,但是是否值得学习还要进行权衡,至少要考虑(1)了解这些对于一个人究竟好处有多大,是否真那么关键;(2)同样了解这些知识,需要了解到多深,是否我们走的是了解这些的“必经之路”。同样,对于那种动辄一个问题就深入“IL”,“系统底层”的做法,老赵对此持保留态度1。当然,对于亲手进行一番尝试和探索的做法,我总是支持的,这表明了一种严谨的治学态度——但是,前提是我们并不是“以此为荣”而去搞这些(老赵也一直强调,谁说搞应用层的技术含量就比搞所谓“底层”要差了),在搞这些之前也已经有必要的根基。我们是为了探索而去研究,不是为了研究而去研究。
有时候,我们需要查看一个托管方法的汇编指令是怎么样的。记得在大学的时候,我们使用gcc -s和objdump来获得一个c程序代码的汇编指令。但是对于.NET程序来说,我们肯定无法轻松地获得这些内容。因为所有的.NET程序都是编译成IL代码的,而只有在运行时才会被JIT编译成本机代码。因此,我们必须要在程序运行之后,再使用某种方式去“探得”汇编指令为何——除非我们可以让JIT在不运行程序的时候编译IL代码,老赵不知道该怎么做,可能需要朋友的提点。

