程序环境的详讲

简介: 在ANSI C的任何一种实现中,存在两个不同的环境>:第1种是翻译环境,在这个环境中源代码被转换为可执行的机器指令.第2种是执行环境,它用于实际执行代码.

目录


一.程序的翻译环境和执行环境


1.翻译环境


(1)翻译环境中分为编译器和链接器


(2)编译中也分为3步


2.执行环境


一.程序的翻译环境和执行环境

在ANSI C的任何一种实现中,存在两个不同的环境>:

第1种是翻译环境,在这个环境中源代码被转换为可执行的机器指令.

第2种是执行环境,它用于实际执行代码.


1.翻译环境

(1)翻译环境中分为编译器和链接器

源代码在翻译环境中生成可执行程序:

编译+链接----->可执行程序 如图:

85f196a079bc1a6b90743bacfde02b2a_055bc8821cc241e1a2c872435294e4ed.png



(2)编译中也分为3步

1.预编译


2.编译


3.汇编


如图:

b708c3773e2a00087273f4a6fce67fe1_3999e2d491094a07b2717fc29c278f88.png

2.执行环境

程序执行的过程:

1. 程序必须载入内存中.在有操作系统的环境中:一般这个由操作系统完成.在独立的环境中, 程序

的载入必须由手工安排, 也可能是通过可执行代码置入只读内存来完成。

2. 程序的执行便开始. 接着便调用main函数.

3. 开始执行程序代码. 这个时候程序将使用一个运行时堆栈(stack), 存储函数的局部变量和返回

地址。程序同时也可以使用静态(static)内存,存储于静态内存中的变量在程序的整个执行过程

一直保留他们的值.

4. 终止程序.正常终止main函数;也有可能是意外终止


目录
相关文章
|
3月前
|
IDE Linux 开发工具
一网打尽:C++远程调试工具和策略全指南
一网打尽:C++远程调试工具和策略全指南
110 2
|
5天前
|
调度
项目环境测试问题之单机调度会导致项目环境大部分的机器被闲置如何解决
项目环境测试问题之单机调度会导致项目环境大部分的机器被闲置如何解决
|
1月前
|
敏捷开发 Shell 测试技术
阿里云云效产品使用合集之如何用私有构建机运行shell命令打出的镜像作为下一个阶段的入参
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
3月前
|
敏捷开发 数据可视化 物联网
云效产品使用常见问题之用ARM架构的机器意义不知道如何解决
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
3月前
|
监控 数据安全/隐私保护 iOS开发
服务器监控新利器:ServerBee带你看透服务器运行状态
服务器监控新利器:ServerBee带你看透服务器运行状态
82 0
|
3月前
|
域名解析 监控 Linux
排查网络-几个步骤 几款工具
先抛个问题,如果哪天突然发现IDC机房 和 公有云 之间的服务无法访问了(排除服务本身的问题之外,可能是网络不通,也可能是网络变的很慢使得资源无法及时下载,从而导致服务无法访问)。
|
11月前
|
JavaScript C# 数据安全/隐私保护
C# 软件Licence应用实例
我们在使用一些需要购买版权的软件产品时,或者我们做的商业软件需要进行售卖,为了收取费用,一般需要一个软件使用许可证,然后输入这个许可到软件里就能够使用软件。简单的是一串序列码或者一个许可证文件,复杂的是一个定制化插件包。于是有的小伙伴就开始好奇这个许可是怎么实现的,特别是在离线情况下它是怎么给软件授权,同时又能避免被破解的。
245 0
|
前端开发 Java API
如何使用线上环境进行本地代码调试
如何使用线上环境进行本地代码调试
464 0
|
网络安全 网络架构 Python
如何写批量备份交换机配置的Python脚本?今日文章安排5个厂商的,牛叉!
如何写批量备份交换机配置的Python脚本?今日文章安排5个厂商的,牛叉!
258 0
如何写批量备份交换机配置的Python脚本?今日文章安排5个厂商的,牛叉!
第七次笔记:程序的机器级代码表示
第七次笔记:程序的机器级代码表示
80 0
第七次笔记:程序的机器级代码表示