• "Hello World " —— 深入理解程序从编译到执行


    对于C语言编写的Hello World程序(例如以下)。对于程序猿来说肯定如雷贯耳,就是这样一个简单的程序,你真的了解她吗?

    #include <stdio.h>
    int main()
    {
        printf("Hello World
    ")
        return 0;
    }

    对于以下这些问题,你脑子里可以立即反映出一个清晰、明显的答案吗?

    1. 程序为什么要被编译器编译之后才干够执行?
    2. 编译器在把C语言程序转换成能够执行的机器码的过程中做了什么?怎么做的?
    3. 最后编译出来的可执行文件中面是什么?除了机器码还有什么?他们怎么存放的?怎么组织的?
    4. #include <stdio.h>是什么意思?把stdio.h包括进来意味着什么?C语言库又是什么?它怎么实现的?
    5. 不同的编译器(Microsoft VC、GCC)和不同的硬件平台(x86、SPARC、MIPS、ARM),以及不同的操作系统(Windows、Linux、UNIX、Solaris),终于编译出来的结果一样吗?为什么?
    6. Hello World程序是怎么执行起来的?操作系统是怎么装载它的?他从哪里開始执行?到哪儿结束?main函数之前发生了什么?main函数结束之后又发生了什么?
    7. 假设没有操作系统,Hello World能够执行吗?假设要在一台没有操作系统的机器上执行Hello World须要什么?应该怎么实现?
    8. printf是怎么实现的?他为什么能够有不定数量的參数?为什么它能够在终端上输出字符串?
    9. Hello World程序在执行时。它在内存中是什么样子的?

  • 相关阅读:
    Autho2----完整搭建实例
    详解SpringBoot应用跨域访问解决方案
    微信小程序后端开发流程
    前端必备 Nginx 配置
    后端必备 Nginx 配置
    关于spring boot集成MQTT
    Java 常用IO流操作详解
    spring boot 整合mybatis 的xml版本【包括逆向工程以及分页插件】
    实用 SQL 语句
    整理收集的一些常用java工具类
  • 原文地址:https://www.cnblogs.com/slgkaifa/p/6941136.html
Copyright © 2020-2023  润新知