(1) 归根结底:为了使程序在特定操作系统上可执行,必须采取什么措施?机器码,汇编语言?
(2) 它必须是机器可读的才能被某种 CPU 执行吗?
(3) 操作系统在程序执行过程中扮演什么样的角色?它与帮助系统解释程序代码有什么关系吗?
(4) 对于 Windows PC,是否所有程序都必须是 .exe 才能执行?为什么选择Java虚拟机?
(5) 反编译器是如何工作的?编译为机器代码和汇编语言的程序有什么区别?
非常感谢!!
(1) 归根结底:为了使程序在特定操作系统上可执行,必须采取什么措施?机器码,汇编语言?
(2) 它必须是机器可读的才能被某种 CPU 执行吗?
(3) 操作系统在程序执行过程中扮演什么样的角色?它与帮助系统解释程序代码有什么关系吗?
(4) 对于 Windows PC,是否所有程序都必须是 .exe 才能执行?为什么选择Java虚拟机?
(5) 反编译器是如何工作的?编译为机器代码和汇编语言的程序有什么区别?
非常感谢!!
这完全取决于操作系统。从理论上讲,您可以拥有一个即时解释 COBOL 源代码的操作系统。但通常,您需要操作系统可以加载到内存中并运行的特定格式的可执行文件。所以,机器码就是这样。
同样,这取决于 CPU。绝大多数(我所知道的)将运行他们自己的机器代码。
操作系统提供了一种运行应用程序的方法,并为这些应用程序提供支持服务。
不。如果您希望执行它们,它们必须具有特定格式,但这并不一定意味着exe
扩展。而且,尽管您认为您正在运行 Java 类文件,但实际上您正在运行的是 JVM,它是一个可执行文件。它恰好是在解释类文件(为了简单起见,忽略 JIT 的东西,这会将 Java 字节码转换为原始机器代码以提高效率。您可以“执行”Java 类文件、Powershell 脚本、cmd
脚本等。
反编译器会尝试将已编译的文件(EXE、类文件、Python 字节码等)转回其原始形式,或者至少接近其原始形式。