什么是.net框架中的“绝对机器代码”?

时间:2017-10-25 20:59:18

标签: .net assembly compilation

我正在尝试了解.net框架架构,并遇到了“可重新定位的机器代码”和“绝对机器代码”这两个术语。据说源代码在编译时被转换为可重新定位的机器代码,并且这个可重新定位的机器代码在加载时被转换为绝对机器代码。 这是否意味着可重新定位的机器代码只是一个程序集?那么什么是绝对的机器代码?什么是加载时间?在.net框架体系结构中,编译时,加载时间和运行时/执行时间到底发生了什么?我无法找到这些术语的明确区别。

1 个答案:

答案 0 :(得分:-1)

我没有特别熟悉.net,但我想我可以给你一个高级别的解释:

  • "可重新定位的机器代码"意味着它需要您的代码并将其编译为非特定于体系结构的版本。如果您不知道,运行程序所需的汇编代码可能因系统而异。我不确定这个机器代码的确切含​​义,但我认为他们会尽可能地编译代码。
  • "绝对机器代码"是将在系统上运行的实际代码。加载程序时(运行程序时),它必须采用与系统无关的可重新定位的机器代码,并执行使其在该系统上专门运行所需的最后几个步骤。
  • "加载时间"是的,我认为,当你运行程序时

因此,当您编译程序时,它会将其转换为某种形式的字节代码,而这些字节代码实际上无法自行运行。然后,当您运行程序时,该字节代码将转换为可以运行的实际汇编代码。