JAVA和C的编译原理

最近在学习c第一课就讲了一个我认为很重要的知识,那就是C语言的编译原理,他和JAVA还是有很多区别的:

C语言的编译过程

  1. 预处理(Preprocessing)

    • 预处理器处理源代码中的指令,如 #include#define 等。
    • 生成一个纯文本的 .i 文件,包含展开后的宏和包含的头文件。
  2. 编译(Compilation)

    • 编译器将预处理后的源代码转换成汇编代码。
    • 生成一个 .s 文件,包含对应的汇编代码。
  3. 汇编(Assembly)

    • 汇编器将汇编代码转换成机器码(目标代码)。
    • 生成一个 .o 文件或 .obj 文件,这些是二进制目标文件。
  4. 链接(Linking)

    • 链接器将多个目标文件和库文件结合在一起,生成一个可执行文件。
    • 生成最终的可执行文件,如 .exe 文件(在 Windows 上)或无扩展名的可执行文件(在 Unix/Linux 上)。

Java 语言的编译过程

  1. 编译(Compilation)

    • Java 编译器(javac)将 Java 源代码文件(.java 文件)编译成字节码文件(.class 文件)。
    • 每个 .java 文件对应一个或多个 .class 文件。
  2. 加载(Loading)

    • Java 虚拟机(JVM)通过类加载器(Class Loader)加载 .class 文件。
    • 类加载器负责将字节码文件加载到内存中。
  3. 字节码验证(Bytecode Verification)

    • JVM 验证字节码的正确性和安全性,确保字节码不进行非法操作。
  4. 解释与执行(Interpretation and Execution)

    • JVM 解释字节码并执行。
    • 为了提高性能,现代 JVM 使用即时编译(Just-In-Time Compilation, JIT),将热点代码编译成机器码以提高执行速度。

总结

  • C 语言:经过预处理、编译、汇编和链接四个阶段,最终生成可执行文件。生成的代码是直接与操作系统和硬件打交道的机器码。
  • Java 语言:经过编译阶段生成字节码文件,字节码文件在 JVM 上运行。JVM 解释字节码并可以进行即时编译,提高执行效率。
  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值