计算机系统基础pptICS-ex7
合集下载
《计算机系统基础》PPT课件
18000个电子管 1500个继电器 重30吨 占地面积约170m2
总目录
精选课件
1.1 发展史——现代计算机的发展(2)
2、计算机发展进程中的四个时代
第4代 第3代 第2代 第1代
1972—超大规模集成电路 1965—1971中小规模集成电路 1958—1964 晶体管 1946—1957 电子管
计算机的主要应用领域
总目录
精选课件
1.2.3 计算机的主要应用领域
科学计算 数据处理 自动控制 计算机辅助设计/计算机辅助制造 (CAD/CAM) 人工智能 网络应用
总目录
本节结束,请点击
精选课件
返回
1.3 计算机的基本工作原理及结构
计算机的基本结构
计算机的基本工作原理
总目录
精选课件
1.3.1 计算机的基本结构
输入和输出设备
输入设备——用来将现实世界中的数据输入到计算 机,并且转换成为计算机熟悉的二进制码。
常见的输入设备有:键盘、鼠标、数码相机等设备。 输出设备——将计算机处理的结果转换成为用户熟
悉的形式。 常见的输出设备有:显示器、打印机、硬盘、音箱、
网卡等。
ቤተ መጻሕፍቲ ባይዱ总目录
精选课件
各部分的协作流程
反
馈
信
程序+数据 输
第一章 计算机系统基础
总目录
精选课件
第一章 计算机系统基础
学习任务
了解发展历史 了解分类及应用 掌握结构及基本工作原理 理解并掌握数据在计算机中的表示与运算 了解目前计算机的应用环境
总目录
精选课件
1.1 计算机的发展历史
计算机史前史 现代计算机的发展
微型计算机的发展 未来新型计算机
总目录
精选课件
1.1 发展史——现代计算机的发展(2)
2、计算机发展进程中的四个时代
第4代 第3代 第2代 第1代
1972—超大规模集成电路 1965—1971中小规模集成电路 1958—1964 晶体管 1946—1957 电子管
计算机的主要应用领域
总目录
精选课件
1.2.3 计算机的主要应用领域
科学计算 数据处理 自动控制 计算机辅助设计/计算机辅助制造 (CAD/CAM) 人工智能 网络应用
总目录
本节结束,请点击
精选课件
返回
1.3 计算机的基本工作原理及结构
计算机的基本结构
计算机的基本工作原理
总目录
精选课件
1.3.1 计算机的基本结构
输入和输出设备
输入设备——用来将现实世界中的数据输入到计算 机,并且转换成为计算机熟悉的二进制码。
常见的输入设备有:键盘、鼠标、数码相机等设备。 输出设备——将计算机处理的结果转换成为用户熟
悉的形式。 常见的输出设备有:显示器、打印机、硬盘、音箱、
网卡等。
ቤተ መጻሕፍቲ ባይዱ总目录
精选课件
各部分的协作流程
反
馈
信
程序+数据 输
第一章 计算机系统基础
总目录
精选课件
第一章 计算机系统基础
学习任务
了解发展历史 了解分类及应用 掌握结构及基本工作原理 理解并掌握数据在计算机中的表示与运算 了解目前计算机的应用环境
总目录
精选课件
1.1 计算机的发展历史
计算机史前史 现代计算机的发展
微型计算机的发展 未来新型计算机
职称计算机系统基础知识PPT课件
第 一 章:计 算 机系统 基 础 知 识
五、 计算机的应用 (1)科学计算 (数值计算)
计算机最早的应用领域。如天气预报、工 程计算等。 (2)信息处理 。对数据的采集、加工、处理、 分析、统计、归类等,以获得对人有用的信息。 如银行的存/取款系统,火车票订票系统
返回本节目录
第 一 章:计 算 机系统 基 础 知 识
A、用来存储计算机系统中需长期存放的、 大量的信息。 B、不能直接与CPU相连,其数据经内存 传递给CPU进行操作。 C、速度慢、价格低、容量大 D、包括软盘、硬盘、光盘、USB闪存、 移动硬盘等。
第 一 章:计 算 机系统 基 础 知 识
3.5英寸软盘片的内部结构
由一张圆形软塑料片涂上 可记录信息的磁性材料而制成。 通过软盘驱动器(软驱)读取 其中的数据。
硬件(Hardware) 是指有形的物理设备,即实际存在的物理
装置的总称。如显示器、键盘、机箱、鼠标等 软件( software)
是用来指挥计算机完成具体工作的程序和数据, 是整个计算机的灵魂。
它包括计算机上运行的程序、数据及文档。
第 一 章:计 算 机系统 基 础 知 识
硬件和软件的关系
硬件是软件赖以运行的物质基础,软 件是人与硬件之间的界面。 二者具有逻 辑上的等价性,即硬件的功能可以用软件 实现,软件的功能也可以用硬件实现。
(3)实时控制(过程控制) 。它是实现自动化生 产的重要内容和手段。如导弹、无人驾驶飞机等 (4)计算机辅助功能。
CAD(计算机辅助设计) CAM(计算机辅助制造) CAI(计算机辅助教学) (5)人工智能 。 模拟人类智能,如机器人,专家系统,语言、 图像识别等。
第 一 章:计 算 机系统 基 础 知 识
计算机基础知识PPT课件
第6阶段(2005 年至今)是酷睿 (core)系列微 处理器时代
2014-2-28
可编辑
10
2014-2-28
了解计算机应用领域能开阔 视野,了解计算机发展趋势 捕捉应用先机。
可编辑
11
1.2.1 计算机的应用领域
科学计算
信息管理
过程控制
辅助技术 应用
人工智能
多媒体应 用
电子商务
电子政务
2014-2-28
16
数制
2. 二进制数
➢ 由0、1两个数字组成,基数为2,特点是“逢二 进一”,如1+1=10。
➢ 例如二进制数1101.1可表示为:
(1101.1)2 = 1×23 + 1×22 + 0×21 + 1×20 + 1×2-1 = (13.5)10
2014-2-28
可编辑
17
数制
3. 八进制数 由0、1、2…、7八个数字组成,基数为8,
可编辑
9
微型计算机发展阶段
第1阶段
(1971—1973
年)4-8位低 档微处理器 时代,
第2阶段
(1971—1977
年)是8位 中高档微处 理器时代,
第3阶段
(1978—1984
年)是16位 微处理器时 代
第4阶段 (1985— 1992年)是 32位微处理 器时代,
第5阶段 (19932005年)是 奔腾 (pentium) 系列微处理 器时代
2014-2-28
可编辑
22
数制转换
1). 任意进制数转换为十进制数
任意进制数转换为十进制数可按“权”展开求和。
(1101.1) 2 = 1×23 + 1×22 + 0×21 + 1×20 + 1×2-1 = (13.5)10 (123.4)8 = 1×82 + 2×81 + 3×80 + 4×8-1 = (83.5)10 (4F8A)16 = 4×163 + F×162 + 8×161 + A×160 = (20362)10
第一章计算机系统基础知识-PPT精品
1.3.2 不同进位制之间的转换
2.十进制数转换为非十进制数
整数部分:除N取余,且除到商为0为止; 小数部分:乘N取整,乘到小数部分为0为止;
乘不尽时,到满足精度为止。 (其中N为要转换的进制基数)
● 注 意 - 整数部分的余数反序书写; - 小数部分的整数正序书写。
例: (123.45)10 =( 1111?011.0111 )2
针对各国文字、符号进行统一性编码。用两 字节表示的全编码,对于ASCII字符它也使用 两字节表示。
BIG5码 台湾、香港地区普遍使用的一种繁体汉字的 编码标准,包括440个符号,一级汉字5401 个、二级汉字7652个,共计13060个汉字。
本讲内容
一、计算机中信息的表示
二、计算机软件系统
1.5.1 软件分类 1.5.2 软件体系结构
1.3.6 汉字在计算机中的表示
二、计算机软件系统 三、计算机系统安装和配置
1.3.6 汉字在计算机中的表示
输入码
汉字输入
国标码
机内码
汉字存储
地址码
字形码
汉字输出
1 汉字输入码
音码类 全拼、双拼、微软拼音、自然码和 智能ABC等。
形码类 五笔字型法、郑码输入法等 。
1.3.6 汉字在计算机中的表示
余数
2 123
1 低
2
61
1
2
30
0
0.45 X2
0.90 X2
2 15 1
1.80
2
71
231
2
1
高 1
X2 1.60
X2 1.20
0
1.3.2 不同进位制之间的转换
3.非十进制数之间的转换
计算机基础知识教学学习PPT认识计算机系统
2.不同进位计数制之间的转换
(1)r进制数转换为十进制数 基数为r的数字,只要将各位数字与它的权相乘,其积
相加,和数就是十进制数。 (2)十进制转换为r进制
十进制转换为r进制时,需要将整数部分和小数部分分 别转换,然后再拼接形成完整数值。整数部分转换采用除r 取余法,小数部分转换采用乘r取整法(小数部分若永不为 零,达到要求精度为止)。 (3)非十进制数之间转换
【任务分析】
系统软件管理控制计算机,应用软件提供 帮助工作的操作环境,它们既有联系,又有差 别,因此可考虑将任务分解为认识系统软件和 认识应用软件。
与计算机软件有关的知识
1.系统软件 (1)Windows系列操作系统 (2)Netware操作系统 (3)UNIX操作系统 (4)Linux操作系统 (5)程序设计语言 (6)工具软件
计算机硬件知识
1.与主机相连的外部设备 一台计算机从外观上看,主要包括主机、显示器、键盘、
鼠标和音箱等。 显示器和音箱属于输出设备,也是将计算机处理结果转换
成人类习惯的表现形式的设备。常见的输出设备有显示器、 打印机和绘图仪等。 键盘和鼠标属于输入设备,用于向计算机输入程序和数据, 是将人类习惯的文字、图形和声音转换成计算机能够识别 的二进制的设备。常见的输入设备有键盘、鼠标和扫描仪 等。
4.汉字的编码 用计算机处理汉字时,必须先将汉字代码化。由
于汉字种类繁多,编码比较困难,而且在一个汉字处 理系统中,输入、内部处理、输出时对汉字代码的要 求不尽相同,所以用的代码也不尽相同。
(1)输入码 (2)内部码 (3)字形码
查阅与计算机编码有关的资料并获得相应成果
(1)与计算机编码有关的资料 (2)学习成果
若干份与计算机系统软件和计算机应用软 件有关的资料;
《计算机基础入门》PPT课件
中小规模集 成电路
几千万条
大/超大规 模集成电路
数亿条以上
计算机发展简介 计算机工作原理 计算机系统组成
计算机工作原理
存储程序原理:存储程序和程序控制 程序:是完成既定任务的一组指令序列。
计算机利用“存储器”来存入所要执行的 程序,而称之为CPU的部件可以依次从存 储器中取出程序中的每一条指令,并加以 分析和执行,直至完成全部指令任务为止。 这就是计算机 的“存储程序”工作原理。
计算机配置 中央处理器 存储器 键盘 鼠标 显示系统 声卡与音箱 打印机等
多媒体计算机配置
激光打印机
喷墨打印机
扫描仪
计算机配置 中央处理器 存储器 键盘 鼠标 显示系统 声卡与音箱 打印机等
多媒体计算机配置
多媒体计算机的配置
多媒体计算机的典型配置
PC部件
建议最低配置
微处理器
奔腾MMX、PII、PIII等
第一台程序存储式计算机EDVAC于1950研 制成功。
参与设计者冯.诺依曼
计算机发展简介
计算机发展简介 计算机工作原理 计算机系统组成
阶段 时间
第一代 1946~1958
电子部件
处理速度 (指令数/秒)
电子管
几千条
第二代 1958~1964 晶体管
几百万条
第三代 1965~1971 第四代 1972~现在
CPU
1. CPU的速度与主频
速度:奔腾微处理器的速度已达上亿次每秒。 单位:MIPS 百万指令/秒
主频:以MHz为单位,主频越高就表明CPU运 算速度越快。例如:Celeron 833 指主频 为833MHz;PⅣ的主频已达1GHz以上。
2. CPU的字长
计算机系统基础知识教学课件
计算机病毒的定义
计算机病毒是一种恶意软件,通过复制自身在计算机之间或网络中 进行传播,旨在破坏数据、干扰计算机操作或窃取信息。
常见病毒类型
包括蠕虫、特洛伊木马、勒索软件、间谍软件等。
防范措施
使用可靠的杀毒软件并及时更新病毒库;定期备份重要数据;不随意 打开未知来源的邮件和链接;不下载和运行未知来源的程序。
主板的性能和稳定性对整个计算机的 性能和稳定性有着重要影响。
计算机的性能指标
计算机的性能指标包括运算速度 、存储容量、输入输出能力、可
靠性等。
运算速度取决于CPU的主频和处 理能力,存储容量则取决于存储
器的容量和类型。
输入输出能力决定了计算机处理 外部设备和用户交互的能力,可 靠性则涉及计算机的稳定性和耐
详细描述
自20世纪40年代第一台电子计算机诞生以来,计算机系统经历了多次重大变革, 包括集成电路的出现、个人计算机的普及以及云计算和人工智能等新兴技术的发 展。未来,计算机系统将继续朝着更高效、更智能、更普及的方向发展。
02
计算机硬件系统
中央处理器
中央处理器(CPU)是计算机的核心部件,负责执行程序中的指令,处理数据和 控制计算机各部分的工作。
计算机系统基础件系统 • 计算机软件系统 • 计算机网络系统 • 计算机安全与防护 • 计算机应用领域
01
计算机系统概述
计算机系统的定义与组成
总结词
理解计算机系统的基本概念和组成是 学习计算机科学的基础。
详细描述
计算机系统是由硬件和软件两个部分 组成的。硬件包括中央处理器、存储 器、输入输出设备等,而软件则包括 操作系统、应用程序和数据等。
用性。
03
计算机软件系统
系统软件
计算机病毒是一种恶意软件,通过复制自身在计算机之间或网络中 进行传播,旨在破坏数据、干扰计算机操作或窃取信息。
常见病毒类型
包括蠕虫、特洛伊木马、勒索软件、间谍软件等。
防范措施
使用可靠的杀毒软件并及时更新病毒库;定期备份重要数据;不随意 打开未知来源的邮件和链接;不下载和运行未知来源的程序。
主板的性能和稳定性对整个计算机的 性能和稳定性有着重要影响。
计算机的性能指标
计算机的性能指标包括运算速度 、存储容量、输入输出能力、可
靠性等。
运算速度取决于CPU的主频和处 理能力,存储容量则取决于存储
器的容量和类型。
输入输出能力决定了计算机处理 外部设备和用户交互的能力,可 靠性则涉及计算机的稳定性和耐
详细描述
自20世纪40年代第一台电子计算机诞生以来,计算机系统经历了多次重大变革, 包括集成电路的出现、个人计算机的普及以及云计算和人工智能等新兴技术的发 展。未来,计算机系统将继续朝着更高效、更智能、更普及的方向发展。
02
计算机硬件系统
中央处理器
中央处理器(CPU)是计算机的核心部件,负责执行程序中的指令,处理数据和 控制计算机各部分的工作。
计算机系统基础件系统 • 计算机软件系统 • 计算机网络系统 • 计算机安全与防护 • 计算机应用领域
01
计算机系统概述
计算机系统的定义与组成
总结词
理解计算机系统的基本概念和组成是 学习计算机科学的基础。
详细描述
计算机系统是由硬件和软件两个部分 组成的。硬件包括中央处理器、存储 器、输入输出设备等,而软件则包括 操作系统、应用程序和数据等。
用性。
03
计算机软件系统
系统软件
计算机应用基础第2章 计算机系统幻灯片PPT
〔注意: 存储器不仅仅存放数据,还有指挥计算机运行的指 令〕
第二章 计算机系统
5
数字计算机运行机理
3 控制器(Control):
计算机的中枢神经,其功能是读取并解释程序指令,根 据指令内容产生相应的控制信号、使计算机各部件有相应 的运算动作,协调了计算机各局部工作及内存与外设的访 问等。
由什么来指挥控制器运作?
源代码与机器代码需要有一个转换过程,这过程称为编译。
C语言程序 #include <stdio.h> void main() {
Int a,; a=3+4; printf(“您好!这是C语言程序”); }
机器代码程序示意 0111011111110101 1110010001011100 1010110000000110 1011110000001101 1111110000110110 0001100000000100
人们把预先想好希望计算机做等一系列操作以指令代码 方式存放到计算机内存,然后由控制器有序在内存中读取 指令,通过控制器的解释和执行,计算机就能自动、连续 的不连续的运行。
第二章 计算机系统
6
数字计算机运行机理
4 输入设备(Input system):
输入设备的作用是将程序、原始数据、文字、 字符、控制命令或现场采集的数据等信息输入到 计算机。
第二章 计算机系统
19
软件系统概述
系统软件
• 指为协调计算机各部分有序运行、支 持应用软件开发和运行的软件。
系统支持软件
• 指参与应用程序开发、支撑应用程序运行 的软件。如计算机编程软件、数据库管理
软件、中间件等
工具软件
• 是为系统软件提供服务和辅助功能。是操 作系统的延伸。如360安全卫士
第1章计算机系统基础知识PPT课件
2020/11/6 30
(2)外部因素。对此可将数据分成不同的密级, 规定外部使用员的权限;设置身份认证、密 码、设置口令、设置指纹、声纹、笔迹等多 种认证;设置防火墙,为计算机建立一道屏 障,防止外部人侵破坏数据;建立入侵检测、 审计和追踪,对计算机进行防卫;同时,也 可采用包括计算机的物理环境的保障、防辐 射、防水、防火等外部防灾措施。
表1-14:典型的安全威胁例子
威胁
说明
授权侵犯 为某一特权使用一个系统的人却将该系统用作其他未授
权的目的
拒绝服务 对信息或其他资源的合法访问被无条件地拒绝,或推迟
与时间密切相关的操作
窃听
信息从被监视的通信过程中泄露出去
信息泄露 信息被泄露或暴露给某个未授权的实体
截获/修改 某一通信数据项在传输过程中被改变、删除或替代
2020/11/6快寄。存器临时存放指令、数据及运算结果,速度极14
输入输出设备
习惯上将CPU和主存储器的有机组合称为主 机。
输入设备的作用是把信息转换成二进制形式 输人到计算机的存储器中:数字、字母和控 制符等。
输出设备的作用是把运算处理结果按照人们 所要求的形式输出到外部存储介质上。可以 是数字、字母、表格、图形等.
2020/11/6 3
1.1.1 计算机发展史
1. 大型机阶段 2. 小型机阶段 3. 微型机阶段 4. 客户机/服务器阶段 5. 互连网阶段
2020/11/6 4
1、大型机阶段(mainframe)
1946年,美国为计算弹道轨迹而研制成功了世界第 一台计算机。ENIAC(埃尼阿克)
体积大、耗电量大、寿命短、可靠性差、成本高、 容量小
接口:强调标准性
2020/11/6 23
(2)外部因素。对此可将数据分成不同的密级, 规定外部使用员的权限;设置身份认证、密 码、设置口令、设置指纹、声纹、笔迹等多 种认证;设置防火墙,为计算机建立一道屏 障,防止外部人侵破坏数据;建立入侵检测、 审计和追踪,对计算机进行防卫;同时,也 可采用包括计算机的物理环境的保障、防辐 射、防水、防火等外部防灾措施。
表1-14:典型的安全威胁例子
威胁
说明
授权侵犯 为某一特权使用一个系统的人却将该系统用作其他未授
权的目的
拒绝服务 对信息或其他资源的合法访问被无条件地拒绝,或推迟
与时间密切相关的操作
窃听
信息从被监视的通信过程中泄露出去
信息泄露 信息被泄露或暴露给某个未授权的实体
截获/修改 某一通信数据项在传输过程中被改变、删除或替代
2020/11/6快寄。存器临时存放指令、数据及运算结果,速度极14
输入输出设备
习惯上将CPU和主存储器的有机组合称为主 机。
输入设备的作用是把信息转换成二进制形式 输人到计算机的存储器中:数字、字母和控 制符等。
输出设备的作用是把运算处理结果按照人们 所要求的形式输出到外部存储介质上。可以 是数字、字母、表格、图形等.
2020/11/6 3
1.1.1 计算机发展史
1. 大型机阶段 2. 小型机阶段 3. 微型机阶段 4. 客户机/服务器阶段 5. 互连网阶段
2020/11/6 4
1、大型机阶段(mainframe)
1946年,美国为计算弹道轨迹而研制成功了世界第 一台计算机。ENIAC(埃尼阿克)
体积大、耗电量大、寿命短、可靠性差、成本高、 容量小
接口:强调标准性
2020/11/6 23
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
} Elf32_Rel;
• IA-32有两种最基本的重定位类型
05 00000000 02 FCFFFFFF
…… L0:sub 23
– R_386_32: 绝对地址 – R_386_PC32: PC相对地址
…… B: ……
例如,在rel_text节中有重定位条目
offset: 0x1
offset: 0x6
在rel_text节中的重定位条目为: r_offset=0x7, r_sym=10, r_type=R_386_PC32,dump出 来后为“7: R_386_PC32 swap”
r_sym=10说明 引用的是swap!
int *bufp0 = &buf[0]; static int *bufp1;
void swap() {
int temp; bufp1 = &buf[1]; temp = *bufp0; *bufp0 = *bufp1; *bufp1 = temp; }
E中有main.o和swap.o两个模块!D中有所有定义的符号!
在rel_text节中的重定位条目为: r_offset=0x7, r_sym=10, r_type=R_386_PC32,dump出 来后为“7: R_386_PC32 swap”
r_sym=10说明引用的是swap!
main.o中的符号表
• main.o中的符号表中最后三个条目
Num: value Size
– 完成这一步后,每条指令和每个全局变量都可确定地址
• 对引用符号进行重定位(确定地址)
– 修改.text节和.data节中对每个符号的引用(地址) 需要用到在.rel_data和.rel_text节中保存的重定位信息
重定位信息
• 汇编器遇到引用时,生成一个重定位条目
• 数据引用的重定位条目在.rel_data节中
在main.o和swap.o的重定位条目中有重定位信息,反映符号引用的位置、绑 定的定义符号名、重定位类型
用命令readelf -r main.o可显示main.o中的重定位条目(表项)
符号引用的地址需要重定位
链接本质:合并相同的“节”
可执行目标文件
可重定位目标文件
0 Headers
系统代码 系统数据
.text .data
系统代码 main()
.text
main.o
swap()
main()
.text
更多系统代码
int buf[2]={1,2} .data
swap.o
swap()
.text
int *bufp0=&buf[0] .data static int *bufp1 .bss
系统数据 int buf[2]={1,2} int *bufp0=&buf[0]
int *bufp1
.symtab .debug
.data .bss
虽然是swap的本地符号,也需在.bss节重定位
main.o重定位前
main.c int buf[2]={1,2};
int main() {
swap(); return 0; }
main的定义在.text 节中偏移为0处开始, 占0x12B。
main.o
Disassembly of section .text:
00000000 <main>:
0: 55
push %ebp
1: 89 e5
mov %esp,%ebp
3: 83 e4 f0
and $0xfffffff0,%esp
6: e8 fc ff ff ff call 7 <main+0x7>
程序的链接(二)
重定位
符号解析完成后,可进行重定位工作,分三步 • 合并相同的节
– 将集合E的所有目标模块中相同的节合并成新节 例如,所有.text节合并作为可执行文件中的.text节
• 对定义符号进行重定位(确定地址)
– 确定新节中所有定义符号在虚拟地址空间中的地址 例如,为函数确定首地址,进而确定每条指令的地址,为变量确 定首地址
8:
0
8
9:
0
18
10: 0
0
Type Bind Ot Data Global 0 Func Global 0 Notype Global 0
Ndx 3 1 UND
Name buf main swap
swap是main.o的符号表中第10项,是未定义符号,类型和大小 未知,并是全符号,故在其他模块中定义。
• 指令中引用的重定位条目在.rel_text节中
• ELF中重定位条目格式如下:
typedef struct {
int offset;
/*节内偏移*/
add B jmp L0
…… L0:sub 23
…… B: ……
int symbol:24, /*所绑定符号*/
type: 8; /*重定位类型*/
symbol: B
symbol: L0
type: R_386_32 type: R_386_PC32
问题:重定位条目和汇编后的 机器代码在哪种目标文件中?
在可重定位目标 (.o)文件中!
重定位操作举例
main.c
int buf[2] = {1, 2}; void swap();
int main() {
你能说出哪些是符号定义?哪些是符号的引用?
局部变量temp分配在栈中,不会在过程外被引用,因此不是符号定义
重定位操作举例
main.c
int buf[2] = {1, 2}; void swap();
int main() {
swap(); return 0; }
符号解析后的结果是什么?
swap.c
extern int buf[];
7: R_386_PC32 swap
b: b8 00 00 00 00 mov $0x0,%eax
10: c9
leave
11: c3
ret
Disassembly of section .data:
00000000 <buf>: 0: 01 00 00 00 02 00 00 00 buf的定义在.data节中 偏移为0处开始,占8B。
swap(); return 0; }
swap.c
extern int buf[];
int *bufp0 = &buf[0]; static int *bufp1;
void swap() {
int temp; bufp1 = &buf[1]; temp = *bufp0; *bufp0 = *bufp1; *bufp1 = temp; }
• IA-32有两种最基本的重定位类型
05 00000000 02 FCFFFFFF
…… L0:sub 23
– R_386_32: 绝对地址 – R_386_PC32: PC相对地址
…… B: ……
例如,在rel_text节中有重定位条目
offset: 0x1
offset: 0x6
在rel_text节中的重定位条目为: r_offset=0x7, r_sym=10, r_type=R_386_PC32,dump出 来后为“7: R_386_PC32 swap”
r_sym=10说明 引用的是swap!
int *bufp0 = &buf[0]; static int *bufp1;
void swap() {
int temp; bufp1 = &buf[1]; temp = *bufp0; *bufp0 = *bufp1; *bufp1 = temp; }
E中有main.o和swap.o两个模块!D中有所有定义的符号!
在rel_text节中的重定位条目为: r_offset=0x7, r_sym=10, r_type=R_386_PC32,dump出 来后为“7: R_386_PC32 swap”
r_sym=10说明引用的是swap!
main.o中的符号表
• main.o中的符号表中最后三个条目
Num: value Size
– 完成这一步后,每条指令和每个全局变量都可确定地址
• 对引用符号进行重定位(确定地址)
– 修改.text节和.data节中对每个符号的引用(地址) 需要用到在.rel_data和.rel_text节中保存的重定位信息
重定位信息
• 汇编器遇到引用时,生成一个重定位条目
• 数据引用的重定位条目在.rel_data节中
在main.o和swap.o的重定位条目中有重定位信息,反映符号引用的位置、绑 定的定义符号名、重定位类型
用命令readelf -r main.o可显示main.o中的重定位条目(表项)
符号引用的地址需要重定位
链接本质:合并相同的“节”
可执行目标文件
可重定位目标文件
0 Headers
系统代码 系统数据
.text .data
系统代码 main()
.text
main.o
swap()
main()
.text
更多系统代码
int buf[2]={1,2} .data
swap.o
swap()
.text
int *bufp0=&buf[0] .data static int *bufp1 .bss
系统数据 int buf[2]={1,2} int *bufp0=&buf[0]
int *bufp1
.symtab .debug
.data .bss
虽然是swap的本地符号,也需在.bss节重定位
main.o重定位前
main.c int buf[2]={1,2};
int main() {
swap(); return 0; }
main的定义在.text 节中偏移为0处开始, 占0x12B。
main.o
Disassembly of section .text:
00000000 <main>:
0: 55
push %ebp
1: 89 e5
mov %esp,%ebp
3: 83 e4 f0
and $0xfffffff0,%esp
6: e8 fc ff ff ff call 7 <main+0x7>
程序的链接(二)
重定位
符号解析完成后,可进行重定位工作,分三步 • 合并相同的节
– 将集合E的所有目标模块中相同的节合并成新节 例如,所有.text节合并作为可执行文件中的.text节
• 对定义符号进行重定位(确定地址)
– 确定新节中所有定义符号在虚拟地址空间中的地址 例如,为函数确定首地址,进而确定每条指令的地址,为变量确 定首地址
8:
0
8
9:
0
18
10: 0
0
Type Bind Ot Data Global 0 Func Global 0 Notype Global 0
Ndx 3 1 UND
Name buf main swap
swap是main.o的符号表中第10项,是未定义符号,类型和大小 未知,并是全符号,故在其他模块中定义。
• 指令中引用的重定位条目在.rel_text节中
• ELF中重定位条目格式如下:
typedef struct {
int offset;
/*节内偏移*/
add B jmp L0
…… L0:sub 23
…… B: ……
int symbol:24, /*所绑定符号*/
type: 8; /*重定位类型*/
symbol: B
symbol: L0
type: R_386_32 type: R_386_PC32
问题:重定位条目和汇编后的 机器代码在哪种目标文件中?
在可重定位目标 (.o)文件中!
重定位操作举例
main.c
int buf[2] = {1, 2}; void swap();
int main() {
你能说出哪些是符号定义?哪些是符号的引用?
局部变量temp分配在栈中,不会在过程外被引用,因此不是符号定义
重定位操作举例
main.c
int buf[2] = {1, 2}; void swap();
int main() {
swap(); return 0; }
符号解析后的结果是什么?
swap.c
extern int buf[];
7: R_386_PC32 swap
b: b8 00 00 00 00 mov $0x0,%eax
10: c9
leave
11: c3
ret
Disassembly of section .data:
00000000 <buf>: 0: 01 00 00 00 02 00 00 00 buf的定义在.data节中 偏移为0处开始,占8B。
swap(); return 0; }
swap.c
extern int buf[];
int *bufp0 = &buf[0]; static int *bufp1;
void swap() {
int temp; bufp1 = &buf[1]; temp = *bufp0; *bufp0 = *bufp1; *bufp1 = temp; }