-
计算机的储存和处理信息以二进制表示。
-
计算机使用最小的块或字节作为最小的可寻址单位,而不是访问内存中单独的位。
-
机器级程序将内存视为一个非常大的字节数组,称为虚拟内存(virtual memory)。
-
内存中的每个字节都由唯一的数字进行标识,该数字称为它的地址(address)。
所有可能的地址集合称为虚拟地址空间
- C语言中的一个指针的值就是某个存储块的第一个字节的虚拟地址。
与变量类似,指针也有两个方面:值和类型。它的值表示某个对象的位置,而它的类型表示那个位置上所储存对象的类型(比如整数或浮点数)。
-
16进制以0x或者0X开头进行表示,字符 A-F 可大写也可小写。
-
每台计算机都有一个字长,字长决定的最重要的系统参数就是虚拟地址空间的大小。
字长,也就是一般操作系统位数。例如:32位操作系统,64位操作系统。
-
布尔运算 | 和 & 分别对应集合的 并和交, 而 ~ 对应集合的补。
-
C语言支持多种整型数据类型____表示有限范围的整数。
-
汇编代码是机器的代码的文本表示。
-
32位机器只能使用大概4GB(2^32字节)的随机访问存储器。
64位机器能够使用多达256TB(2^48字节),且可以很容易就 扩展至16EB(2^64字节)。
- 1965年, Intel 公司创始人,Gordon Moore 预测,未来10年,芯片上的晶体管数量每年都会翻一番,这个预测也称为摩尔定律。
但事实证明,他的预测过于乐观。 芯片上晶体管的数量每年只以 37% 的速率增加,每26个月就会翻一番。 这个增长率也是很惊人。
- 使用gcc 编译 C 代码的过程。
$ gcc -Og -o p p1.c
-Og 选项作用是告诉编译器使用会生成符合原始C 代码整体结构的机器代码来优化等级。 使用较高级别(-O1, -O2)会使生成的代码严重变形。为了便宜查看生成的代码,而是用这个选项。实际中,出于性能考虑,使用较高级别是比较好的推荐。
- C预处理器扩展源码,插入
#include
命令指定的文件,并扩展所有用#include
声明指定的宏。
- C预处理器扩展源码,插入
- 编译器产生源文件的汇编代码。
- 汇编器将汇编代码转化成二进制目标代码。
- 连接器将目标代码文件与实现库函数的代码合并,并产生可执行代码文件 p。
- 机器码只是简单的将内存看成一个很大的、按字节寻址的数组。
网友评论