首页 > 编程语言 >C语言程序是怎么在计算机中运行起来的

C语言程序是怎么在计算机中运行起来的

时间:2024-07-04 20:00:12浏览次数:16  
标签:计算机 程序 C语言 编译器 指令 printf hello

  • hello.c
#include <stdio.h>

int main(){
	printf("hello,world\n");
	return 0;
}

这段 C语言程序的代码能被编程人员读懂,但是计算机系统读不懂。C语言、C++、java 这些高级编程语言本质上还是人类用的语言而不是计算机用的语言。
为了能在计算机上运行这个 C语言程序,需要由其他程序将每一条 C语言程序转化成低级的机器语言指令。这些指令会被按照一种被称为可执行目标程序的格式打包好,以二进制存储文件的形式存储起来。目标程序也称为可执行目标文件。
C语言编译器驱动程序将 C语言程序文件 hello.c翻译成一个可执行目标文件 hello。整个翻译过程可分为四个阶段,执行四个阶段的程序为:

  • 预处理器
  • 编译器
  • 汇编器
  • 链接器

image.png

以下是以这个“hello.c”程序为例,对四个阶段的讲解:

  1. 预处理器阶段:
    • 在这个阶段,预处理器会处理“#include <stdio.h>”这行代码。它会把“stdio.h”这个头文件的内容插入到当前位置。头文件中通常包含了一些函数的声明,比如“printf”函数的声明。此外,预处理器还可能处理其他的预处理指令,比如宏定义等。对于我们的“hello.c”程序,经过预处理器处理后,就为后续的编译做好了准备。
  2. 编译器阶段:
    • 编译器会把预处理后的代码翻译成汇编语言代码。在这个例子中,它会分析“int main()”函数中的语句,比如“printf(“hello,world\n”);”和“return 0;”,并将其转换为相应的汇编指令。这些汇编指令是一种更接近机器语言但仍然相对可读的形式。
  3. 汇编器阶段:
    • 汇编器的任务是将编译器生成的汇编语言代码转换为机器语言指令。机器语言指令是由二进制数字组成的,计算机可以直接执行。对于“printf”这样的函数调用,会生成相应的机器指令来完成函数的调用和参数传递等操作。
  4. 链接器阶段:
    • 因为我们的程序可能会调用一些库函数,比如“printf”函数就是在标准库中定义的。链接器会把我们程序生成的目标文件和系统提供的库文件(包含了“printf”等函数的实现)链接在一起,形成一个完整的可执行目标文件。这样,当我们运行这个可执行文件时,计算机就能正确地执行“printf”等函数,输出“hello,world”并最终结束程序返回 0。

标签:计算机,程序,C语言,编译器,指令,printf,hello
From: https://blog.csdn.net/2301_82018821/article/details/140188390

相关文章

  • python+flask计算机毕业设计的图书管理系统(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景在数字化与信息化日益深入的今天,图书管理系统的开发与应用已成为图书馆管理工作中的重要一环。传统的图书管理方式,如手工登记、纸质借阅记......
  • python+flask计算机毕业设计二手图书零售系统(程序+开题+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景随着信息时代的到来,知识的传播与获取方式发生了深刻变革,图书作为文化传承和知识积累的重要载体,其数量与日俱增。然而,在传统图书市场饱和、......
  • C语言控制流练习题
    当用户输入5的时候,使用嵌套循环产生下列图案(5行美元符号,每行递增一个字符#include<stdio.h>intmain(void){intline;//输入行数scanf("%d",&line);inti;for(i=1;i<=line;i++)//从每行开始打印{for(intj=1;j<=i;j++)//每一行需要打印数{......
  • C语言课设-电话订餐管理系统
    一、设计需求        某餐厅有大、中、小三种餐桌各5个,餐桌号分别为A1-A5,B1-B5,C1-C5,大餐桌可供8-10人用餐,中餐桌可供5-7人用餐,小餐桌可供1-4人用餐。电话订餐信息包括:订餐编号、订餐者姓名、订餐者电话、用餐时间、用餐人数、订餐是否成功,如下表所示。订餐编号订......
  • 【计算机毕业设计】024基于weixin小程序汽车保养系统
    ......
  • 【计算机毕业设计】025基于weixin小程序移动学习平台
    ......
  • 【计算机毕业设计】026基于微信小程序的原创音乐
    ......
  • 预约上门按摩小程序(APP+H5)源码交付成品系统
    在这个风和日丽的午后,给大家带来一个非常实用、便捷且高效的产品——预约上门按摩小程序源码系统!这不仅仅是一个小程序,更是一个能够让你轻松预约专业按摩师上门服务的神器哦!大家在日常生活中,是不是经常感到工作压力大,肩颈酸痛,想找个按摩师舒缓一下,却不知道去哪里找?或者找到了,......
  • 记录一下使用小程序反编译获取源码
    起因是自己开发的小程序源码被扒了,泄露了一些数据,要做优化调整代码,所以尝试扒自己开发的小程序源码。安装node.jswxappUnpacker(逆向反编译工具)使用夜神模拟器(直接是root默认,手机需要进入root模式,就是模拟器比较卡)实操流程如下打开wxappUnpacker所在文件夹,cmd进入命令......
  • 【数据结构】(C语言):二叉搜索树(不使用递归)
    二叉搜索树:非线性的,树是层级结构。基本单位是节点,每个节点最多2个子节点。有序。每个节点,其左子节点都比它小,其右子节点都比它大。每个子树都是一个二叉搜索树。每个节点及其所有子节点形成子树。可以是空树。C语言实现:(使用链表实现,不使用递归) 创建结构体数据类型(记录二叉......