网络

教育改变生活

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 119|回复: 0
打印 上一主题 下一主题

[计算机系统原理] 《计算机系统原理》(2023 年版)第 3 章 程序的转换及机...

[复制链接]

589

主题

616

帖子

4万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
41773

最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老

跳转到指定楼层
楼主
发表于 3 天前 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
《计算机系统原理》(2023 年版)第 3 章 程序的转换及机器级表示 学习指南一、章节核心架构
本章聚焦程序从源代码到机器级表示的转换过程,以及计算机如何理解和执行指令,核心内容包括:
1. 程序转换流程:汇编语言与机器语言的关系,编译过程(预处理编译汇编链接),静态链接与动态链接的区别
2. 机器级表示:指令格式(操作码 + 地址码),寻址方式(立即寻址、直接寻址、寄存器寻址等),指令集架构(CISC/RISC
3. 汇编语言基础:汇编指令的组成(操作符 + 操作数),伪指令功能(EQUDBEND 等),汇编程序的作用
二、学习目标拆解(一)知识掌握目标
1. 准确描述程序从高级语言到机器码的完整转换步骤(教材 P62 3-1 重点)
2. 熟练区分指令格式中的操作码字段和地址码字段,理解操作码扩展技术(如定长操作码 vs 变长操作码)
3. 掌握 7 种常见寻址方式的定义及有效地址计算方法(立即、直接、间接、寄存器、寄存器间接、基址、变址)
4. 清晰阐述 CISC RISC 的主要区别(指令数量、复杂度、执行周期等,参考教材 P78 3-3
5. 识别汇编语言中的伪指令功能(如 ORG 定义起始地址,DW 定义字数据)
(二)能力培养目标
1. 能分析给定高级语言代码(如 C 语言)经编译后的汇编指令结构
2. 正确计算不同寻址方式下的有效地址(例:已知基址寄存器内容为 1000H,偏移量 200H,求基址寻址有效地址)
3. 对比不同指令集架构的优缺点,针对特定场景选择合适的 ISA(如嵌入式设备更适合 RISC
4. 识别汇编程序中的错误(如未定义的符号、错误的寻址方式使用)
三、重点难点深度解析(一)核心重点模块1. 程序转换过程
编译阶段细分
[size=11.0000pt]源代码 词法分析(识别token语法分析(构建语法树)语义分析(类型检查)中间代码生成 代码优化 目标代码生成
关键产物:中间代码(如三地址码)便于跨平台移植,目标代码需通过链接解析外部符号
链接类型对比
[size=11.0000pt]链接方式
[size=11.0000pt]链接时机
[size=11.0000pt]优点
[size=11.0000pt]缺点
[size=11.0000pt]典型应用
[size=11.0000pt]静态链接
[size=11.0000pt]编译后阶段
[size=11.0000pt]运行时无需依赖库
[size=11.0000pt]程序体积大
[size=11.0000pt]嵌入式系统
[size=11.0000pt]动态链接
[size=11.0000pt]程序加载时
[size=11.0000pt]节省内存 / 支持版本更新
[size=11.0000pt]需要动态库存在
[size=11.0000pt]Windows DLL
2. 寻址方式解析
有效地址计算公式
[size=11.0000pt]寻址方式
[size=11.0000pt]有效地址(EA)计算公式
[size=11.0000pt]示例(假设 R0=2000H[2000H]=3000H
[size=11.0000pt]立即寻址
[size=11.0000pt]EA = 操作数本身
[size=11.0000pt]MOV AX, #100H → AX=100H
[size=11.0000pt]直接寻址
[size=11.0000pt]EA = 地址码字段
[size=11.0000pt]MOV AX, [100H] → AX=[100H]
[size=11.0000pt]寄存器寻址
[size=11.0000pt]EA = 寄存器内容
[size=11.0000pt]MOV AX, R0 → AX=2000H
[size=11.0000pt]间接寻址
[size=11.0000pt]EA = [地址码字段
[size=11.0000pt]MOV AX, @100H → AX=[[100H]]
[size=11.0000pt]基址寻址
[size=11.0000pt]EA = 基址寄存器 + 偏移量
[size=11.0000pt]EA = R0 + 100H = 2100H
寻址方式选择依据:立即寻址适合常数赋值,间接寻址适合动态数据访问,寄存器寻址速度最快
3. 指令集架构对比
[size=11.0000pt]特征
[size=11.0000pt]CISC(如 x86
[size=11.0000pt]RISC(如 ARM
[size=11.0000pt]指令数量
[size=11.0000pt]200 + 复杂指令
[size=11.0000pt]80 + 精简指令
[size=11.0000pt]指令长度
[size=11.0000pt]可变长(1-15 字节)
[size=11.0000pt]定长(32 / 64 位)
[size=11.0000pt]执行周期
[size=11.0000pt]多周期(需微程序控制)
[size=11.0000pt]单周期(硬件直接执行)
[size=11.0000pt]典型应用
[size=11.0000pt]桌面计算机
[size=11.0000pt]移动设备 / 嵌入式系统
(二)学习难点突破
1. 操作码扩展技术
例:16 位指令字,地址码占 6 位,若采用 3 级扩展:
1 级:4 位操作码(16 种指令)
2 级:8 位操作码(16×16=256 种,地址码减 2 位)
关键:确保不同长度操作码之间无歧义(前缀不重叠)
1. 链接过程符号解析
外部符号(如函数调用)需在链接时解析地址,若符号未定义或重复定义会导致链接错误(如 Linux 下的 undefined reference 错误)
1. 汇编语言伪指令与机器指令的区别
伪指令(如 EQUEND)不生成机器码,仅用于汇编阶段的辅助说明,而机器指令(如 ADDMOV)会转换为二进制操作码
四、高效学习方法(一)流程可视化法
1. 绘制程序转换流程图,标注各阶段输入输出及关键工具(如 GCC 编译过程:gcc -E 预处理,-S 生成汇编,-c 生成目标文件)
2. 用表格对比不同寻址方式的适用场景和执行效率,强化记忆
(二)实例分析法
1. 寻址方式计算
题目:指令 "MOV R1, [R0+#100]"R0=2000H),求有效地址及操作数
解析:基址寻址(R0 为基址寄存器,#100 为偏移量),EA=2000H+100=2100H,操作数为 [2100H]
1. 指令格式分析
例:某指令格式为 16 位,操作码 6 位,地址码 10 位(可寻址 1KB 空间),若扩展操作码为 8 位,则地址码缩减为 8 位(寻址 256B),通过实例理解操作码与地址码的矛盾关系
(三)对比记忆法
1. 制作 CISC/RISC 对比卡片,随身携带强化记忆
2. 区分汇编语言中的指令性语句(生成机器码)和指示性语句(伪指令,不生成代码),通过具体代码片段(如教材 P68 3-1)识别差异
五、知识框架与考点聚焦(一)核心知识图谱
[size=11.0000pt]graph TD
[size=11.0000pt]A[程序转换] --> B(编译过程)
[size=11.0000pt]A --> C(汇编过程)
[size=11.0000pt]A --> D(链接过程)
[size=11.0000pt]B --> B1(词法/语法分析)
[size=11.0000pt]B --> B2(中间代码生成)
[size=11.0000pt]C --> C1(汇编指令结构)
[size=11.0000pt]C --> C2(伪指令功能)
[size=11.0000pt]D --> D1(静态链接)
[size=11.0000pt]D --> D2(动态链接)
[size=11.0000pt]E[机器级表示] --> F(指令格式)
[size=11.0000pt]E --> G(寻址方式)
[size=11.0000pt]E --> H(指令集架构)
[size=11.0000pt]F --> F1(操作码字段)
[size=11.0000pt]F --> F2(地址码字段)
[size=11.0000pt]G --> G1(立即寻址)
[size=11.0000pt]G --> G2(间接寻址)
[size=11.0000pt]H --> H1(CISC特征)
[size=11.0000pt]H --> H2(RISC特征)
(二)高频考点预测
1. 程序转换步骤(简答题,例:简述从 C 语言源文件到可执行文件的编译链接过程)
2. 寻址方式识别与计算(计算题,给定指令和寄存器值,求有效地址及操作数)
3. 指令格式设计(应用题,根据给定地址空间和指令数量,设计操作码扩展方案)
4. CISC RISC 对比(论述题,结合计算机体系结构发展趋势,分析 RISC 的优势)
六、备考策略与资源推荐(一)针对性练习建议
1. 寻址方式专项训练:每天完成 5 道不同寻址方式的有效地址计算,确保掌握基址、变址等复合寻址方式
2. 汇编代码分析:阅读教材 P67 3-1,标注每条指令的寻址方式和伪指令作用,模仿编写简单汇编片段
3. 链接错误排查:理解常见链接错误(如符号重定义、未定义符号)的原因,对应教材 P64 链接阶段功能
(二)深度理解工具
1. 编译器可视化工具:使用 Compiler Explorer 在线查看 C 语言代码对应的汇编指令,观察不同优化级别对代码的影响
2. 调试器实践:通过 GDB 调试程序,观察链接前后符号地址的变化(如动态链接库函数的地址在运行时解析)
3. 指令集手册:参考 ARMv8 架构手册或 x86 指令集文档,对比理论知识与实际硬件实现的差异
(三)学习计划建议
[size=11.0000pt]学习阶段
[size=11.0000pt]核心任务
[size=11.0000pt]建议用时
[size=11.0000pt]配套练习
[size=11.0000pt]基础夯实
[size=11.0000pt]掌握程序转换流程、指令基本格式
[size=11.0000pt]3 小时
[size=11.0000pt]教材 P82 习题 123
[size=11.0000pt]进阶提升
[size=11.0000pt]寻址方式计算、CISC/RISC 对比
[size=11.0000pt]4 小时
[size=11.0000pt]教材 P83 习题 789
[size=11.0000pt]综合应用
[size=11.0000pt]分析编译后的汇编代码、设计指令格式
[size=11.0000pt]2 小时
[size=11.0000pt]模拟题:给定条件设计操作码扩展方案
[size=11.0000pt]总结巩固
[size=11.0000pt]制作寻址方式速查表、ISA 对比表
[size=11.0000pt]1.5 小时
[size=11.0000pt]自测:随机生成指令分析寻址方式
七、常见问题答疑
Q1:为什么需要中间代码生成?A:中间代码(如三地址码)独立于具体硬件,便于代码优化和跨平台移植,提高编译器开发效率
Q2:动态链接的程序如何解决库文件依赖?A:动态链接器在程序加载时扫描系统路径,查找对应的共享库文件,并解析符号地址,支持库文件的版本兼容
Q3:基址寻址和变址寻址的区别是什么?A:基址寻址常用固定寄存器(如 BP)存放基地址,适合程序重定位;变址寻址常用变址寄存器(如 SI)存放数组下标,适合循环访问数组元素
通过系统化学习,建议重点关注程序转换过程中各阶段的作用及产物,结合具体代码实例理解寻址方式的实际应用。对于指令集架构,需联系硬件实现(如 RISC 的单周期执行如何提升 CPU 效率),形成 软件 - 硬件协同的思维模式。练习时注重有效地址计算的准确性,以及复杂指令格式设计的逻辑推导,为后续章节的指令系统设计和 CPU 工作原理打下坚实基础。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

WEB前端

QQ|手机版|小黑屋|金桨网|助学堂  咨询请联系站长。

GMT+8, 2025-6-7 02:20 , Processed in 0.035450 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表