• helloworld.c 的一次系统旅行(1) 读书笔记


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

    跟随helloworld.c的脚步,来一次操作系统的短暂地观光之旅。

    这条语句可能被无数地程序员写过,其内在就是一连串地010110...bits 序列, 它们8个一起构成bytes,每一个bytes代表1个 ASCII 字符。比如 35 对应着 ASCII表中的 '#'。 这里阐述了一个基本的概念,就是所有系统里的信息,包括文件、用户的数据、helloworld.c、memory里的信息;其根本都是010100110...。这些数据可能在不同的环境下表示不同的含义,可能是int number, float number, or machine instruction 。下图是helloworld.c 对应的 ascii 码。

    为了让计算机识别这种高级语言, helloworld.c 会经过以下几个步骤:

    编译系统完成了四步 c-i-s-o-eo ,首先加载 studio.h 到 program text 中,简称预编译。第二步,转换为汇编语言,包含些机器指令。第三步,将汇编语言转化成机器语言指令,最后一步,生成可执行二进制文件。

    当你运行后,结果大概是这样,

    那当我们运行这个程序时,到底后面发生了那些不为人知的故事呢?为此,我们得了解下系统的硬件基本结构:

    bus 电子管道,在不同的部件中每次来回运送 4bytes (32bits)/8bytes(64bits) 数据。

    当我们按下 执行这个编译好的 helloworld.c 文件,操作系统会依次执行以下 3个操作 reading/loading/writing 。

    hello,world.

  • 相关阅读:
    a标签跳转新页面
    js或jquery实现页面打印(局部打印)
    js实现点击定位最顶端
    js实现pdf对页面的打印
    js动态创建input
    sha1加密算法
    JsonHelper修改4.0
    List<T>做数据源绑定的问题
    VS2013智能提示
    Newtonsoft.Json(Json.Net)学习笔记
  • 原文地址:https://www.cnblogs.com/arist/p/2672734.html
Copyright © 2020-2023  润新知