计算机系统基础
绪论
冯诺依曼结构
一种将程序指令存储器和数据存储器合并在一起的一种计算机组织结构
- 运算器(ALU)
- 控制器(Controller)
(前两个称为CPU(MPU
存储器(Memory)
输入设备(Input device)
输出设备(Output Device)
后两个叫IO设备
- 数据总线(Data Bus):在CPU与RAM之间来回传送需要处理或是需要储存的数据。
- 地址总线(Address Bus):用来指定在RAM(Random Access Memory)之中储存的数据的地址。
- 控制总线(Control Bus):将微处理器控制单元(Control Unit)的信号,传送到周边设备。
- 扩展总线(Expansion Bus):外部设备和计算机主机进行数据通信的总线,例如ISA总线,PCI总线。
- 局部总线(Local Bus):取代更高速数据传输的扩展总线。
其中的数据总线DB(Data Bus)、地址总线AB(Address Bus)和控制总线CB(Control Bus),也统称为系统总线,即通常意义上所说的总线。
信息的表示和处理
二进制
addressing and Byte Ordering(字节序(大小端))
(上:大端;下:小端)
(endian:(查不到)《格列佛游记》无所谓之争)
x86小端多,网络协议大端多
Word Size(字长)
Until recently,most machines used 32bits(4bytes)as word size
Limits addresses to 4GB(2^32 bytes)
TiB更精确,TB小点(不同单位不一样)
Representing Pointers
Representing Code
指令集不同,跨平台能力不同
封装格式:PE(可移zhi),ELF
Boolean Algebra
And&;Or|;“Not~”;Xor^(异或);
异或异或太重要了!!!!
Logical Operations in C(逻辑)
||(或;&&(与;!(非;
short Circuit前成立后不执行
有效防止除零和空指针运算
Shift Operations in C(位移)
<<;>>(算术右移(补数据最高位);逻辑右移)
Undefined Behavior(未定义行为)
可读性
Operator precedence issues
加减大于位移
汇编
底层实现
代码示例
gcc -o1 p1.c p2.c -o p
-o1优化,p1.c,p2.c编译为p文件
linker链接部分错误更隐蔽
汇编转换
反汇编工具(linux):
objdump -d winword.exe
gdb sum