• CPU与编译器概论(读书笔记)


         对于非计算机行业的程序猿来说,在编写C代码时无法可能写出来的代码没有那么高效,对编译器及计算机处理数据和指令的操作流程都不是很了解。下面我们就走进编译器和计算机的世界,去了解他们是怎么运作的。以下内容很多来自《深入理解操作系统》及《C性能优化》

      1、  编译器是如何运作的 

          下面就以简单的“hello world\n"为例子

    #include <stdio.h>
    
    int main()
    {
        printf("hello world\n");
        return 0;
    }
    

        在里linux系统上,完成由源文件hello.c到可执行文件hello的转化是由编译器完成的。翻译的过程分为4个阶段预处理、编译、汇编、链接一起构成了编译系统(compilation system)。


      预处理阶段

    gcc -E hello.c -o hello.i
          主要作用:1、头文件全部展开写到源程序中
                             2、宏定义替换
                             3、不对程序语法作检查
       生成的hello.i文件可以自己打开看看!

      编译阶段

    gcc -S hello.i -o hello.s
          作用: 1、检查语法的合法性
                       2、编译器将hello.i文件翻译成汇编文件hello.s

     汇编阶段

    gcc -c hello.s -o hell.o
                 汇编器将汇编文件翻译成机器指令,这是打开文件,看到是一些乱码。

    链接阶段

    gcc hello.o -o hello
        生成可执行代码 hello
       file hello  查看属性
    hello: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.15, not stripped

  • 相关阅读:
    opencv实现连通域
    C Tips:显示点阵汉字的小样例
    协方差的意义
    HashTable类模板_C++
    Java实现 蓝桥杯VIP 算法提高 选择排序
    Java实现 蓝桥杯VIP 算法提高 笨小猴
    Java实现 蓝桥杯VIP 算法提高 笨小猴
    Java实现 蓝桥杯VIP 算法提高 笨小猴
    Java实现 蓝桥杯VIP 算法提高 笨小猴
    Java实现 蓝桥杯VIP 算法提高 笨小猴
  • 原文地址:https://www.cnblogs.com/javawebsoa/p/2999552.html
Copyright © 2020-2023  润新知