深入理解计算机系统
文章平均质量分 94
记录学习csapp的学习笔记
晨哥是个好演员
nothing is impossible
展开
-
计算机系统漫游
以下内容学习总结及图片引用均为Datawhale开源学习内容,详细链接可参考:https://github.com/datawhalechina/team-learning-program/tree/master/ComputerSystems编译过程分为四个阶段:预处理、编译、汇编、链接gcc -E hello.c -o hello.i //预处理gcc -S hello.i -o hello.s //编译gcc -c hello.s -o hello.o //汇编gcc he.原创 2021-12-14 00:14:36 · 1221 阅读 · 0 评论 -
信息的表示和处理
以下内容学习总结及图片引用均为Datawhale开源学习内容,详细链接可参考:https://github.com/datawhalechina/team-learning-program/tree/master/ComputerSystems二进制&十进制&十六进制二进制转十六进制(分组转换)四位二进制可表示一位十六进制,那么对于一个0000 1011,转换后的结果为0x0B,只需要记住关键的十六进制和二进制对应关系即可,关系表如下:对某个二进制如0010 0000 0000.原创 2021-12-18 00:21:44 · 812 阅读 · 0 评论 -
程序的机器级表示
以下内容学习总结为Datawhale开源学习内容,详细链接可参考:https://github.com/datawhalechina/team-learning-program/tree/master/ComputerSystems在编译结束、汇编开始之前,会生成.s程序,这个程序中存放的是代码到汇编的汇编指令。然后再将.s文件通过汇编器生成.o二进制文件。我们来做个实验看看一个代码编程汇编是什么样子,然后二进制.o文件通过objdump反汇编后是什么样子(这里需要说明一下,objdump是一个反汇编.原创 2021-12-26 02:48:29 · 1636 阅读 · 0 评论 -
处理器体系结构
本节主要总结学习了Y86-64的指令流水。相比X86-64,Y86精简指令集便于学习。Y86-64有15个程序寄存器,相比X86-64,省略了%r15以简化指令的编码。每个程序寄存器存储一个64位的字。寄存器%rsp被入栈、出栈、调用和返回指令作为栈指针。除此之外寄存器没有固定的含义或固定值。有3个一位的条件码:ZF、SF和OF,他们保存着最近的算术或逻辑指令的所造成影响的有关信息。程序计数器PC存放当前正在执行的指令的地址。内存从概念上来说就是一个很大的字节数组,保存着程序和数据。程序状态的状态码表明程序原创 2021-12-28 00:03:50 · 1113 阅读 · 0 评论 -
优化程序性能
以下内容学习总结为Datawhale开源学习内容,详细链接可参考:https://github.com/datawhalechina/team-learning-program/tree/master/ComputerSystems写程序最主要的目标就是使它在所有可能的情况下都正确工作。一个运行得很快但是给出错误结果的程序没有任何用处。程序员必须写出清晰简洁的代码,这样做不仅是为了自己能够看懂代码,也是为了在检査代码和今后需要修改代码时,其他人能够读懂和理解代码。另一方面,在很多情况下,让程序运行得.原创 2021-12-28 19:37:36 · 847 阅读 · 0 评论 -
存储器的层次结构
以下内容学习总结为Datawhale开源学习内容,详细链接可参考:https://github.com/datawhalechina/team-learning-program/tree/master/ComputerSystems在计算机系统模型中,CPU执行指令,而存储器系统为CPU存放指令和数据。实际上,存储器系统(memory system)是由不同容量、成本和访问时间的存储设备组成的层次结构。在这个层次结构中:CPU寄存器保存最常用的数据。靠近CPU的小的、 快速的高速缓存存储器作为相对慢速.原创 2022-01-02 00:09:37 · 5761 阅读 · 0 评论