本文概述

什么是汇编?

编译是将源代码转换为目标代码的过程。这是在编译器的帮助下完成的。编译器检查源代码中的语法或结构错误,如果源代码无错误,则编译器将生成目标代码。

c编译过程将作为输入的源代码转换为目标代码或机器代码。编译过程可以分为四个步骤,即预处理,编译,组装和链接。

预处理器将源代码作为输入,并从源代码中删除所有注释。预处理器采用预处理器指令并对其进行解释。例如,如果,该指令在程序中可用,则预处理器将解释该指令,并将该指令替换为“ stdio.h”文件的内容。

以下是我们的程序在转换为可执行形式之前所经过的阶段:

预处理器

编译器

组装工

链接

预处理器

源代码是在文本编辑器中编写的代码,并且源文件的扩展名为“ .c”。该源代码首先传递给预处理器,然后预处理器扩展该代码。扩展代码后,将扩展的代码传递给编译器。

编译器

由预处理器扩展的代码将传递给编译器。编译器将此代码转换为汇编代码。或者我们可以说C编译器将预处理的代码转换为汇编代码。

组装工

使用汇编器将汇编代码转换为目标代码。汇编程序生成的目标文件的名称与源文件的名称相同。在DOS中,目标文件的扩展名为“ .obj”,在UNIX中,扩展名为“ o”。如果源文件的名称是“ hello.c”,那么目标文件的名称将是“ hello.obj”。

链接

主要,所有用C编写的程序都使用库函数。这些库函数是预编译的,并且这些库文件的目标代码以’.lib’(或’.a’)扩展名存储。链接器的主要工作是将库文件的目标代码与程序的目标代码结合在一起。有时,当我们的程序引用其他文件中定义的功能时,就会出现这种情况;那么链接器在其中起着非常重要的作用。它将这些文件的目标代码链接到我们的程序。因此,我们得出结论,链接器的工作是将程序的目标代码与库文件和其他文件的目标代码链接起来。链接器的输出是可执行文件。可执行文件的名称与源文件的名称相同,只是扩展名不同。在DOS中,可执行文件的扩展名为“ .exe”,而在UNIX中,可执行文件的命名为“ a.out”。例如,如果我们在程序中使用printf()函数,则链接器会将其关联的代码添加到输出文件中。

让我们通过一个例子来理解。

你好ç

#include

int main()

{

printf("Hello srcmini");

return 0;

}

现在,我们将创建上述程序的流程图:

在上面的流程图中,采取以下步骤来执行程序:

首先,将输入文件即hello.c传递给预处理器,然后预处理器将源代码转换为扩展的源代码。扩展源代码的扩展名为hello.i。

扩展的源代码将传递给编译器,然后编译器将此扩展的源代码转换为汇编代码。汇编代码的扩展名是hello.s。

然后将此汇编代码发送到汇编器,由汇编器将汇编代码转换为目标代码。

创建目标代码后,链接器将创建可执行文件。然后,加载程序将加载可执行文件以供执行。

