深入理解计算机系统
文章平均质量分 88
mygfze
这个作者很懒,什么都没留下…
展开
-
深入理解计算机系统 第7章 链接
链接链接:将各种代码和数据片段收集并组合成一个单一文件,这个文件可以被加载到内存并执行链接可以执行于编译时,也可以执行于加载时,甚至执行于运行时。main.cint sum(int *a, int n);int array[2] = {1,2};int main(){ int val = sum(array,2); return val;}sum.cint sum(int *a, int n){ int i, s = 0; for(i = 0; i原创 2021-02-23 17:33:14 · 156 阅读 · 0 评论 -
深入理解计算机系统 第6章 存储器层次结构
SRAM静态,更快更贵,作为cacheDRAM动态,主存,图形系统的帧缓冲区静态RAM存储在双稳态存储器,无限期保持在两个不同电压配置之一动态RAM每个位为一个电容的充电,干扰非常敏感。数码相机、摄像机本质上就是DRAM阵列。传统的DRAM行地址i称为RAS,列地址j称为CAS内存模块i7使用240个引脚的双列直插内存模块DIMM增强的DRAM快页模式:一次读一行非易失性存储器ROM读事务磁盘比DRAM慢10万倍,比SRAM慢100万倍记录密度 位/英寸磁道密度原创 2021-02-11 16:24:34 · 154 阅读 · 0 评论 -
深入理解计算机系统 第5章 优化程序性能
编译器必须很小心地对程序只使用安全的优化乍一看,这两个过程似乎有相同的行为。不过,考虑xp等于yp的情况内存别名使用:两个指针可能指向同一个内存位置函数调用。大多数编译器不会试图判断一个函数是否没有副作用每元素的周期数CPE...原创 2021-02-08 17:50:02 · 311 阅读 · 0 评论 -
深入理解计算机系统 第4章 处理器体系结构
指令集体系结构isa。ISA在编译器编写者和处理器设计人员之间提供了一个概念抽象层,编译器编写者只需要知道允许哪些指令,以及它们是如何编码的;而处理器设计者必须建造出执行这些指令的处理器。Y86-64程序员可见状态Y86-64程序用虚拟地址来引用内存位置。字:8字节立即数(i)、寄存器(r)或内存(m)第一个字母就表明了源的类型。第二个字母指明了目的的类型内存引用方式是简单的基址和偏移量形式OPq有addq、subq、andq和xorq。这些指令会设置3个条件码ZF、SF和OF(零、符号原创 2021-01-30 15:41:44 · 1153 阅读 · 0 评论 -
深入理解计算机系统 第3章 程序的机器级表示
gcc -Og -o p pl. c p2 .c-Og告诉编译器使用会生成符合原始C代码整体结构的机 器代码的优化等级。-O1 -O2C预处理器 插入所有用#include命令指定的文件,并扩展所有用#define声明指定的宏。编译器 产生两个源文件的汇编代码,名字分别为pl.s和p2.s。汇编器会将汇编代码转化成二进制目标代码文件pl.。和p2.o。没有填入全局值的地址链接器将两个目标代码文件与实现库函数(例如printf)的代码合并,并产生最终的可执行代码文件P(由命令行指示符-o p指定的原创 2021-01-28 10:25:29 · 422 阅读 · 0 评论 -
深入理解计算机系统 第2章 信息的表示和处理
十六进制 hex四个 二进制一组字长指明指针数据的标称大小。虚拟地址是以这样一个字来编码int32_t和int64_t ,分别为4个字节和8个字节大部分数据类型都编码为有符号数值。数据类型char是一个例外。尽管大多数编译器和机器将它们视为有符号数,但C标准不保证这一点。小端法 在内存中按照从最低 有效字节到最高有效字节的顺序存储对象大端法 从最高有效字节到最低有效字节的顺序存储0x1234567Intel兼容机只用小端模式。IBM Oracle大多数是大端。 较新的处理器是双端法原创 2021-01-23 22:16:54 · 161 阅读 · 0 评论 -
深入理解计算机系统 第1章 计算机系统漫游
程序#include <stdio.h>int main(){ printf("hello world/n"); return 0;}hello.c 以字节序列存在文件中。只由ASCII字符构成称为文本文件,其他文件称为 二进制文件。系统中所有信息都是由一串比特表示,区分不同数据对象是由上下文gcc -o hello hello.cgcc 读取hello.c 把他翻译成一个可执行目标文件hello。分为四步预处理阶段 预处理器cpp 根据#开头命令,修改程序。得到.i原创 2021-01-22 21:35:33 · 74 阅读 · 0 评论