以程序员的角度看待“hello,world” 这个程序


代码如下:(c语言)

#include <stdio.h>
int  main()
{
 printf ("hello,world\n ");
 return 0;
  
}

一.编译器将代码转换为ASCII码

hello程序的生命周期是从一个源程序(或者是说源文件开始的)
即程序员通过编辑器创建并保存的文本文件,文件名取为hello.c。源程序实际上就是一个 由值0和1组成的位(又称为比特)序列,8个位被组织成一组,称为字节。每个字节表示程序中的某些文本字符。大部分的现代计算机系统都使用ASCII标准来表示文本字符,这种方式实际上就是用一个唯一的单字节大小的整数值来表示每个字符。比如,下图所示给出了hello.c程序的 ASCII码表示。
在这里插入图片描述

hello.c程序是以字节序列的方式储存在文件中的,每个字符都有一个整数值,对应于某些字符。每一行都是以一个看不见的换行符 ‘\n’ 来结束的,它所对应的整数值为10.像hell.c这样只由ASCII字符构成的文件称为文本文件。

二.编译器驱动程序将ASCII码转换为二进制

为了在系统上运行hello.c程序,会将ASCII码转换为一系列的低级机器语言指令(也就是转换为二进制)。然后这些指令按照一种称为可执行的目标程序的格式打好包,并以二进制磁盘文件的形式存放在磁盘。
翻译器驱动程序读取源程序文件hello.c,并把它翻译成一个可执行的目标文件hello,这个翻译过程可分为四个阶段完成(预处理-----编译器------汇编器-----链接器)这里就不详细展开了

三.把磁盘的代码和数据加载到主存

当我们开始编译运行代码的时候,系统会执行一系列指令来加载可执行的hello文件,这些指令将hello目标文件中的代码和数据从磁盘复制到主存。
如下图所示:
在这里插入图片描述

四.显示结果

一旦目标文件hello中的代码和数据被加载到主存,处理器就开始执行hello程序的main程序中的机器语言指令,这些指令将 "hello,word\n"字符串中的字节从主存复制到寄存器文件,再从寄存器文件中复制到显示设备。最终显示在屏幕上。这个步骤如图所示:
在这里插入图片描述

我是根据自己的理解描述的这个过程,也不知道对不对,如果有不全以及错误的,欢迎补充和指正。
感谢!!!!!!!!
在这里插入图片描述

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值