LLVM
Lambert-zw
这个作者很懒,什么都没留下…
展开
-
【LLVM】内存计算引擎之Llvm
概述个人认为Llvm是一个很”酷”的东西,本文主要从几个方面来讲解Llvm相关内容,Llvm是什么、传统编译器的设计、传统编译器的实现、Llvm的编译器如何实现的、LLVM IR是什么、JIT简单的实现原理、业界多领域是如何使用Llvm的等多个方面来描述LLVM。LLVM命名源自于底层虚拟机(Low Level Virtual Machine)的缩写。他不是一个类似于VMware这种虚拟机项目,他是类似于GCC一样的编译器框架。说到编译器框架就不得不提一提传统的编译器是怎么做的。L...原创 2020-09-06 19:07:39 · 1968 阅读 · 0 评论 -
LLVM Create a PointerValue from c-side-ptr
// Llvm doesn't let you create a PointerValue from a c-side ptr. Instead// cast it to an int and then to 'type'.Value* LlvmCodeGen::CastPtrToLlvmPtr(Type* type, const void* ptr) { Constant原创 2017-01-09 10:23:27 · 317 阅读 · 0 评论 -
打印LLVM::Type或者LLVM::Value的值
#include "llvm/ADT/STLExtras.h"#include "llvm/IR/Constants.h"#include "llvm/IR/Instructions.h"#include "llvm/IR/LLVMContext.h"#include "llvm/IR/Module.h"#include "llvm/IR/Type.h"#include "llvm/Su原创 2017-01-09 10:34:41 · 2359 阅读 · 0 评论 -
LLVM 指令统计
include “llvm/ADT/STLExtras.h”include “llvm/IR/Constants.h”include “llvm/IR/Instructions.h”include “llvm/IR/LLVMContext.h”include “llvm/IR/Module.h”include “llvm/IR/Type.h”include “llvm/Support/Casting原创 2017-01-09 10:56:11 · 2333 阅读 · 0 评论 -
LLVM 加载bc文件
#include <llvm/Pass.h>#include <llvm/PassManager.h>#include <llvm/ADT/SmallVector.h>#include <llvm/Analysis/Verifier.h>#include <llvm/Assembly/PrintModulePass.h>#include <llvm/IR/BasicBlock.h>#in原创 2017-01-09 11:02:00 · 1476 阅读 · 1 评论 -
打印Value*的数据类型
void PrintValueType(Value* value){ Type* value1_type = value->getType(); int value1_type_int = (int)value1_type->getTypeID(); std::string value_type_id_str[17] = { "Void原创 2017-01-09 09:25:02 · 701 阅读 · 0 评论 -
LLVM教程(一)-- LLVM的简介
一、介绍LLVM是构架编译器(compiler)的框架系统,以C++编写而成,用于优化以任意程序语言编写的程序的编译时间(compile-time)、链接时间(link-time)、运行时间(run-time)以及空闲时间(idle-time),对开发者保持开放,并兼容已有脚本。LLVM计划启动于2000年,最初由University of Illinois at Urbana-Champaign的原创 2017-02-10 09:37:36 · 6996 阅读 · 0 评论 -
LLVM教程(二)-- LLVM的安装
1 下载CMake版本https://cmake.org/download/ 下载的CMake版本必须大于 Version 3.4.3。(注如果系统中已经有CMake了通过 cmake -version 查看一下版本号 大于就不用下载了)<1> 解压 tar xzvf cmake-3.8.0-rc1.tar.gz;进入到解压目录 依次执行 ./bootstrap <2> make <3原创 2017-02-10 14:27:36 · 6730 阅读 · 0 评论 -
LLVM教程( 三)-- LLVM IR
传统编译器的设计<1> 最受欢迎的设计传统的静态编译器(像大多数C编译器)是三个阶段主要组件的前端设计,优化器和后端(下图)。前端解析代码,检查错误,并构建一个特定于语言的抽象语法树(AST)来表示输入代码。AST是优化选择转换为一种新的表示方法,优化器和后端上运行代码。 <2> 优化器负责做各种各样的转换来提高代码的运行时间,如消除冗余计算,通常是或多或少独立于语言和目标。后端(也称为代码生原创 2017-02-14 15:54:23 · 9657 阅读 · 0 评论