java编译字节码转化程序下载_编译与翻译,“编译”Java到字节码?
发布日期:2021-06-25 03:25:49 浏览次数:6 分类:技术文章

本文共 899 字,大约阅读时间需要 2 分钟。

这完全是定义的问题,对于“编译”的含义,没有单一的公认定义.在你看来,编译正在将某种语言的源代码转换为原生代码;因此,不生成机器代码的转换过程不应称为“编译”.在我的眼里(显然,javac文档编写者的眼睛也是),它应该.

实际上有很多不同的术语:翻译,编译,反编译,汇编,反汇编等.

就个人而言,我认为在“编译”下对所有这些术语进行分组是有意义的,因为所有这些过程都有很多共同之处:

>他们用一种正式语言将代码转换为另一种正式语言的代码.

>他们尽可能地保留输入代码的语义.

>它们都具有非常相似的设计,前端,后端和中间可能的优化器(learn more about compiler structure here).我已经看到了javac和本地编译器的内脏,它们相对相似.

此外,您对“生成本机代码”的定义存在问题:

>那些可以生成汇编但又不打算将其转换为机器代码的编译器,将其留给外部程序(通常称为“汇编程序”)呢?你会否认他们这个“编译器”的定义,因为最后一个微不足道的比较步骤?

>您如何对“机器代码”进行分类?如果明天a processor which can run Java Bytecode natively is created怎么办?

但这些只是我的意见.我认为,那里最常见的定义是:

>编译正在将更高级别语言的代码转换为更低级别的语言.示例:Java到Java字节码或C到x86机器码.

>反编译正在将较低级别语言的代码转换为较高级别的语言 – 实际上与编译相反.示例:Java字节码到Java.

>翻译或源到源编译正在将某种语言的代码转换为具有可比性“级别”的另一种语言.示例:ARM到x86,或C到Java.当两种语言实际上是同一语言的不同版本(例如Javascript 6到Javascript 5)时,也使用术语“转换器”.

>程序集正在将某些汇编语言中的代码转换为机器代码.

>反汇编既可以是反编译的同义词,也可以是汇编的反义词,具体取决于上下文.

根据这些定义,javac绝对可以被视为编译器.但同样,这些都在定义中:从技术角度来看,许多这些行动都有很多共同之处.

转载地址:https://blog.csdn.net/weixin_35901163/article/details/114585527 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:java8 peek_java 8 Stream中操作类型和peek的使用
下一篇:java aop拦截增删改成_spring-boot aop 增删改操作日志 实现

发表评论

最新留言

不错!
[***.144.177.141]2024年03月21日 20时26分26秒