计算机系统第三章程序的机械级表示笔记
1、计算机执行机器代码,用字节序列编码低级的操作:处理数据、管理内存、读写存储设备上的数据,以及利用网络通信。
2、编译器基于编程语言的规则、目标机器的指令集(cpu类型)、操作系统遵循的惯例(软件层面)生成机器代码
3、其中GCC是c语言的编译器,输入源码输出汇编代码
4、编译器可以调用汇编器和链接器根据输入的汇编代码生成可执行的机器代码
(2)在编译器承担了生成汇编代码的大部分工作,我们学习机器代码的意义:
- 阅读和理解汇编代码依然是一位严谨的程序员的一项很重要的技能。
- 通过直接阅读编译器生成的汇编代码,我们能理解编译器的优化能力,并分析代码中隐含的低效率。
- 高级语言提供的操作层会隐藏我们想要了解的程序的运行时行为。比如:线程包写并发程序时候,想要准确知道在哪里访问共享数据。程序遭受攻击时候,很多都涉及程序存储运行时控制信息的方式的细节,想要了解这些漏洞如何产生,如何防御,需要具备机器级表示的知识。
3.2程序编码
3.2.1机器级代码:
计算机系统使用了多种不同形式的抽象模型来隐藏实现的细节。
第一种指令集体系结构或指令集架构