深入理解计算机系统-系列学习笔记 0125

今早赖床了,只是抓紧看了10分钟的书。我决定以后用费曼学习法,把学习到的东西写出来,提高学习效率,防止努力半天一无所获。
问题1. hello.c 从创建到执行发生了什么?

  1. 起点(昨天看的): hello.c 是个ASCII码编码的文本文件,本质上存储的是一堆010101。怎么转换的?一个字符由一个字节编码,一个字节有八个bit(最大255)。
  2. 编译,*.c是给人看的,怎么转成机器能看懂的?1) 预编译:加载头文件 (#include <stdio.h>)2)转成汇编语言 (比如main 函数) 3)加载库(printf,C编译器自带的),这里记不清了,好像短了一步。
  3. 执行。这里涉及到各种存储的分配

晚上下班后看看

0126 update 一下,上面写错了
2. 编译,*.c是给人看的,怎么转成机器能看懂的?1) 预编译:加载 插入头文件 (#include <stdio.h>)2)转成汇编语言 (比如main 函数) **3)把汇编语言翻译成机器语言指令,%可重定位目标程序%(二进制) **3 4)加载库(printf,C编译器自带的已经单独编译好的printf.o目标文件,与上一步hello.o合并,存储成%可执行目标程序%的hello),这里记不清了,好像短了一步
3. 执行。这里涉及到各种存储的分配 各种硬件(CPU、内存、磁盘(竟然也是IO设备)、IO设备)的分工合作
我猜可重定位(relocatable object program)意思就是能搬来搬去的,小的可执行单元,就像printf,可以被搬来合并到hello.o中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值