程序环境的详讲

简介: 在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月前
码栈运行程序报错
摘要: 在执行Taobao.CodeStore模块的代码时,遇到一个进程启动问题。具体发生在`Process.StartWithCreateProcess`方法内,随后调用了`Process.Start`,再经由`ProcessExt.StartProcess`和`NewAppDevelopControl.CompileScript`,最终触发点在UI中间控件`RunControl`的简单按钮点击事件`simpleButton_Click`。问题表现为无法正常启动进程。需查找并修复导致进程启动失败的原因。
22 0
|
1月前
|
敏捷开发 数据可视化 物联网
云效产品使用常见问题之用ARM架构的机器意义不知道如何解决
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
10月前
|
应用服务中间件 Linux nginx
Linux服务器之间迁移数据的窍门
Linux之间复制数据其实很简单,只需运行rsync命令即可
184 0
|
小程序 前端开发 IDE
智能排班系统 【web前端/小程序结构介绍+开发环境介绍+项目启动】
智能排班系统 【web前端/小程序结构介绍+开发环境介绍+项目启动】
121 1
|
前端开发 Java API
如何使用线上环境进行本地代码调试
如何使用线上环境进行本地代码调试
435 0
|
存储 Linux C语言
嵌入式Linux C(八)——函数(详)
嵌入式Linux C(八)——函数(详)
165 0
嵌入式Linux C(八)——函数(详)
|
Oracle Java 关系型数据库
怎样配置Java开发环境?步骤详解
怎样配置Java开发环境?步骤详解
怎样配置Java开发环境?步骤详解
|
安全
程序人生 - 免赔额 1 万是什么意思?
程序人生 - 免赔额 1 万是什么意思?
148 0
|
Ubuntu 测试技术 KVM
|
缓存 网络协议 Linux
如何用九条命令在一分钟内检查Linux服务器性能?
一、uptime命令 这个命令可以快速查看机器的负载情况。在Linux系统中,这些数据表示等待CPU资源的进程和阻塞在不可中断IO进程(进程状态为D)的数量。这些数据可以让我们对系统资源使用有一个宏观的了解。
1036 0