baby sword‘s blog baby sword‘s blog
首页
  • java基础
  • java进阶
大数据
  • mysql

    • mysql索引
    • mysql日志
  • redis

    • 单机下的redis
    • 集群下的redis
  • Spring
  • springboot
  • RPC
  • netty
  • mybatis
  • maven
  • 消息队列
  • kafka
  • zookeeper
  • rocketmq
  • 七大设计原则
  • 创建型模式
  • 结构型模式
  • 行为型模式
  • SpringCloud

    • eureka
  • SpringCloud Alibaba

    • nacos
  • 计算机网络
  • 操作系统
  • 算法
  • 个人项目
  • 个人面试面经
  • 八股记忆
  • 工作积累
  • 逻辑题
  • 面试

    • 百度后端实习二面
GitHub (opens new window)

zhengjian

不敢承担失去的风险,是不可能抓住梦想的
首页
  • java基础
  • java进阶
大数据
  • mysql

    • mysql索引
    • mysql日志
  • redis

    • 单机下的redis
    • 集群下的redis
  • Spring
  • springboot
  • RPC
  • netty
  • mybatis
  • maven
  • 消息队列
  • kafka
  • zookeeper
  • rocketmq
  • 七大设计原则
  • 创建型模式
  • 结构型模式
  • 行为型模式
  • SpringCloud

    • eureka
  • SpringCloud Alibaba

    • nacos
  • 计算机网络
  • 操作系统
  • 算法
  • 个人项目
  • 个人面试面经
  • 八股记忆
  • 工作积累
  • 逻辑题
  • 面试

    • 百度后端实习二面
GitHub (opens new window)
  • 华仔聊技术

  • 业务设计

  • 场景设计

  • 运维

  • 安全

  • 面试

  • mac相关工具推荐

  • 开发工具

  • 人工智能

  • 推荐

  • 阅读

    • 计算机底层的密码

      • 编译器原理
      • 《自我觉醒》
      • 《代码整洁之道》
      • 关于医保
      • CPU
      • 显卡
      • 《凤凰架构》
      • 如何画好架构图
      • 什么是OKR
      • 食物热量计算
    • 工具

    • 计划

    • 产品

    • 云原生

    • go

    • QVM

    • 软件设计师

    • 极客时间

    • 单元测试

    • 其他
    • 阅读
    • 计算机底层的密码
    xugaoyi
    2023-08-14
    目录

    编译器原理

    # 什么是编译器

    编译器的主要功能是将我们的高级语言编译成cpu可以直接执行的机器语言,即二进制语言。

    编译器是一个专门的程序。

    如下图所示语言

    int a = 1;
    int b = 2;
    while(a < b){
        b = b-1;
    }
    
    1
    2
    3
    4
    5

    从人的角度来看,上面的语言是如下的意思:

    把变量a赋值为1

    把变量b赋值为2

    如果a<b,则b减一

    重复上面一句,直到a<b不再成立为止

    上面的语句虽然人听起来懂,但是事实上机器是不懂的,我们还需要翻译为机器可以理解的语言

    # 高级语言如何到机器语言

    # 词法分析

    编译器首先需要把代码中的每个符号给解析出来,并且把该符号与其附带的信息打包。例如int,其表示了两种含义

    • 这是一个关键词
    • 这是一个int关键词

    将这两个信息打包后,称之为token符号,例如上面的代码最终会生成如下的token

    image-20230814082416341

    image-20230814082423219

    上面的第一个表示token,第二个表示其值。从源代码中将token提取出来的过程叫做词法分析

    # 语法分析

    编辑 (opens new window)
    上次更新: 2024/02/22, 14:03:19
    软件推荐
    《自我觉醒》

    ← 软件推荐 《自我觉醒》→

    最近更新
    01
    spark基础
    02-22
    02
    mysql读写分离和分库分表
    02-22
    03
    数据库迁移
    02-22
    更多文章>
    Theme by Vdoing | Copyright © 2019-2024 Evan Xu | MIT License
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式