500字范文,内容丰富有趣,生活中的好帮手!
500字范文 > 转换环境与执行环境 宿主环境与独立环境 宿主实现与独立实现

转换环境与执行环境 宿主环境与独立环境 宿主实现与独立实现

时间:2019-07-09 19:18:21

相关推荐

转换环境与执行环境 宿主环境与独立环境 宿主实现与独立实现

文章目录

1 转换环境与执行环境1.1 转换环境与执行环境的概念1.2 为什么要区分转换环境和执行环境2 宿主环境和独立环境2.1 宿主环境2.2 独立环境3 宿主实现、独立实现3.1 宿主实现3.2 独立实现

1 转换环境与执行环境

1.1 转换环境与执行环境的概念

转换环境:程序转换时所处的环境(程序转换:指的是从源文件到可执行文件的转换,就是我们常说的编译),通俗点就是指程序转换时所用的计算机。

注意:计算机包括了 PC、工作站、服务器、手机、平板电脑、笔记本、单片机等等。

执行环境:程序执行时所处的环境,通俗点就是指程序执行时所用的计算机。

转换环境和执行环境可能是相同的,比如:

对于正在学习阶段的我们来说,肯定是在同一台PC上完成的对程序的转换和执行。这时,转换环境和执行环境就是相同的,它们都是我们所使用的这台PC。

大多数时候,转换环境和执行环境并不相同,比如:

开发一款商业软件,我们需要在自己的PC上完成转换工作,而程序的执行却是在用户的PC上。这时,转换环境和执行环境就可能是不相同的。转换环境就是你所使用的PC、执行环境就是用户所使用的PC。

1.2 为什么要区分转换环境和执行环境

不同的环境具有不同的软硬件配置(不同的CPU架构、不同的操作系统、不同的字符集 等等),比如:手机的处理器可能是ARM架构、PC的处理器可能是X86架构。

如果我们用手机编写一个在手机上运行的软件是很麻烦的,因为,手机屏幕太小了,操作起来非常的不方便。所以,我们通常是在PC上建立一个手机仿真环境,然后在PC上编写和转换要在手机上执行的程序。这时,这个程序的转换环境就是PC,执行环境就是手机。

很显然,如果我们根据转换环境来编写和转换程序的话,由于转换环境和执行环境的CPU架构、操作系统等等都是不同的。那么,这个程序只能运行在PC上,而不能运行在手机上,这明显违背了我们的预期。所以呢,在写程序前,我们需要考虑它的执行环境到底是怎么样的,我们只能根据执行环境来编写和转换程序,这样才能达到我们的预期。这就是我们区分转换环境和执行环境的原因。

2 宿主环境和独立环境

执行环境分为两种:分别是宿主环境和独立环境。

2.1 宿主环境

程序的执行需要依靠操作系统、或者其它软件的支撑。那么,这个程序的执行环境就是宿主环境。

比如:PC上的程序,它的执行环境就是宿主环境(操作系统内核除外)。

2.2 独立环境

程序的执行不需要依靠操作系统、或者其它软件的支撑。那么,这个程序的执行环境就是独立环境。

比如:单片机上的程序,它的执行环境就是独立环境。

一个程序的执行环境到底是宿主环境、还是独立环境,是由程序是否可以独立运行来决定的。

3 宿主实现、独立实现

3.1 宿主实现

宿主实现:转换(执行环境为宿主环境的程序)的实现,比如:gcc。

宿主实现可以接受任何严格依从C标准的C程序。

3.2 独立实现

独立实现:转换(执行环境为独立环境的程序)的实现。比如:keil --> 类似于CodeBlocks的集成开发环境 --> 专门用来为单片机开发软件的 --> 它内置了C实现。

独立实现可以接受任何严格依从C标准的C程序,但程序不能使用绝大多数的库,只能使用以下头文件中的内容:

<float.h> <iso646.h> <limits.h> <stdalign.h> <stdarg.h>

<stdbool.h> <stddef.h> <stdint.h> <stdnoreturn.h>

为什么呢?

因为(执行环境为独立环境的程序),它的运行不依靠操作系统。而标准库中的很多库函数都依赖于操作系统,所以程序不能使用绝大多数的库。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。