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