![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
深入理解计算机系统
MUTANT_HXY
这个作者很懒,什么都没留下…
展开
-
Task06:存储器层次结构
存储器的层次结构局部性重复引用相同变量的程序有良好的时间局部性对于步长为k的引用模式的程序,步长k越小,空间局部性越好对于取指令,循环有好的时间和空间局部性循环体越小:时间局部性越好循环迭代次数越多:空间局部性越好存储的层次结构为了将不同存储器存储技术之 的差异性与 算机软件对局 性的 求 两 结合互补 人们构造了一种存储器层次结构。如图是一个经典的存储器层次结构 ...原创 2022-01-04 01:09:58 · 220 阅读 · 0 评论 -
Task05:优化程序性能
编写高效程序需要做到三点:1.必须选择一组适当的算法和数据结构;2.必须编写出编译器能够有效优化以转换成高效可执行代码的源代码(对于这一点,理解优化编译器的能力和局限性很重要);3.将一个任务分成多个部分,这些部分可以在多核和多处理器的某种组合上并行计算。对于优化程序的一个挑战就是尽管做了大量的变化,但还是要尽量维护代码的简洁和可读性。程序优化的第一步就是消除不必要的工作,让代码尽可能有效地执行所期望的任务。包括不必要的函数调用、条件测试和内存引用。为了使程序性能最大化,程序员和编译器都需要知道一个模型原创 2021-12-30 00:29:21 · 313 阅读 · 0 评论 -
Task04:处理器体系架构
Y86-64架构首先,我们来看一下什么是程序员的可见状态,这里的程序员既可以是用汇编代码写程序的人,也可以是产生机器级代码的编译器,可见状态是指每条指令都会去读取或者修改处理器的某些部分,例如内存、寄存器、条件码、程序计数器以及程序状态等。在Y86-64指令系统中,寄存器%rsp也是被定义为栈指针,至于其他14个寄存器没有固定的含义。Y86-64指令...原创 2021-12-28 01:36:29 · 885 阅读 · 0 评论 -
Task03:程序的机器级表示
生成汇编文件mstore.s 并用vim 打开 : gcc -Og -S mstore.c以. 开头的行是指导汇编器和接器工作的伪指令,完全可以忽略.16个通用目的寄存器两种保存器寄存器的意义mov指令原创 2021-12-26 01:08:13 · 150 阅读 · 0 评论 -
Task02:信息的表示和处理
信息的存储整数运算计算机存储整数截断将 int 类型强制类型转换成 short 类型时,int 类型高 16 位数据被丢弃,留下低 16 位的数据,因此截断一个数字,可能会改变它原来的数值。位移运算左移:填充0;逻辑右移:填充0;算数右移:填充最高位的值。对于无符号数,右移为逻辑右移;对于有符号数,右移为算数右移。移动K位,K很大时:设数据类型为w位,移动位数为为w%k位。浮点数含有小数值的二进制数表示:IEEE 的关于浮点数的表示:64 位双精度浮点数,其二进制位与浮点原创 2021-12-18 00:19:13 · 168 阅读 · 0 评论 -
Task01:计算机系统漫游
第1章 计算机系统漫游1 编译系统计算机系统:由硬件和系统软件组成,共同工作来运行应用程序编译系统:GCC编译器驱动程序读取源文件hello.c,翻译成一个可执行目标文件,执行4个阶段的程序(预处理器、编译器、汇编器和链接器)预处理阶段:根据以字符#开头的命令,修改原始的C程序编译阶段:编译器将文本文件hello.i翻译成文本文件hello.s汇编阶段:汇编器将hello.s翻译成机器语言指令,并把这些指令打包成可重定向目标程序hello.o链接阶段:链接器将标准库中的文件合并到hello.o原创 2021-12-15 00:31:55 · 1672 阅读 · 0 评论