llvm ir(初探)

本节学习IR(中间表示)(初探)

扩展:

image-20240910005409787

image-20240910005354879

image-20240910005204216

1.形式

需要知道程序是如何翻译为ir的,但是了解过程之前,需要知道何为ir

image-20240909215944239

1.1三地址码

静态单赋值

1.1.1简单形式(仅顺序且最多调用函数)

image-20240909220515875

image-20240909220157173

含义

image-20240909220438564

1.1.2 进一步形式

函数中有分支(为了研究函数中的基本块)

image-20240909221937335

image-20240909222753665

优化之后

image-20240909224626604

何为基本块:

只能在入口跳入,或在出口跳出,边用来描述基本块之间的跳转。

image-20240909222324799

重要指令phi

image-20240909225136105

image-20240909225212230

1.1.2 加上循环

image-20240910003633534

image-20240910004211809

image-20240910004927981

2.实现

可调用llvm提供的构建指令的api