网站集群 建设方案,wordpress雪人主题2.0,天津自己制作网站,旅游网站开发网站设计报告书学校《计算机原理》开课啦#xff01;特此开辟专栏#xff0c;将一些知识作为笔记#xff0c;记录下来。 前言
本篇博客知识点来源于educoder的相关题目 1. 相关知识
1.1 计算机语言
计算机语言是人与计算机之间通讯的语言#xff0c;计算机语言包括编写计算机程序的字符… 学校《计算机原理》开课啦特此开辟专栏将一些知识作为笔记记录下来。 前言
本篇博客知识点来源于educoder的相关题目 1. 相关知识
1.1 计算机语言
计算机语言是人与计算机之间通讯的语言计算机语言包括编写计算机程序的字符和语法规则这些字符和语法规则组成计算机执行的各种指令或各种语句。
Python、C/C 等编程语言这些语言和人类语言具有一定的相似性这些编程语言不要求编程者具备很多计算机专业知识只需要利用简单的赋值、条件控制、循环等语句就可以完成复杂算法、程序的设计实现因而这些语言也被称为高级语言。
由于电子元件的二值特性在计算机内部计算机使用的是由 0 和 1 组成的二进制数二进制是计算机的语言的基础计算机执行的是一串串 0 和 1 组成的指令序列这种计算机能够认识的语言就是机器语言。
1.2 程序的处理流程
程序如何从我们看到的高级语言转为计算机可处理的机器语言 上图展示了从高级语言源程序到计算机中的二进制机器码的处理过程该过程包括下列步骤
预处理 编译器处理预处理命令包括头文件包含、宏定义的扩展、条件编译的选择等编译将预处理后的源代码文件 翻译转换 得到机器语言的目标程序得到机器语言汇编文件汇编将汇编代码翻译成机器码此时的机器码尚不能直接运行链接处理可重定位文件把各种符号引用和符号定义转换成为可执行文件中的合适信息通常是虚拟地址。
完成上述步骤后计算机将高级语言编写的文本形式的程序转换成计算机可执行的二进制形式的机器码。
1.3 GCC
GCCGNU Compiler CollectionGNU 编译器套件是由 GNU 开发的编程语言编译器。GNU 编译器套件包括C、C、 Objective-C、 Fortran、Java、Ada 和 Go 语言前端也包括了这些语言的库如libstdclibgcj等。
GCC 的基础用法为
gcc [options] [filenames]
使用 GCC 编译器需要提供一系列必要的调用参数上述基础用法中的 options 表示 GCC 所需要的参数和文件名称上述基础用法中的 filenames 表示 GCC 处理的文件GCC 编译器有超过 100 个调用参数本关卡仅介绍和关卡相关的调用参数其余详细参数可查看 GCC 手册 在 Linux 系统中可以通过 man gcc 查看 GCC 的使用手册。 -o output -o 小写 o参数由两部分组成其中的 -o 表示该参数设置输出文件紧跟在 -o 之后的参数给出输出文件的路径。 -E -E 参数不带有其他设置选项该参数表示对输入文件进行预处理对源代码文件中的文件包含 (include)、 预编译语句 如宏定义define等进行展开把头文件的代码、宏之类的内容转换成更纯粹的 C 代码。 -S -S 参数不带有其他设置选项该参数表示对输入文件进行编译生成对应的汇编语言代码助忆符形式的代码把代码从 C 语言转换成汇编语言。在这个过程GCC 会检查各个源文件的语法。 -c -c 参数不带有其他设置选项该参数表示对输入文件进行汇编生成对应的目标文件把汇编语言的代码转换成机器码。
通常情况下GCC 工具整合了预处理、编译、汇编、链接等步骤例如不带额外参数直接运行 GCC 对输入 C 语言源文件处理后即可得到该文件对应的可执行机器代码即二进制程序如下图所示 为了便于同学们认识详细的处理过程本关卡通过设置编译选项逐步显示 GCC 的处理过程 步骤一预处理 通过命令 gcc -E hello.c -o hello.i 对 hello.c 文件预处理输出文件设置为 hello.i 步骤二编译 通过命令 gcc -S hello.i -o hello.s 编译 hello.i 文件输出文件设置为 hello.s 如下图所示 步骤三汇编 通过命令 gcc -c hello.s -o hello.o 汇编 hello.s 文件输出文件设置为 hello.o 步骤四链接 上一步汇编得到的 hello.o 目标文件仍然无法直接执行需要完成链接操作处理可重定位文件把各种符号引用和符号定义转换成为可执行文件中正确的信息才能生成最终的可执行文件。 通过命令 gcc hello.o -o hello 链接 hello.o 文件输出文件设置为 hello 如下图所示