深入理解计算机系统 笔记(一)

1.信息属于位+上下文
8bite 为 一字节
用字节表示文本字符(即code,包括c、c++、java等等),采用ASCII标准表示字符。
#为35 每行结尾都有换行符 \n 为10 (ASCII中)。

2. c文件翻译流程
在Unix系统上,从源文件到目标文件的转化 由编译器驱动程序完成:
例:

linux > gcc -o hello hello.c //-o  o为output 之意

执行过程为:

  1. 预处理阶段 :hello.c -> hello.i
    预处理指令包括条件编译、源文件包含、宏替换、行控制、抛错、杂注和空指令。
    例:预处理器根据以字符#开头命令,修改原始程序,将include 中文件加载进来,形成新c程序。
    2)编译阶段: hello.i -> hello.s
    编译器将文本文件hello.i翻译成文本文件hello.s 为汇编语言程序。
    汇编语言为不同高级语言的不同编译器提供了通用的输出语言。
    3)汇编阶段 hello .s -> hello.o
    汇编器(as)将hello.s翻译成机器语言指令,并将其打包为一种可重定位目标程序,保存在hello .o文件中,其为二进制文件。
    4)链接阶段 hello.o + printf.o -> hello 可执行文件 (比如.exe)
    hello.o调用了printf函数,其为标准库函数,而printf函数存在于一个名为printf.o的单独预编译好的目标文件中,需要将其合并到hello.o中,链接器(ld)进行处理合并,最终得到hello可执行文件,可以被加载到内存中,由系统执行。
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值