![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
读书笔记
文章平均质量分 84
huangyuan2019
这个作者很懒,什么都没留下…
展开
-
[CSAPP][深入理解计算机][07]链接
编译器驱动程序链接是将各种代码和数据整理成一个文件的过程,然后这个文件被执行我们写的程序常常包括调用的各种基本库、外部库、自己写的库,所以实际上在计算机中的存储形式是很多个单独的小模块,每次更改其中的一个小模块时,只需要重新编译这个小模块,其他的不变。当我们写的程序非常小的时候,链接这个过程就由链接器默默处理了,但理解链接这个过程,可以让我们设计程序代码和编译修改时更加清晰。在debug时,用gcc编译时使用-Og参数可以让编译器优化后生成的文件符合C语言代码结构,便于我们调试读懂,正式使用时常常原创 2022-01-04 13:17:57 · 669 阅读 · 0 评论 -
[CSAPP][深入理解计算机][06]存储器的层次结构
存储技术计算机内存储结构如下图所示的金字塔型,不同层级的存储类型读写需要的时间从上到下逐渐增多RAM随机访问存储器,分为静态SRAM和动态DRAM。SRAM将每个比特位的信息存储在一个双稳态的存储器单元(由六个晶体管实现)内。DRAM的存储器单元(超单元)由一个电容和晶体管组成,容易受电容电压扰动。DRAM的超单元是二维阵列(为了减少地址引脚数量),每次取数据需要先把行复制到缓冲区,再从缓冲区取列。DRAM里面还分同步SDRAM和异步,同步比异步快。DDR4/DDR3指的就是DDR SDRA原创 2022-01-01 11:45:44 · 441 阅读 · 0 评论 -
[CSAPP][深入理解计算机][05]优化程序性能
优化程序性能1优化程序性能要考虑三点:合适的算法和数据结构、编译器的能力和局限性、并行化。编译器一般不会过于优化代码,为了避免出现一些异常情况。循环代码中应集中精力优化CPE(每个元素的运行时间)。优化程序性能2编译时加入-O1参数即可得到编译器优化代码。循环体中重复的函数调用可以代码移动到循环体外。使用临时变量(只占用普通寄存器)代替内存地址引用,最后统一一次写到内存即可。理解现代处理器现代处理器的结构如下图所示处理器的多个子单元支持了指令的乱序执行。针对代码种的分支情况,原创 2021-12-29 13:49:19 · 297 阅读 · 0 评论 -
[CSAPP][深入理解计算机][04]处理器体系架构
指令系统结构指令系统结构是处理器设计人员设计好的软件和硬件之间的通信接口,主要包括指令、寄存器定义、条件码、程序计数器、状态码几种概念。数字电路与处理器设计寄存器用寄存器文件来描述,包括输入输出端口,可写信号、地址、时钟、复位信号等,用硬件描述语言verilog/VHDL编写。数字电路具体来说是由CMOS中的N管和P管组合实现的,首先通过组合实现逻辑门电路,然后搭起来实现选择、存储、加减等高级功能。由于非门、与非门、或非门的实现比较高效,所以其他逻辑都是由这三个组合实现的。组合逻辑电路无状原创 2021-12-27 23:06:54 · 1165 阅读 · 0 评论 -
[CSAPP][深入理解计算机][03]程序的机器级表示
视频教程:b站九曲阑干【合集】CSAPP程序的机器级表示intel处理器的发展历史,从1978年的8086到现在的i9,从16位扩展到64位生成汇编文件x.s,汇编文件里面包括以.开头的指导汇编器和链接器的指令,以及与代码相关的汇编代码intel中把16位看作一个字,所以32位称为双字,64位称为四字,汇编码中指令后缀的字母可以代表数据类型,例如movb,movw分别代表复制字节,复制字gcc中-s参数表示从c文件生成汇编文件s,改成-c参数则是从c文件生成机器代码o利用反汇编工具objdum原创 2021-12-25 20:55:45 · 596 阅读 · 0 评论 -
[CASPP][深入理解计算机][02]信息的表示和处理
视频教程:b站九曲阑干【合集】CSAPP信息的存储(上)程序将内存看作一个非常大的数组(虚拟地址空间),每个元素存的是地址。地址的长度字长目前是32位到64位。1bit = 8位二进制数 = 1个字节。字节的存储顺序:大端法(IBM,Sun)正序,小端法(intel,android,ios)逆序,新机器(ARM)支持双端配置32位程序可以允许在32位机器或者64位机器上,但是64位程序只能允许在64位机器上。32位机器虚拟地址空间4GB,64位机器虚拟地址空间16EB。一个字节=8位二进制原创 2021-12-17 22:19:58 · 1217 阅读 · 0 评论 -
[CSAPP][深入理解计算机][01]计算机系统漫游
视频教程:b站九曲阑干【合集】CSAPP1. 为什么要深入理解计算机optimizing program performance 优化程序性能understanding link-time errors 理解链接错误avoiding security holes 避免安全漏洞2. 编写的hello.c到生成可执行文件hello的过程经历了什么gcc -o hello hello.c通过这句指令,gcc编译器让一个hello.c文件变成了一个可执行程序hello,这中间发生了什么?3.原创 2021-12-14 21:34:59 · 1160 阅读 · 0 评论