• 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.

  • 相关阅读:
    [DP] Rod-cutting problem
    Dynamic Programming (DP) 问题总结
    [CC150] 八皇后问题
    [cc150] 硬币问题
    [cc150] 括号问题
    [CC150] Get all permutations of a string
    让Eclipse使用新版本的JRE
    Java中的数组问题
    慎用递归!
    cocos2d-x 添加背景音乐和音效-SimpleAudioEngine
  • 原文地址:https://www.cnblogs.com/arist/p/2672734.html
Copyright © 2020-2023  润新知