参考教材:计算机系统基础 第二版 袁春风 机械工业出版社
参考慕课:计算机系统基础(四):编程与调试实践 https://www.icourse163.org/learn/NJU-1449521162
计算机系统实验导航
实验一:环境安装 https://blog.youkuaiyun.com/weixin_46291251/article/details/122477054
实验二:数据的存储与运算 https://blog.youkuaiyun.com/weixin_46291251/article/details/122478255
实验三:程序的机器级表示 https://blog.youkuaiyun.com/weixin_46291251/article/details/122478979
实验四:二进制程序逆向工程 https://blog.youkuaiyun.com/weixin_46291251/article/details/122479554
实验五:缓冲区溢出攻击 https://blog.youkuaiyun.com/weixin_46291251/article/details/122479798
实验六:程序的链接 https://blog.youkuaiyun.com/weixin_46291251/article/details/122480049
实验源码: xxx
准备
实验内容:
1 C 语句与机器级指令的对应关系,IA-32 基本指令的执行;
2 C 语言程序中过程调用的执行过程和栈帧结构;
3 缓冲区溢出攻击。
实验目标:
1 掌握程序的机器级表示相关概念;
2 理解 C 语言程序对应机器级指令的执行和过程调用实现;
3 掌握程序的基本调试方法和相关实验工具的运用。
实验任务:
1 学习 MOOC 内容
https://www.icourse163.org/learn/NJU-1449521162
- 第四周 程序的机器级表示
第 4 讲 控制转移指令
第 5 讲 栈和过程调用
第 6 讲 缓冲区溢出
2 完成作业
题目一:比较按值传递和按地址传递
对下列程序代码进行反汇编,指出过程调用中相关语句,比较按值传递参数和按地址传递参数,画出过程调用中栈帧结构图,并给出解释说明。
程序代码和注释说明
Swap.c
1.#include <stdio.h>
2.int swap(int x,int y)
3.{
4. int t=x;
5. x=y;
6. y=t;
7.}
8.void main()
9.{
10. int a=15, b=22;
11. swap(a, b);
12. printf("a=%d\tb=%d\n", a, b);
13.}
Swap2.c
1.#include <