.net 框架中的"absolute machine code"是什么?



我试图理解.net框架架构,遇到了"可重新定位的机器代码"one_answers"绝对机器代码"这两个术语。据说源代码在编译时被转换为可重新定位的机器代码,并且该可重新定位机器代码在加载时被转换成绝对机器代码。这是否意味着可重新定位的机器代码只不过是一个程序集?那么什么是绝对机器代码?什么是装载时间?在.net框架架构中,编译时、加载时和运行时/执行时到底发生了什么?我找不到这些术语的明确区别。

我对.net不是很熟悉,但我想我可以给你一个关于正在发生的事情的高级解释:

  • "可重新定位的机器代码"意味着它会获取您的代码并将其编译到一个不特定于体系结构的版本。如果您不知道,运行程序所需的程序集代码可能因系统而异。我不确定这个机器代码到底是什么样子,但我认为他们正在尽可能多地编译你的代码
  • "绝对机器代码"是将在系统上运行的实际代码。当程序被加载时(当你运行它时),它必须采用系统不可知的可重新定位的机器代码,并执行最后几个步骤,使它在该系统上专门运行
  • 我想,"加载时间"是指运行程序时

所以当你编译一个程序时,它会将它转换成某种形式的字节码,而这些字节码实际上不能自己运行。然后,当您运行程序时,该字节码将转换为可以运行的实际程序集代码。

最新更新