编译-解释简单理解

编译vs解释

编译: 编译器把源码文件翻译成机器代(类比家里吃饭,把全部菜做好才开始吃)

  • c++为例子

    1. 一个exe可执行文件有多个cpp文件编译、链接构成。每次编译cpp源码会转换成obj中间文件(代码、数据、名称)。
    2. 当exe内的所有obj都编译好了,统一link成exe文件(lib:静态库文件,link时会把对应obj对应的lib库文件**装载(抽取)**到exe(obj里面的代码名称改为地址)文件
    3. 动态库( lib:存放的dll函数本体的内存地址 dll:存放动态库的真正代码)exe可执行文件( 存放了动态库的lib函数地址 )在运行时,一旦检测到dll的内存地址,则此时此刻才调入装载动态代码到内存。
      解释:解释器每运行一条源码则翻译成机器代码运行。(类比吃火锅)
  • java为例子

    1. 一个java源文件先经过java编译器生成二进制字节码
    2. 生成的中间代码(java的二进制字节码)会经过解释器逐条的执行(转成机器指令)
      java编译器

在这里插入图片描述
语法分析器: 识别源码的每一个单词进行一个个标记(即一串" 145plok87 "为一个字符序列,有三个标记【最长一致原则】)
词法分析器: 词法分析器将从标记中生成程序员真正表达的语义,生成(XML、语法树)
语义分析器: 检查有无语义错误(对代码进行语义解释)
java解释器

在这里插入图片描述
JIT(即使编译器): 把程序中的热点代码编译成机器码,编译的字节码可供多次使用而不用重复的编译与解释。对热点代码进行智能的优化

热点:被程序多次调用的方法、循环体。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值