zoukankan      html  css  js  c++  java
  • "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程序在执行时。它在内存中是什么样子的?

  • 相关阅读:
    FPGA中亚稳态相关问题及跨时钟域处理
    异步FIFO---Verilog实现
    关于 FPGA 内部信号扇入扇出
    使用Xilinx IP核进行PCIE开发学习笔记
    aurora 64B/66B ip核设置与例程代码详解
    Verilog设计Valid-Ready握手协议
    【待写Java线程之线程终止 Interrupt 】
    【数据结构*转】斐波那契数列
    【数据结构】二分查找
    【待完善】资料记录
  • 原文地址:https://www.cnblogs.com/slgkaifa/p/6941136.html
Copyright © 2011-2022 走看看