通过搭建一个精简的C语言开发环境了解一个C程序的执行过程
一、如何搭建一个精简的C语言开发环境
准备:下载TC2.0,并解压,比如说“d:\tc2.0\tc”目录
1、在C盘建立一个目录minic
c:\ md minic
2、从解压的目录中将以下文件拷贝到c:\minic中
其中TC.EXE是在d:\tc2.0\tc目录下,而COS.OBJ、EMU.LIB、MATHS.LIB、GRAPHICS.LIB、CS.LIB是在D:\tc2.0\tc\lib目录中的。
3、软件配置
选择菜单项“Options”中的“Directories”选项,对TC的工作路径进行设置,将所有的路径都设置为“c:\minic”。然后用“Save options”选项保存设置。
生成的配置文件
二、从中我们能学到什么
尝试去搭建一个最简的C语言开发环境,并不是说就让我们去用这个环境(我不建议)。毕竟功能齐备的集成开发环境能让我们的学习更有效率。但是,做这样的工作的意义还是有的,我认为有以下两点。
(1)认识到C语言开发环境的必备部分
(2)尝试了解我们应用程序的构成和执行过程(从库文件来看)
(3)了解C语言开发环境的输入输出目录(从“步骤3、软件配置”中来看)
对于意义(1),从步骤2中很容易明白。对于意义(3),它让我们知道c程序的头文件目录、库文件目录以及工程文件输出目录都是可以设置的。但是,这在VC6.0这样现代化的集成开发环境中却不曾发现。
意义(2)是做这个工作最重要的部分,到底我们的C程序是如何和库文件(.obj、.lib)结合生成可执行程序呢?又是如何执行程序呢?
1、程序连接过程
首先,编译器将我们写的C程序编译成.obj文件。然后,连接器将这个.obj文件和系统库文件(.obj)连接到一起生成一个可执行程序。不管是连接哪一个程序,COS.OBJ、EMU.LIB、MATHS.LIB、GRAPHICS.LIB、CS.LIB这些库是必须的。
2、程序的执行过程
①c0s.obj里的程序先运行,进行相关的初始化。如申请资源,设置ds,ss等相关寄存器
②c0s.obj里的程序调用main函数,从此用户程序开始运行
③用户程序运行结束从main程序返回到c0s.obj的程序中
④c0s.obj的程序接着运行,进行相关的资源释放,环境恢复的工作
⑤c0s.obj的程序调用DOS的int 21h例程的4ch号中断功能,程序返回
附:
c0s调用main函数的地址: 011ah
main函数的连接地址: 01fah
《汇编语言》322页 “研究实验4 不用main函数编程”
通过搭建一个精简的C语言开发环境了解一个C程序的执行过程的更多相关文章
- 研究实验1_搭建一个精简的C语言开发环境(包含部分经典的前言)
综合研究: 在这部分内容中,将启示我们如何进行独立研究和深度思考(一定要注意这一点,相应的调整自己的学习思想).同时使我们: (1)认识到汇编语言对于深入理解其他领域知识的 ...
- R 语言开发环境搭建
R 语言在统计计算和画图方面有着显著的优势,因此在大数据领域也有其一席之地. 本文将演示怎样搭建R 语言开发环境. 搭建R 语言开发环境,主要有两个步骤: - 安装 R 到操作系统 - 安装支持 R ...
- 【Apache Pulsar】Apache Pulsar单机环境及Go语言开发环境搭建
0x01 简介 Apache Pulsar是一个开源的分布式发布-订阅消息系统,与Kafka类似,但比后者更加强大.Pulsar最初由Yahoo开发并维护,目前已经成为Apache软件组织的一个孵化子 ...
- 从零开始搭建Go语言开发环境
一步一步,从零搭建Go语言开发环境. 安装Go语言及搭建Go语言开发环境 下载 下载地址 Go官网下载地址:https://golang.org/dl/ Go官方镜像站(推荐):https://gol ...
- AbelSu教你搭建go语言开发环境
go语言官网:https://golang.org/ windows:官网下载go1.6.windows-amd64.msi安装文件,安装位置选择默认C:\Go\安装结束后配置环境变量Path: C: ...
- SublimeText3搭建go语言开发环境(windows)
SublimeText3搭建go语言开发环境(windows) 下载并解压: Sublime Text Build 3021.zip注册: 尽量不要去破解 安装Package C ...
- 「C语言」在Windows平台搭建C语言开发环境的多种方式
新接触C语言,如何在Windows下进行C语言开发环境的搭建值得思考并整理. 以下多种开发方式择一即可(DEV C++无须环境准备). 注:本文知识来源于 Windows 平台搭建C语言集成开发环境 ...
- 安装Go语言及搭建Go语言开发环境
一步一步,从零搭建Go语言开发环境. 安装Go语言及搭建Go语言开发环境 下载 下载地址 Go官网下载地址:https://golang.org/dl/ Go官方镜像站(推荐):https://gol ...
- Win7下搭建Go语言开发环境
Win7下搭建Go语言开发环境 1 下载适合window版本的Go安装包,下载地址http://code.google.com/p/go/downloads/list 2 下载适合window本本的L ...
随机推荐
- 转 jquery 学习笔记
jQ通过选择器选择元素,选择器的语法和css类似$(css选择器语法) 参数可以是id.class.tag等等通过如上选择就可以获得一个元素 jQuery名字冲突 解决方法: var jq=jQuer ...
- bzoj1827 [Usaco2010 Mar]gather 奶牛大集会
不就是移一下树根,回溯一下吗? 诶?黄学长为什么可以直接找? 诶?这不是重心吗? YY了一下证明 很简单 由于重心max{sz[v]} <= sz[u] / 2的性质,可以证明每一步远离重心的移 ...
- eclipse编辑器,怎么创建PHP和JAVA的工程项目?
eclipse编辑器,怎么创建PHP和JAVA的工程项目.强大的eclipse,编写php或者java由你选择!!! 我为什么这么说? 我是新手,写下这篇文章,可能对新手会有一点点的帮助而已,然后为了 ...
- poj2406--Power Strings(KMP求最小循环节)
Power Strings Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 33178 Accepted: 13792 D ...
- eclipse-SDK-3.7-win32;eclipse-java-indigo-win32;eclipse-jee-indigo-win32 区别(ZZ)
eclipse-SDK-3.7-win32:eclipse-java-indigo-win32:eclipse-jee-indigo-win32 三个都是用于win32,即windows系统的32位机 ...
- springmvc配置文件 spring-servlet
<?xml version="1.0" encoding="UTF-8"?><!-- Bean头部 --><beans xmlns ...
- 10.3 noip模拟试题
希望[题目描述]网页浏览器者有后退与前进按钮,一种实现这两个功能的方式是用两个栈,“前进栈”.“后退栈”.这里你需要实现以下几个功能:BACK: 如果“后退栈”为空则忽略此命令. 否则将当前两面压入“ ...
- 实现Android K的伪沉浸式
在Android 5.0之后引入了MD风格,从而状态栏沉浸也成为了一种设计习惯.而停留在之Android L之前的Android系统则不能直接实现沉浸式,这里就介绍一下如何实现Android K系列的 ...
- Const和ReadOnly
总结一下const和readonly有这么几条区别: const和readonly的值一旦初始化则都不再可以改写: const只能在声明时初始化:readonly既可以在声明时初始化也可以在构造器中初 ...
- What is SaaS?
SaaS, or Software as a Service, describes any cloud service where consumers are able to access softw ...