哈工大计算机系统 大作业 您所在的位置:网站首页 linux大作业用户管理系统 哈工大计算机系统 大作业

哈工大计算机系统 大作业

2023-06-11 09:52| 来源: 网络整理| 查看: 265

第1章 概述

1.1 Hello简介

用计算机系统的语言,逐条总结hello所经历的过程。

你对计算机系统的设计与实现的深切感悟,你的创新理念,如新的设计与实现方法。

首先要完成hello.c的C语言源程序的编写。这就是hello的起点。

下一步使用命令gcc -E进行预处理,hello完成从hello.c到hello.i的变化。

下一步使用命令gcc -S进行编译,hello完成从hello.i到hello.s的变化。

下一步使用命令gcc -c进行汇编,hello完成从hello.s到hello.o的变化。此时的hello已经变成一个二进制文件了。

对hello进行链接,将hello的好伙伴们和hello联系起来,把它和其他可重定位二进制文件合体,变成一个可以在计算机上运行的二进制文件。

当hello执行时,可以通过IO输入等操作向进程发送信号。例如我们从键盘输入Ctrl-c,就会发送一个SIGINT信号,使当前前台进程的作业中断;同样哦们可以使用命令jobs来查看被抢占的进程,使用命令fg %来恢复对应ID的进程。

1.2 环境与工具

硬件环境: CPU:Intel i9-12900H,16GB内存。 系统环境: 虚拟机:Ubuntu 16.04 LTS,VMWare Workstation 16 工具:文本编辑器gedit,反汇编工具edb 1.3,反汇编工具objdump,编译环境gcc等。

1.3 中间结果

1.可执行文件 hello。

2.原始代码 hello.c。

3.预处理后的代码 hello.i。

4.可重定位目标文件 hello.o。

5.hello.o 的 objdump 结果 hello.o.txt

6.编译后的汇编语言代码 hello.s。

7.hello 的 objdump 结果 hello.txt 1.4 本章小结

第2章 预处理

2.1 预处理的概念与作用

概念:当对一个源文件进行编译时,系统将自动引用预处理程序对源程序中的预处理部分作处理,处理完毕自动进入对源程序的编译。C语言提供多种预处理功能,主要处理#开始的预处理指令,如宏定义(#define)、文件包含(#include)、条件编译(#ifdef)等。

作用:所有的预处理器(cpp)命令都是以井号(#)开头。它必须是第一个非空字符,为了增强可读性,预处理器指令应从第一列开始。

(1)添加对应的头文件在#include处

(2)删除#define并展开对应的宏,#undef取消已经定义的宏。

(3)#ifdef, 若宏已经定义,则返回真;#ifndef, 若宏没有定义,则返回真

(4)处理所有的条件预编译指令,例如#if#endif,根据“#if”后面的条件决定需要编译的代码。

(5) #if,如果给定条件为真,则编译下面代码;#else是#if 的替代方案;#elif,如果前面的#if给定条件不为真,当前条件为真,则编译下面代码;#endif,结束一个 #if……#else 条件编译块。

(6)#error,当遇到标准错误时,输出错误信息。

(7)#pragma,使用标准化方法,发布特殊的命令到编译器中。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有