LLVM 中间代码归纳

LLVM 中间代码归纳,第1张

概述Identifiers 标识符 @ 全局 % 局部 后接字符串 命名量 @name %name 无符号数字 未命名量 @42 %42类型系统 void 空类型 <type> *
IDentifIErs 标识符    @ 全局    % 局部    后接字符串      命名量      @name %name        无符号数字  未命名量    @42   %42类型系统    voID                                空类型    <type> *                            指针类型    <returntype> (<parameter List>)     函数类型    < <# elements> x <elementtype> >    向量类型    [<# elements> x <elementtype>]      数组类型    { <type List> }                     普通结构体类型    <{ <type List> }>                   打包结构体类型    Metadata                            元数据类型    label                               标签类型    token                               词元类型类型系统(例子)    voID                   空    i32 *                  指针    i32 (i32)              函数    <5 x i32>              向量    [5 x i32]              数组    { i32,i32,i32 }      普通结构体    <{ i32,i32 }>    打包结构体元数据    ; 未命名元数据节点    ; 用于被命名元数据引用    !0 = !{!"zero"}    !1 = !{!"one"}    !2 = !{!"two"}    ; 命名元数据    !name = !{!0,!1,!2}    !name --- !0          |-- !1          |-- !2模块层次内联汇编    module asm "内联汇编代码"Target Triple    target triple = "x86_64-amd64-freebsd"First Class Types 第一类型    Single Value Types 单值类型        只在寄存器里头有效        Integer Type 整数类型            iN ;N为比特数 (通用描述)            i1 一个比特整数            i32 32为整数        floating-Point Types 浮点类型            half      - 16位浮点值            float     - 32位浮点值            double    - 64位浮点值            fp128     - 128位浮点值            x86_fp80  - 80位浮点值            ppc_fp128 - 128位浮点值模块结构    程序由模块组成,每个模块都是输入程序的翻译单元。    Hello,world 模块    ; 定义字符串常量作为全局常量    @.str = private unnamed_addr constant [13 x i8] c"hello worldA"    ; 外部声明的 puts 函数    declare i32 @puts(i8* nocapture) nounwind    ; main 函数的定义    define i32 @main() {   ; i32()*      ; [13 x i8] 转换到 i8...      %cast210 = getelementptr [13 x i8],[13 x i8]* @.str,i64 0,i64 0      ; 调用 puts 函数,将字符串写入 stdout      call i32 @puts(i8* %cast210)      ret i32 0    }    ; 命名元信息    !0 = !{i32 42,null,!"string"}    !foo = !{!0}指令参考=========Terminator Instructions    指示当前块完成后,执行哪个块。    终结指令典型的产生一个 voID 值:他们影响控制流,而不是值。(invoke指令是一个例外)    ret            返回    br             二元条件分支/无条件转移    switch         多条件分支    indirectbr        invoke         普通/带异常调用    resume         抛出异常?    catchswitch    捕获异常    catchret       cleanupret       unreachable    不可到达(无语义)Binary Operations    add    加    fadd   浮点加    sub    减    fsub   浮点减    mul    乘    fmul   浮点乘    udiv   无符号整数除    sdib   带符号整数除    fdiv   浮点除    urem   无符号整数求余    srem   带符号整数求余    frem   浮点数求余    运算\类型    无符号整数   带符号整数   浮点数        +               add             fadd        -               sub             fsub        *               mul             fmul        /       udiv        sdiv        fdiv        %       urem        srem        fremBitwise Binary Operations    shl    左移    lshr   逻辑右移    ashr   算数右移    and    与    or     或    xor    异或Vector Operations    extractelement 取出元素    insertelement  插入元素    shufflevector Aggregate Operations    extractvalue  取出值    insertvalue   插入值Memory Access and Addressing Operations    alloca           分配内存    load             从内存加载    store            储存到内存    fence    cmpxchg    atomicrmw        自动修改内存    getelementptr    获取 aggregate(集合) 数据结构的子成员地址Coversion Operations    这个类型为转换指令(强制类型转换|铸造casting)    都取一个单一运算对象和一个类型。    对运算对象提供一系列位转换。    trunc .. to            截断转换    zext .. to             零扩展转换    sext .. to             符号位扩展转换    fptrunc .. to          浮点截断转换    fpext .. to            浮点扩展    fptoui .. to           浮点转无符号整数    fptosi .. to           浮点转带符号整数    uitofp .. to           无符号整数转浮点    sitofp .. to           带符号整数转浮点    ptrtoint .. to         指针转整数    inttoptr .. to         整数转指针    bitcast .. to          位模式转换(重新解释,不改变任何二进制位)    addrepacecast .. to    地址空间转换    Other Operations    icmp          整数比较    fcmp          浮点数比较    phi           φ 节点    select        条件值选择    call          简单函数调用    va_arg        可变参数    landingpad    catchpad    cleanuppad
总结

以上是内存溢出为你收集整理的LLVM 中间代码归纳全部内容,希望文章能够帮你解决LLVM 中间代码归纳所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1016863.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存