IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 山东大学项目实训树莓派提升计划二期(2)计算机系统原理实验二 -> 正文阅读

[系统运维]山东大学项目实训树莓派提升计划二期(2)计算机系统原理实验二

前言

本文将介绍与 GNU GCC、GDB 和 objdump 工具使用的实验二。

GNU GCC,原名为 GNU C 语言编译器,因为它原本只能处理 C 语言,后变得可以处理更多的编程语言,许多操作系统如 Linux 及 BSD 家族都采用 GCC 作为标准编译器。

GDB 是 GNU debugger 的缩写,是 GNU 软件系统中的标准调试器,而 objdump 是在类 Unix 操作系统上显示关于目标文件的各种信息的命令行程序。这两个工具都可以用于反向工程。

上述三个工具中,第一个工具要求学生理解 GNU GCC 的基本使用方法,后两个工具则在 CS:APP 的第三章有所提及,是完成实验三的基础。因此将实验二设置为学习工具的使用,是为后面进行实验打下基础。

介绍

本实验需要学生完成一系列步骤,以此熟悉上述三个工具的使用,包括编写 C 语言的函数、使用 GCC 进行编译、通过 GDB 和 objdump 找到存放在内存中的 char 数组位置等。

树莓派支持的是 Linux/ARM 平台,但本实验是在 Linux/x86-64 平台上完善的,其汇编语言及可执行文件代码可能存在不同,所以本文将主要介绍 C 语言的内容。

文件内容

  • main.c:实验二 main 方法所在文件
  • support.c:学生需要编写的函数所在位置
  • support.h:头文件,无需修改
  • README:实验指导书实验二部分节选

具体内容

实验题目有 3 道:

  1. 修改 support.c 文件,编写计算阶乘的函数 add_up
  2. 修改 main.c 文件,使其可以顺利使用 GCC 进行编译
  3. 使用 GDB 在内存中找到 char 数组 str 的位置

其中 main 方法可以为我们对实验二管中窥豹。

/* 
 * 山东大学 计算机系统原理 实验二
 * 树莓派提升计划二期
 * 
 * main.c - 实验二的 C 源文件
 */

int main() {
    int init = 8;
    int rst = add_up(init);
    printf(str, rst);
    return 0;
}

实验过程简介

学生首先需要修改在 support.c 文件中函数 add_up 的函数体:

/* 
 * 山东大学 计算机系统原理 实验二
 * 树莓派提升计划二期
 * 
 * support.c - 实验二的 C 源文件
 */

int add_up(int n) {
    return n;
}

在上述文件中,并未引入 support.h 作为头文件,学生需要手动将其引入,否则编译时会报错,与此相同的还有 main.c 文件。

当学生使用 GCC 编译完成后,需要通过 objdump 找到 char 数组 str 的地址,然后使用 GDB 调试,找到对应的内存位置即可。这个过程比较重要,因为该步骤会在实验三中反复使用。

更具体的实验过程将会在实验二的实验指导书中详细给出。

实验编写简介

这个实验是在下一个实验「顽皮锁」完成后才加上的,目的是降低每个实验的难度,当然更多是让我首先理解了相关内容,这才方便出实验题。

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-05-05 12:01:58  更:2022-05-05 12:05:57 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 18:21:06-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码