程序环境的详讲

简介: 在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函数;也有可能是意外终止


目录
相关文章
|
1月前
|
前端开发 测试技术 程序员
在工作中会涉及到的几个环境(概念补充) 办公环境、开发环境、测试环境、线下环境、线上环境/生产环境都是什么,他们之间的关系?
本文解释了在职场中可能会接触到的不同环境,包括办公环境、开发环境、测试环境和生产环境(线上环境),以及它们之间的关系和重要性。
65 1
|
3月前
|
人工智能 JSON 前端开发
ProChat 1.1 使用问题之用 chatRef 获取 ProChat 实例以实现程序化控制,如何操作
ProChat 1.1 使用问题之用 chatRef 获取 ProChat 实例以实现程序化控制,如何操作
|
6月前
|
搜索推荐 关系型数据库 MySQL
手把手教你搭建子比主题的系统(亲测可用)|学习版本|虚拟知识付费平台比较合适
搭建Zibll子比主题涉及以下步骤: 1. 服务器环境需支持PHP 7.0+(推荐7.4+)和MySQL。 2. 下载并安装WordPress,可从官方站点获取最新版本。 3. 从指定链接下载子比主题文件。 4. 在WordPress后台上传并启用子比主题,配置固定链接和伪静态,例如使用宝塔面板。 5. 调整主题设置,如Logo和网站关键词。 6. 安装必要插件,如Yoast SEO和Contact Form 7,根据实际需求选择。 7. 完成后测试和调试网站功能。 记得参考官方文档以获取详细指导。
|
6月前
码栈运行程序报错
摘要: 在执行Taobao.CodeStore模块的代码时,遇到一个进程启动问题。具体发生在`Process.StartWithCreateProcess`方法内,随后调用了`Process.Start`,再经由`ProcessExt.StartProcess`和`NewAppDevelopControl.CompileScript`,最终触发点在UI中间控件`RunControl`的简单按钮点击事件`simpleButton_Click`。问题表现为无法正常启动进程。需查找并修复导致进程启动失败的原因。
43 0
|
传感器 数据采集
振弦式渗压计的安装方式和注意事项
振弦式渗压计是一种用于测量土壤水分的仪器,其安装方式和注意事项如下:
振弦式渗压计的安装方式和注意事项
振弦式渗压计的安装方式及注意事项
振弦式渗压计的安装方式及注意事项 振弦式渗压计是一种常用的测量土壤水位的仪器,可以用于监测地下水位、土壤含水量、岩层渗透系数等参数。其原理是依靠振弦的共振频率变化来测量介质中的压力变化。
振弦式渗压计的安装方式及注意事项
|
6月前
|
Swift iOS开发 C++
设置Swift开发环境
设置Swift开发环境
71 1
|
人工智能 Cloud Native Devops
也许是时候停止编写详细的操作手册了
也许是时候停止编写详细的操作手册了
64 0
|
应用服务中间件 Linux nginx
Linux服务器之间迁移数据的窍门
Linux之间复制数据其实很简单,只需运行rsync命令即可
225 0
|
网络安全 网络架构 Python
如何写批量备份交换机配置的Python脚本?今日文章安排5个厂商的,牛叉!
如何写批量备份交换机配置的Python脚本?今日文章安排5个厂商的,牛叉!
307 0
如何写批量备份交换机配置的Python脚本?今日文章安排5个厂商的,牛叉!