摘要: > 以下内容学习总结及图片引用均为Datawhale开源学习内容,详细链接可参考 [[🔗 Link]](https://github.com/datawhalechina/team-learning-program/tree/master/ComputerSystems),其中包含了本学习内容中所 阅读全文
posted @ 2023-07-13 19:57 miseryjerry 阅读(100) 评论(0) 推荐(0) 编辑
摘要: 在计算机系统模型中,CPU执行指令,而存储器系统为CPU存放指令和数据。实际上,存储器系统(memory system)是由不同容量、成本和访问时间的存储设备组成的层次结构。在这个层次结构中:**CPU寄存器保存最常用的数据**。靠近CPU的小的、 快速的高速缓存存储器作为相对慢速的主存储器中数据和 阅读全文
posted @ 2023-07-13 19:48 miseryjerry 阅读(279) 评论(0) 推荐(0) 编辑
摘要: > 写程序最主要的目标就是使它在所有可能的情况下都正确工作。一个运行得很快但是给出错误结果的程序没有任何用处。程序员必须写出清晰简洁的代码,这样做不仅是为了自己能够看懂代码,也是为了在检査代码和今后需要修改代码时,其他人能够读懂和理解代码。另一方面,在很多情况下,让程序运行得快也是一个重要的考虑因素 阅读全文
posted @ 2023-07-13 19:45 miseryjerry 阅读(45) 评论(0) 推荐(0) 编辑
摘要: 本节主要总结学习了Y86-64的指令流水。相比X86-64,Y86精简指令集便于学习。Y86-64有15个程序寄存器,相比X86-64,省略了`%r15`以简化指令的编码。每个程序寄存器存储一个64位的字。寄存器`%rsp`被入栈、出栈、调用和返回指令作为栈指针。除此之外寄存器没有固定的含义或固定值 阅读全文
posted @ 2023-07-13 19:44 miseryjerry 阅读(93) 评论(0) 推荐(0) 编辑
摘要: 在编译结束、汇编开始之前,会生成`.s`程序,这个程序中存放的是代码到汇编的汇编指令。然后再将`.s`文件通过汇编器生成`.o`二进制文件。我们来做个实验看看一个代码编程汇编是什么样子,然后二进制`.o`文件通过`objdump`反汇编后是什么样子(这里需要说明一下,`objdump`是一个反汇编工 阅读全文
posted @ 2023-07-13 19:42 miseryjerry 阅读(137) 评论(0) 推荐(0) 编辑
摘要: ### 二进制&十进制&十六进制 **二进制转十六进制(分组转换)** 四位二进制可表示一位十六进制,那么对于一个`0000 1011`,转换后的结果为`0x0B`,只需要记住关键的十六进制和二进制对应关系即可,关系表如下: ![-w1280](https://img2023.cnblogs.com 阅读全文
posted @ 2023-07-13 19:40 miseryjerry 阅读(73) 评论(0) 推荐(0) 编辑
摘要: 编译过程分为四个阶段:预处理、编译、汇编、链接 ![-w1201](https://img2023.cnblogs.com/blog/2937307/202307/2937307-20230713193810928-2078578263.jpg) ```c gcc -E hello.c -o hel 阅读全文
posted @ 2023-07-13 19:38 miseryjerry 阅读(50) 评论(0) 推荐(0) 编辑