none
.net程序编译问题 RRS feed

  • 问题

  • “在执行程序集之前,.NET 公共语言运行库的实时 (JIT) 编译器将程序集中的 IL 代码自动转换为特定于处理器的代码。”这里特定于处理器的代码指的是该种处理器的机器语言吗?
    做最好的自己
    2009年8月15日 15:48

答案

  • 高级语言被编译成一种称作IL的中间语言,与高级语言相比,IL更像是机器语言,然而,IL却包含一些抽象概念(比如:类、异常),这也是这种语言被称为中间语言的原因。由于机器的CPU只能执行本地汇编语言,而不是IL,JIT进一步将IL编译成汇编语言。
    jon.valett@gmail.com
    2009年8月15日 20:17
    版主
  • 是机器语言。
    CIL已经是二进制的程序集了,最后经过CLR的JET编译,肯定是生成最终的针对特定处理器优化的机器语言,因为到了这一步,就是要执行了,所以不可能是汇编语言。另外,所生成的要执行的代码片段(或程序集),还将经过一定策略,被缓存起来,以备下次运行时提高效率。
    http://hi.baidu.com/2009ajun
    2009年8月15日 22:09
  • 正是ls所说的
    机器语言
    2009年8月16日 1:46
  • 您好,在《clr via c#》中提到IL将被编译成Native cpu instructions。
    准确来说应该是机器语言,如junxiang所述到这里是要执行了。
    汇编语言其实是和机器语言相对应的,是为了方便人们阅读,将cpu指令转成了一些助记符。
    白话一点,汇编给人读,机器语言给机器读。我上面回答并没想区别两者。
    2009年8月16日 4:41
  • 你好!
         经过JIT过程,生成的是本机代码(可执行),也就是特定CPU的代码,这个过程没有用汇编语言的参与,具体可以参考:
     http://msdn.microsoft.com/zh-cn/library/ht8ecch6%28VS.80%29.aspx
    周雪峰
    2009年8月16日 4:47
    版主
  • 并且这个二次编译出来的代码并没有固化在机器上,不能随便拷贝到别的机器上运行,只是保存在内存中,所以必须依赖CLR。
    jon.valett@gmail.com
    2009年8月16日 4:48
    版主

全部回复

  • 您好,个人认为是汇编语言。
    2009年8月15日 16:27
  • 高级语言被编译成一种称作IL的中间语言,与高级语言相比,IL更像是机器语言,然而,IL却包含一些抽象概念(比如:类、异常),这也是这种语言被称为中间语言的原因。由于机器的CPU只能执行本地汇编语言,而不是IL,JIT进一步将IL编译成汇编语言。
    jon.valett@gmail.com
    2009年8月15日 20:17
    版主
  • 是机器语言。
    CIL已经是二进制的程序集了,最后经过CLR的JET编译,肯定是生成最终的针对特定处理器优化的机器语言,因为到了这一步,就是要执行了,所以不可能是汇编语言。另外,所生成的要执行的代码片段(或程序集),还将经过一定策略,被缓存起来,以备下次运行时提高效率。
    http://hi.baidu.com/2009ajun
    2009年8月15日 22:09
  • 正是ls所说的
    机器语言
    2009年8月16日 1:46
  • 呵呵,没想到大家的说法都不一样。请问大家有没有这方面的官方文献?
    做最好的自己
    2009年8月16日 3:42
  • 您好,在《clr via c#》中提到IL将被编译成Native cpu instructions。
    准确来说应该是机器语言,如junxiang所述到这里是要执行了。
    汇编语言其实是和机器语言相对应的,是为了方便人们阅读,将cpu指令转成了一些助记符。
    白话一点,汇编给人读,机器语言给机器读。我上面回答并没想区别两者。
    2009年8月16日 4:41
  • 你好!
         经过JIT过程,生成的是本机代码(可执行),也就是特定CPU的代码,这个过程没有用汇编语言的参与,具体可以参考:
     http://msdn.microsoft.com/zh-cn/library/ht8ecch6%28VS.80%29.aspx
    周雪峰
    2009年8月16日 4:47
    版主
  • 并且这个二次编译出来的代码并没有固化在机器上,不能随便拷贝到别的机器上运行,只是保存在内存中,所以必须依赖CLR。
    jon.valett@gmail.com
    2009年8月16日 4:48
    版主