美文网首页技术栈
编译器想做什么

编译器想做什么

作者: 烟雨乱平生 | 来源:发表于2019-10-22 20:01 被阅读0次

编译器就程序员写的代码变成CPU能理解机器代码。编译器的指令重排指开启编译器优化后,在不影响代码行为的前提下,代码的顺序会发生改变。

编译器的优化,希望将整个函数用最少的时钟周期来实现。

假设有如下场景:假设该架构下,读取指令从发出到实际读取到数据需要等待2个时钟周期,计算c = b * 3需要一个时钟周期。

{
    load a;
    load b;
    c = b * 3;
    use a and c;
}

正常执行的顺序如下:

{
    load instruction for a (cycle 0);
    load instruction for b (cycle 1);
    wait for b's loading (cycle 2);
    wait for b's loading (cycle 3);
    calculate for c using b (cycle 4);
    use a and c (cycle 5);
}

指令重排后:

{
    load instruction for b (cycle 0);
    load instruction for a (cycle 1); --> padding
    (wait for b's loading (cycle 1);)
    wait for b's loading (cycle 2);
    calculate for c using b (cycle 3);
    use a and c (cycle 4);
}

可以看出,打乱执行顺序之后,节约了一个时钟周期。


相关文章

  • 编译器想做什么

    编译器就程序员写的代码变成CPU能理解机器代码。编译器的指令重排指开启编译器优化后,在不影响代码行为的前提下,代码...

  • Objective-C基础学习之@property基本概念

    1.什么是@property @property是编译器的指令 什么是编译器的指令 ?编译器指令就是用来告诉编译器...

  • @property

    1.什么是@property @property是编译器的指令什么是编译器的指令 ? 编译器指令就是用来告诉编译器...

  • OC语言@property@synthesize和id

    1.property @property是编译器的指令什么是编译器的指令,编译器指令就是用来告诉编译器要做什么 @...

  • synthesize基本使用

    1.什么是@synthesize @synthesize是编译器的指令什么是编译器的指令 ?编译器指令就是用来告诉...

  • 编译原理 -- 编译以及编译过程

    前言 为了了解编译器是什么? 为什么需要编译器? 编译器、高级语言、源代码、机器语言 编译器:首先也是一种电脑程序...

  • 6-1 编译器

    编译器做些什么? 本文主要探讨一下编译器主要做些什么,以及如何有效的利用编译器。 简单的说,编译器有两个职责:把 ...

  • CSS-reset&规范

    css reset 是什么?css 预编译器是什么? 后编译器(post css)是什么? css reset 即...

  • 2019-04-20

    css reset 是什么?css 预编译器是什么? 后编译器(post css)是什么? css reset 即...

  • CSS布局、居中和样式重置

    css reset 是什么?css 预编译器是什么? 后编译器(post css)是什么? css reset 即...

网友评论

    本文标题:编译器想做什么

    本文链接:https://www.haomeiwen.com/subject/qejcvctx.html