• 计算机系统——hello,world的生命周期


    1 //file: hello.c
    2 
    3 #include <stdio.h>
    4 
    5 int main() {
    6     printf("hello,world!
    ");
    7     return 0;
    8 }

    从一个源程序开始:hello.c

    • 系统中所有信息都是由一串比特表示
    • 只由ASCII字符构成的文件称为文本文件,其他文件都称为二进制文件

    源程序hello.c编译过程

    编译系统

    • 编译过程分为4个阶段完成:预处理器、编译器、汇编器、连接器。

    hello.c(源程序)

    预处理:预处理器cpp修改源程序,将以字符#开头的代码#include<stdio.h>替换成系统头文件stdio的内容。

    编译:编译器ccl 将hello.i 翻译成hello.s 汇编语言程序的文本文件。

    •  

    汇编:汇编器as将hello.s 翻译成hello.o 机器语言指令(可重定位目标程序的格式)。

    链接:hello程序调用了printf 函数,printf函数标准C库的一个函数,存在于printf.o的预编译好的目标文件中,连接器ld将其合并到hello.o程序中得到hello可执行文件。

     到此,编译系统的翻译过程大功告成。

    执行hello可执行文件

    运行hello程序的过程

    加载

    • shell程序从键盘读取“./hello”命令后,将字符逐一读入寄存器,再把它存到内存中。

    • shell执行指令来加载hello可执行文件,将hello目标文件的代码和数据从磁盘复制到主存。(利用DMA直接存储器存取直接从磁盘到达主存)

    运行:

    • hello代码和数据被加载到主存,处理器就开始执行hello程序的main中的机器指令。这些指令将“hello,world ”字符串从主存复制到寄存器文件中,再从寄存器文件复制到显示设备,最终显示在屏幕上。
  • 相关阅读:
    Java设计模式概述之结构型模式(装饰器模式)
    Java设计模式概述之结构型模式(代理模式)
    Java设计模式概述之结构型模式(适配器模式)
    Java设计模式概述之创建型模式
    小诀窍
    iframe的一种应用场景
    linux网络
    ANT
    Eclipse使用
    mac 安装tomcat
  • 原文地址:https://www.cnblogs.com/rons/p/9150168.html
Copyright © 2020-2023  润新知