编译是检查C语言什么的错误,c语言编译过程相关推荐

  1. c语言数组常见错误,C语言数组在使用中常见的几种错误.pdf

    S C i 卜NOL & TE Q 月N创,)<白Y INI: 口书明A T I仁别 T 技 术 C 语言数组在使用 中常见 的几种错误 刘莉娜 (包头农牧学校 0 14030) 摘 要 ...

  2. python语言包含的错误,Python语言程序中包含的错误,一般分为三种,以下____________不是其中的一种...

    Python语言程序中包含的错误,一般分为三种,以下____________不是其中的一种 答:编译错误 人体体温能自动调控在37度,其原因是( ). 答:人体内产生的热能是分批放出的 人体内有完善的 ...

  3. c语言求和找错误,C语言运行时遇到的错误

    一.基bai础知识和数据类型.表达式 1.{},[],(),'',""不配对.解决这个问题最好的方法就是每当写这些符号的时候就先写成一对,然后再在中间加内容. 2.忘记在语句的末尾 ...

  4. c语言debug执行错误,C语言调试出错 0xC0000005: Access Violation.

    C语言调试出错 0xC0000005: Access Violation.0 高手帮忙看看,自学没人教态痛苦了,出点什么错误自己要看好半天. 好像是input函数下姓名互换的问题.帮我改正,谢了.不要 ...

  5. c语言结构体错误,C语言结构体用法很多,但是坑也很多

    C语言可谓是编程界的传奇语言,历经几十年,依然排名前列. 前不久还写了一篇文章<2019年11月C语言接近Java>,说了C语言是比较受欢迎的一种语言,有望在年底超过JAVA,再次成为第一 ...

  6. python语言包含的错误_Python语言环境错误:不支持的语言环境设置

    Python语言环境错误:不支持的语言环境设置 为什么在python中执行此操作时会出现以下错误: >>> import locale >>> print str( ...

  7. c语言程序出现错误,C语言程序错误,不能正常读写文件,求解啊

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 #define LEN sizeof(struct student) #include #include #include struct student ...

  8. c语言link.exe错误,C语言,执行 link.exe 时出错

    满意答案 1.在VC中点击"Tools"->"Option"->"Directories",发现路径有误,重新设置"E ...

  9. c语言查找大括号错误,C语言大括号哪里用错了

    满意答案 zfud7790 2014.01.07 采纳率:45%    等级:9 已帮助:167人 12345678910111213141516171819202122232425262728293 ...

最新文章

  1. linux系统管理学习笔记之一-------linux解压缩命令
  2. 「树莓派+1万块乐高」打造乐高分类器,树莓派官方转发,网友:我想借来用两天...
  3. python3 Parallel Python
  4. python是不是特别垃圾-python垃圾回收机制
  5. 3704对象关闭时_JVM 通过逃逸分析就能让对象在栈上分配?没那么简单!
  6. 第二章 变量 数据类型 运算符
  7. C# 程序员最常犯的 10 个错误
  8. 软件定义的数据中心已经来临
  9. ise仿真添加信号_「干货」推荐一款FPGA仿真调试鸟枪换炮的工具
  10. 排序sort,统计wc
  11. git push错误解决方案
  12. lambda表达式 java求和_java 8 stream、lambda表达式对list操作分组、过滤、求和、最值、排序、去重...
  13. 四大猛壳之一的VMProtect轻松保护你的程序
  14. Unknown host 'dl.google.com'. You may need to adjust the proxy settings in Gradle.
  15. magicbook2018+MX150+win10+显卡驱动445.87+cuda_10.0.130+cudnn_v7.6.4.38+conda4.8.3+tensorflow1.14.0
  16. Python3 中英文列表输出对齐
  17. Jacobi迭代法分量形式matlab,实验4 Jacobi迭代法和GS迭代
  18. python批量改名
  19. C# 访问ftp地址下载jpg、pdf、文件夹
  20. qpainter可以设置某像素点的颜色吗_你知道人类眼球的内在价值高达35亿美金吗?...

热门文章

  1. ACMNO.7 输入两个正整数m和n,求其最大公约数和最小公倍数。 输入 两个整数 输出 最大公约数,最小公倍数 样例输入 5 7 样例输出 1 35
  2. 一文讲懂图像处理中的低通、高通、带阻和带通滤波器
  3. 用Python构建个性化智能闹钟
  4. 目标检测新技能!引入知识图谱:Reasoning-RCNN
  5. Java IO的一些思考
  6. nginx配置image_filter生成缩略图
  7. 深浅复制的的理解与区别
  8. 使用 SQL Server 2012 Analysis Services Tabular Mode 表格建模 图文教程
  9. 通过脚本案例学习shell(五) 通过创建DNS脚本一步一步教你将一个普通脚本规范到一个生产环境脚本...
  10. 【转】Linux世界驰骋——文件系统和设备管理