联系我们:010-58426662

charme
主页 喜欢

llvm之旅第一站 - 编译及简单使用

charme发布于1115天前

llvm介绍llvm(low level virtual machine)是一个开源编译器框架,最早的时候是Illinois的一个研究项目,主要负责人是Chris Lattner,他现在就职于Apple. Apple 目前也是llvm项目的主要赞助者之一。llvm有一个表达形式很好的IR语言,高度模块化的结构,因此它可以作为多种语言的后端,提供与编程语言无关的优化和针对多种CPU的代码生成功能。传 查看全文

标签: llvm clang

回应  5 收藏  0

llvm之旅第二站 - 环境配置

charme发布于1106天前

工具链说明编译好的工具链已经可以满足开发需求,下面对工具链中的部分常用工具做一个简单介绍:基本工具llvm-as - 汇编器,将可读的 .ll 文件汇编成字节代码llvm-dis - 反汇编器,将字节代码文件反编成可读的 .ll 文件opt - 优化器,在一个字节代码文件上运行一系列的 LLVM 到 LLVM 的优化llc - 静态编译器,编译字节代码文件为本机器代码lli - 解释运行字节码程序 查看全文

标签: llvm clang

回应  0 收藏  0

llvm之旅第三站 - 认识LLVM IR

charme发布于1099天前

认识LLVM IR前面两篇系列文章,简单的介绍了LLVM以及编译配置过程。到此已经完全可以初步的使用llvm了,如果以研究llvm为目标的话,还远远不够。一般来说,编译器会将源语言翻译为一种“中间语言(IR)”,之后再由中间语言,利用后端程序和设备翻译为目标平台的汇编语言。不同编译器的中间语言IR是不一样的,IR集中体现了编译器的主要特征——算法,优化方式,汇编流程等等。LLVM IR主要有三种格 查看全文

标签: llvm clang

回应  6 收藏  0

llvm之旅第四站 - 编写Pass

charme发布于1095天前

什么是passLLVM 的Pass框架是LLVM系统的一个很重要的部分。LLVM的优化和转换工作就是由很多个Pass来一起完成的。类似流水线操作一样,每个pass完成特定的优化工作。 在一些特殊的情况下,新插入的pass可能会与其他现有的pass有一定的关联性,所谓的关联体现之一就是:在运行此pass之前必须先运行某pass。类似这种情况,都有相应的接口可以实现。具体参考 Specifying i 查看全文

标签: llvm clang

回应  7 收藏  0

反调试技术(针对lldb)

charme发布于1093天前

什么是lldblldb是llvm+clang工具链中的调试器,类似于gdb等,提供的可用命令和设计架构跟gdb略有不同。 一些反调试手段下面罗列的一些反调试手段均在OS X系统上编写的控制台程序中测试通过。(ios程序上不保证可用)严格划分的话,反调试实际上分为两种类型:检测和防治检测类型的给你提供检测到调试器后的处理机会。防止类型的在发现调试状态时会直接终止程序。以下的示例不严格区分。1.#in 查看全文

标签: 反调试 antidbg lldb

回应  2 收藏  0

GCC Inline ASM

charme发布于1088天前

内联汇编的两种语法内联汇编支持两种语法,一种是intel style,一种是 AT&T 格式,具体的语法这里不做介绍。特别需要指出的是,在gcc inline asm的编写中支持两个语法格式的切换,使得两种语法的汇编代码都得以正确的编译。简单示例:asm( //“.globl _charme\n\t" //“_charme:\n\t" “. 查看全文

标签: asm inlineasm 内联汇编 gcc

回应  2 收藏  0

llvm之旅第五站 - 调试Pass

charme发布于1078天前

认识pass 管理器pass管理器的实现在 lib/Transforms/IPO/ 中,最主要的是PassManagerBuilder.cpp。这个管理器主要起两个作用:1. 协调分析结果通常,在编译过程中会有一个以上的分析模块(pass)参与分析过程,管理器会协调处理每个pass的分析结果,尽量避免结果的多次重复计算,同时使得某些pass可以有时机去释放内存。2. 统筹分析流程上一节中我 查看全文

标签: llvm clang

回应  2 收藏  0

作者信息

  • charme
  • 2015-03-30日入驻

收藏 0

文章 7

娜迦,守护10亿移动用户安全! 免费体验