1.1信息就是位+上下文

#include <stdio.h>

int main()
{
    printf("hello, world\n");
}

其对应的ASCII文本表示如下

  #    i    n    c    l    u    d    e    <sp>    <    s    t    d    i    o    .
//35    105    110    99    108    117    100    101    32        60    115    116    100    105    111    46
  h    > \n    \n    i    n    t <sp>    m    a    i    n    (    )    \n    {
//104    62    10    10    105    110    116    32    109    97    105    110    40    41    10    123
  \n    <sp> <sp> <sp> <sp>    p    r    i    n    t    f    (    "    h    e    l
//10    32     32      32    32    112    114    105    110    116    102    40    34    104    101    108
  l    o    ,    <sp>w    o    r    l    d    \    n    "    )    ;    \n    }
//108    111    44    32    119    111    114    108    100    92    110    34    41    59    10    125

 

1.2程序被其它程序翻译成不同的格式

unix>gcc -o hello hello.c,此时hello.c将经理4个阶段:

  1. hello.c -> 预处理器 -> hello.i  预处理阶段  (.i被修改后的源文件 文本)
  2. hello.i -> 编译器 -> hello.s   编译阶段  (.s汇编文件 文本)
  3. hello.s ->汇编器 -> hello.o   汇编阶段    (.o可重定位目标文件 二进制)
  4. hello.o -> 链接器 -> hello.exe    链接阶段  (可执行目标文件 二进制)

预处理阶段:

预处理器根据以字符#开头的命令,修改原始.c文件,在hello.c中,预处理器将读取stdio.h的内容,并把其直接插入到hello.c的文本中,结果就得到了修改后的源文件,一般以.i为文件扩展名。

 

编译阶段:

编译器将hello.i翻译成hello.s,它包含一个汇编语言文件,该文件的每条语句都以一种标准的文本格式确切地描述了一条低级机器语言指令。

 

汇编阶段:

汇编器将hello.s翻译成机器语言指令,把这些指定打包成为一种叫做可重定位(relocatable)目标程序的格式,并将结果保存到hello.o中。

hello.o是一个二进制文件,它的字节编码是机器语言指令而不是字符。

 

链接阶段:

代码中我们调用了printf(),它是C标准库中的一个函数,每个C编译器都提供。

printf函数存在于一个名为printf.o的单独的预编译目标文件中,而此文件必须以某种方式并入到我们的hello.o中。

链接器就负责处理这种并入,结果就得到hello.exe文件,这是可执行目标文件。

可执行目标文件加载到存储器后,由系统负责执行。

 

1.3了解编译系统如何工作是大有益处的

111

原文地址:http://www.cnblogs.com/anzf/p/16853980.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性