计算机系统基础:程序的表示、转换与链接---学习心得
在深入理解计算机系统一书内,有详尽的说明。
计算机系统概述
首先,通过介绍C语言程序的具体实例,来说明高级语言程序的执行结果与编程语言之外的计算机系统其他方面有关,从而使学生明白为何要学习“计算机系统基础”课程;然后,介绍计算机系统基本组成与基本功能、程序开发和执行过程、计算机系统层次结构等概述性内容;最后,简要说明本课程的主要学习内容。
数据的表示和存储
首先,介绍进位计数制和编码的基本概念;然后,介绍定点数的编码表示,在此基础上介绍带符号整数和无符号整数的表示;接着,介绍浮点数的编码表示,主要包括IEEE 754单精度和双精度浮点格式标准;随后介绍逻辑值、西文字符和汉字等非数值数据的编码表示;最后,介绍数据的宽度和存储。
第3周运算电路基础
首先,介绍布尔代数和数字逻辑电路的基础性内容;然后,介绍C语言中的按位运算以及逻辑运算;接着,介绍高级语言中的整数加减运算及其对应的底层实现电路。
乘除运算及浮点数运算
基于运算电路基础,介绍高级语言中的整数乘除运算与底层实现之间的关系;然后介绍浮点数的运算,特别是浮点运算中的精度问题。
IA-32指令系统概述
首先,介绍高级语言程序与机器级代码之间的关系,以及机器级代码与指令集体系结构(ISA)的关系;然后,介绍IA-32指令系统的概述性内容,包括寄存器组织、寻址方式和指令格式等。
IA-32指令类型
主要介绍IA-32指令系统中常用的几类指令,包括传送、定点算术运算、按位运算、控制转移、x87浮点运算指令,最后简要介绍了MMX及SSE指令集。
C语言语句的机器级表示
主要介绍C语言程序中各类语句被转换为机器级代码后的机器级表示,包括过程(函数)调用的机器级表示、选择和循环语句的机器级表示。
复杂数据类型的机器级表示
主要介绍C语言程序中数组和指针类型的分配和访问、结构和联合数据类型的分配和访问、数据的对齐存放。最后介绍越界访问和缓冲区溢出攻击。
x86-64指令系统
首先,介绍了x86-64指令系统的概述性内容;然后,介绍了与IA-32指令不同的几种x86-64基本指令;最后,介绍了x86-64中过程(函数)调用的具体的实现。
链接概述与目标文件格式
首先,介绍了在生成可执行文件的过程中所涉及到的概述性内容;然后,介绍了目标文件格式的基本内容;最后,分别介绍ELF文件格式中的可重定位文件格式(链接视图)和可执行文件格式(执行视图)。
符号及符号解析
主要内容包括符号的概念、符号表的结构、静态库和静态链接、符号解析。
重定位和动态链接
主要内容包括符号的重定位、可执行文件的加载、共享库和动态链接以及位置无关代码(PIC)。