程序
您作为软件用户,只需要知道程序是可以执行的东西,不需要去管更准确的定义。
二进制程序
你可能已经听说过,计算机只能直接执行二进制指令。这些二进制指令被称为用机器语言写成。
然而,一台特定的机器只接受某些机器语言,而不是世界上存在的所有语言。这些特殊性被标准化为指令集,即机器能够接受的几组指令。一台机器的指令集必须包含程序中使用的所有指令,程序才能正确运行。幸运的是,我们可以简单地理解为,我们通常只需要匹配 CPU 的架构就可以正确运行程序,因为指令集在不同的架构之间通常是不共享的。
机器码在一个非常低的层次上运行。它直接与 CPU 和 RAM 对话。
到二进制程序,从二进制程序
机器码对人们来说很难编写和理解,所以人们通常不直接编写机器码。于是,我们用一种高级语言(例如 C)编写,并使用编译器,从高级语言的源代码为某些指令集生成二进制程序。
反过来也是可能的,但要困难得多。即使有反编译器可用于这项工作,它们也很可能不会产生准确的原始源代码,而是一个为计算机优化的、对人类不太友好的版本。
解释程序
为了便利性、可移植性等因素,有时我们可以直接运行程序源代码。做到这一点需要一个解释器,简而言之,它会在需要的时候每次只编译并执行一行代码。