2 - LLVM 前端Frontend

一、词法分析

        词法分析生成Token : clang -fmodules -E -Xclang -dump-tokens main.m

二、语法分析

        语法分析,生成语法树(AST, Abstract Syntax Tree):clang -fmodules -fsyntax-only - Xclang -ast-dump main.m

  • FunctionDecl:方法描述
  • ParmVarDecl:方法入参描述
  • CompoundStmt:方法体结构
  • DeclStmt:表达式描述
  • VarDecl:声明变量描述
  • BinaryOperator:操作符描述
  • ReturnStmt:return表达式描述 

三、语义分析

        在语法树上的基础上进行检查。

四、生成中间代码

  • LLVM IR有3种表示形式(但本质是等价的,就好比水可以有气体、液体、固体3种形态)
    • text:便于阅读的文本格式,类似于汇编语言,扩展名.ll
      • 查看命令:clang -S -emit-llvm main.m

  • memory:内存格式
  • bitcode:二进制格式,扩展名.bc
    • 查看命令:clang -c -emit-llvm main.m

4.1 IR基本语法

        官方语法文档https://llvm.org/docs/LangRef.html

  • 注释以分号; 开头
  • 全局标识符以@开头,局部标识符以%开头
  • alloca,在当前函数栈桢中分配内存
  • i32,32bit,4字节的意思
  • store,写入数据
  • load,读取数据

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值