读《程序员的自我修养》有感

本文介绍了《程序员的自我修养》一书的主要内容,包括预编译、编译、链接、库与运行库等关键概念。通过详细阐述编译过程的各个步骤,如词法分析、语法分析、语义分析和代码生成,以及链接器如何进行符号解析和地址重定位,展示了程序从源代码到可执行文件的演变。同时,讨论了静态链接与动态链接的区别,以及库在程序运行中的作用。作者在阅读过程中收获颇丰,对程序的编译、链接和装载有了更深的理解,强调了深入学习和反复咀嚼知识的重要性。
摘要由CSDN通过智能技术生成


《程序员的自我修养》这本书其实最开始是信息安全这门课推荐的书,当时书买了,也看了点,后来就感觉跟没看是一样的,主要是之前根本就没怎么接触,也没写什么读书笔记或者做一些实验来加深对知识的理解,后来上了《程序设计与计算机系统》和《计算机病毒》这两门课,然后再次读了一下,收获颇丰!

这本书的全名叫做《程序员的自我修养---链接,装载与库》,但是不得不提的是编译这个过程也非常重要,书的第二章从一个简单的输出hello,world程序说起

 

 

 


当在linux下面执行gcc hello.c或者在windows下面cl /c hello.c,这个过程实际上可以分为一下4个步骤:

 

预编译:

预编译过程主要处理源代码文件中以#开始的预编译指令,比如”#include”, ”#define”,处理规则如下:

  • 删除所有的#define,展开所有的宏定义
  • 删除所有注释,增加行号和文件名标识用于编译器调试
  • 保留所有的#pragma编译器指令,因为编译器要使用它们
  • 处理所有的条件预编译指令,比如#if,#ifdef

编译

编译过程主要是对预处理完的文件进行一系列的词法分析、语法分析、语义分析、代码生成、代码优化最终得到汇编代码。

词法分析:主要是扫描源程序将源代码的字符序列分割成一系列的TokenToken主要分为关键字,标识符,数字&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值