zoukankan      html  css  js  c++  java
  • 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.

  • 相关阅读:
    委托的BeginInvoke和EndInvoke
    HTTP Post
    显示一个托盘
    sql语句
    在C++ 中 如何调用 C# 写的DLL(转载)
    WinForm-MenuStrip
    rsync定时同步和rsync+sersync实时同步
    innobackupex自动备份数据库脚本
    innobackupex备份恢复mysql
    gitlab安装和基本使用
  • 原文地址:https://www.cnblogs.com/arist/p/2672734.html
Copyright © 2011-2022 走看看