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

#include <stdio.h>
int main()
{
printf("Hello World\n")
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程序在执行时。它在内存中是什么样子的?

&quot;Hello World &quot; —— 深入理解程序从编译到执行的更多相关文章

  1. C#程序的编译和执行

    1.在讲解 C# 程序的编译与执行之前,首先了解以下两个概念,以便充分理解C# 程序的运行. CLI--Common Language Infrastructure 的简称,C# 程序在Microso ...

  2. [学习笔记]java基础Java8SE开发环境搭建、第一个Java Hello World、Java程序的编译与执行

    本文作者:sushengmiyan 本文地址:http://blog.csdn.net/sushengmiyan/article/details/25745945 内容简介: ------------ ...

  3. (三)java程序的编译和执行

    编写java程序 eg class Demo { /* * 程序运行的入口 */ public static void main(String[] args) { System.out.println ...

  4. C++程序设计基础(1)程序的编译和执行

    注:读<程序员面试笔记>笔记总结 1.编译执行过程 1.1预处理: (1)所有以#开头的代码都属于预处理的范畴:#include,#define,#ifdef(#ifndef,#endif ...

  5. Linux环境下c程序的编译和执行

    1 单个文件的编译和执行创建main.c文件,内容如下: #include <stdio.h> #include <stdlib.h> int main(void){ prin ...

  6. [Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''&lt;h1 style=&quot;text-align: center;&quot;&gt;php

    [Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL s ...

  7. VS2013带来的&quot;新特性&quot;

    VS2013除了引入"Bootstrap"库以外,最大的变化就是.net Framework 4.5下面的都不支持了.也就是说,假设不把.net库升级成.net Framework ...

  8. .NET程序的编译和运行

    程序的编译和运行,总得来说大体是:首先写好的程序是源代码,然后编译器编译为本地机器语言,最后在本地操作系统运行. 下图为传统代码编译运行过程: .NET的编译和运行过程与之类似,首先编写好的源代码,然 ...

  9. 附录三 嵌入式C程序的编译与调试

    课程回顾 C语言库的特性和发展 C语言库的常用库函数 标准库函数的特色应用 git@github.com:Kevin-Dfg/Data-Structures-and-Algorithm-Analysi ...

随机推荐

  1. 小小的IP,大大的耦合,你痛过吗?

    什么是耦合? 耦合,是架构中,本来不相干的代码.模块.服务.系统因为某些原因联系在一起,各自独立性差,影响则相互影响,变动则相互变动的一种架构状态. 感官上,怎么发现系统中的耦合? 作为技术人,每每在 ...

  2. Java 6中类路径ClassPath对通配符的支持

    在java 6之前,如果我们的应用依赖多个jar包,通常是将所有jar包文件枚举设置到环境变量CLASSPATH或者命令行参数-classpath(-cp)中.通常我们需要写一段shell脚本实现该功 ...

  3. [Windows Server 2012] 安装SQL Server 2012

    ★ 欢迎来到[护卫神·V课堂],网站地址:http://v.huweishen.com★ 护卫神·V课堂 是护卫神旗下专业提供服务器教学视频的网站,每周更新视频.★ 本节我们将带领大家:安装SQL S ...

  4. 汇总——WEB前端资源网

    前端攻城师 爱思资源网 HTML5吧 0101后花园 前端网 编程教程和源代码示例 Javascript中文网 Web前端资源网 移动端HTML5资源整理 Web开发者 SegmentFault 前端 ...

  5. 微信小程序animation

    wxml <view class="background" animation="{{rotateData}}"> </view>< ...

  6. 强大而优雅,API 研发管理 EOLINKER 新版正式发布!

    EOLINKER 于2019年3月3日正式发布新版本!该版本大幅强化各个产品的功能.着重优化了全站的用户交互体验,并且EOLINKER AMS 产品正式更名为 EOLINKER API Studio ...

  7. P4047 [JSOI2010]部落划分(最小生成树)

    题目描述 聪聪研究发现,荒岛野人总是过着群居的生活,但是,并不是整个荒岛上的所有野人都属于同一个部落,野人们总是拉帮结派形成属于自己的部落,不同的部落之间则经常发生争斗.只是,这一切都成为谜团了——聪 ...

  8. Luogu P1256 显示图像

    P1256 显示图像 题目描述 古老的显示屏是由N×M个像素(Pixel)点组成的.一个像素点的位置是根据所在行数和列数决定的.例如P(2,1)表示第2行第1列的像素点.那时候,屏幕只能显示黑与白两种 ...

  9. [luogu2154 SDOI2009] 虔诚的墓主人(树状数组+组合数)

    传送门 Solution 显然每个点的权值可以由当前点上下左右的树的数量用组合数\(O(1)\)求出,但这样枚举会T 那么我们考虑一段连续区间,对于一行中两个常青树中间的部分左右树的数量一定,我们可用 ...

  10. 1.git上手篇总结

    阅读 Git 原理详解及实用指南 记录 上手 1: Git 的最基本的工作模型 从 GitHub 把中央仓库 clone 到本地(使用命令: git clone) 把写完的代码提交(先用 git ad ...