![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
程序员的自我修养
文章平均质量分 66
coke_pwn
当代恶臭大学生
展开
-
第二章:编译和链接_3_4
第二章:编译和链接_3_42.3 链接器的年龄比编译器长程序并不是一写好久永远不变的,它会经常被修改。比如我们在第一条指令之后,第五条指令之前插入了一条或多条指令,那么第五条指令后面的的指令的位置也会相应的往后移动,当程序修改的时候,这些位置都要重新计算,十分繁琐又耗时,并且容易出错。这种重新计算各个目标地址的过程叫做 重定位于是 符号这个概念随着汇编语言的普及迅速的被使用,他可以用来表示一个地址,这个地址可能是一段程序的起始地址,也可以是一个变量的起始地址。2.4 模块拼装——静态链接程序设原创 2022-04-16 13:01:52 · 261 阅读 · 0 评论 -
第二章:编译和链接_2
第二章:编译和链接_2编译器做了什么从直观来说,编译器就是将高级语言翻译成机器语言的一个工具。编译器的存在可以让程序员更加关注程序本身的逻辑,而尽量少考虑计算机本身的限制,如字长,内存大小,通信方式,存储方式。编译过程一般可以分为6步, 扫描,语法分析,语义分析,源代码优化,代码生成和目标代码优化2.2.1 词法分析首先源代码被输入到 扫描器,扫描器的任务很简单,它只是简单地进行词法分析,运用一种类似于 有限状态机的算法可以很轻松地将源代码的字符序列分割成一系列的 记号(token)。词法分析产原创 2022-04-16 10:03:43 · 181 阅读 · 0 评论 -
第二章:编译和链接_1
第二章:编译和链接_12.1 被隐藏了的过程当我们用GCC编译文件的时候有很多步骤被隐藏了,GCC编译的过程可以分为四个步骤,分别是 预处理,编译,汇编,链接2.1.1 预编译使用命令来让编译器只执行预编译$gcc -E hello.c -o hello.i或者$gcc hello.c > hello.i预编译的主要过程是处理那些源代码中的以“#”开头的预编译指令。比如“#include”,“#define”等,主要处理规则如下:将所有的“#define”删除,并且展开所有原创 2022-04-14 14:26:23 · 225 阅读 · 0 评论 -
第一章:计算机的软硬件基本结构—6
第一章:计算机的软硬件基本结构—61.6 众人拾柴火焰高1.6.1 线程基础在现代软件系统中,线程和进程一样重要。特别是随着CPU频率增长开始出现停滞,而开始向多核发展。多线程,作为实现软件并发执行的一个重要的方法,也开始具有越来越重要的地位。什么是线程 线程(Thread),有时候被称为 轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元,一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。通常意义上,一个进程由一个到多个线程组成,各个原创 2022-04-08 17:23:39 · 161 阅读 · 0 评论 -
第一章:计算机的软硬件基本结构_5
第一章:计算机的软硬件基本结构_51.5 内存不够怎么办操作系统的多任务功能使得CPU能够在多个进程之间很好的共享,从进程角度好像它独占了CPU而不用考虑与其他进程分享CPU。为了更有效的利用硬件资源,我们必须同时运行多个程序,正如前面的多道程序,分时系统和多任务一样,当我们能够同时运行多个程序时,CPU的利用率较高。但是就会有一个很明显的问题, 如何将计算机上有限的物理内存分配给多个程序使用。在分配内存时会出现的问题。地址空间不隔离 所有程序直接访问物理地址,程序所使用的内存空间不原创 2022-04-07 21:07:38 · 109 阅读 · 0 评论 -
第一章:计算机的软硬件基本结构_4
第一章:计算机的软硬件基本结构_41.4 操作系统做什么操作系统的一个功能是提供抽象的接口,另一个主要功能是管理硬件资源。1.4.1 不要让CPU打盹在计算机发展的早期,CPU资源十分昂贵,当CPU运行一个程序的时候,该程序需要读写磁盘,CPU就空闲下来了。这极大的浪费了CPU的资源。于是人们编写了一个监控程序,当某个程序暂时无须使用CPU时,监控程序就把另外正在等待CPU资源的程序启动,使得CPU能充分利用起来。这被称为 多道程序。但是这种程序的调度策略太过粗糙。程序之间不分轻重缓急。稍微改原创 2022-04-05 14:35:29 · 5008 阅读 · 0 评论 -
第一章:计算机的软硬件基本结构_3
第一章:计算机的软硬件基本结构_31.3 站得高,望得远系统软件可以分为两块,一块是平台性的,比如操作系统内核,驱动程序,运行库,和数以千计的系统工具。另一块是用于程序开发的,比如编译器,汇编器,链接器等开发工具和开发库。计算机系统软件体系结构采用一种层的结构,有人说过一句名言:计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决!系统软件体系结构中,各种软件的位置如下图所示。每个层次之间相互通过共同的通信协议来通信,我们一般将其称为 接口,接口下面那层是接口的提供者,由他定义接口原创 2022-04-05 14:03:53 · 7360 阅读 · 0 评论 -
第一章:计算机的软硬件基本结构_2
第一章:计算机的软硬件基本结构1.2 万变不离其宗计算机是个非常广泛的概念,包括大到要装数层楼的超级计算机,也有小到手上拿的手机上的嵌入式芯片都可以被称为计算机。撇开计算机硬件中复杂的各种设备,芯片,以及外围接口的等,站在软件开发者的角度去看,我们只需要抓住硬件的几个关键部件,对于系统应用开发者来说,最为关键的部件分别是,中央处理器CPU,内存和I/O控制芯片,对于普通应用程序开发者来说,他们只需要关心CPU以外其他的都不需要,对于一些高级平台的开发者来说(如java,.NET或脚本语言开发者),原创 2022-04-05 12:06:43 · 1970 阅读 · 0 评论 -
第一章:计算机的软硬件基本结构—Q&A
第一章:计算机的软硬件基本结构—Q&A1.1 从hello World说起问题程序为什么要被编译了以后才可以运行?A:编程语言是程序员的语言,但是不是计算机能够理解的语言,计算机能够理解的语言只有机器码,也就是二进制的0和1。所以程序需要被编译才能运行。编译器在把C语言程序转换为可以执行的机器码的过程中做了什么,怎么做的?A:编译分为四个步骤,分别是预处理,编译,汇编,链接。预处理首先对以#开头的预编译命令处理。删除所有注释。编译会经过一系列的词法分析,语法分析,语义分析,优原创 2022-04-05 11:12:52 · 950 阅读 · 0 评论