网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > VC++ > 正文
深入认识 Turbo C 编译器
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/10/15
下载{$ArticleTitle}原创论文样式
   EGAVGA.BGI 是EGAVGA的bgi驱动

FONT目录中:存放了BGI所使用到的各种字体文件

INCLUDE目录中:是Turbo C的库函数的所有的头文件,当要使用某个库函数时可以在这个目录下搜索,找到其所在文件和原型,这里不在详细叙述。

重点讲一下Lib目录:
     init.obj文件是C语言的启动代码,它负责建立C程序运行的堆栈、初始化内存、调用C入口函数等。这部分代码是使用汇编书写的,其源代码可以在TC(官方版)里找到,名称为Init.ASM。
     c0t.obj、c0s.obj、c0m.obj、c0c.obj、c0l.obj和c0h.obj文件,都是c code的入口函数实现,入口函数将会读取环境变量,并调用c语言中的main函数,将命令行参数传入main函数中,之后的控制权就交给了main函数,也就是我们常说的C的主函数main。由于Turbo C中有不
同的内存模式,因此以上6个文件分别对应TC中6种不同的内存模式。
     cc.lib、ch.lib、cl.lib、cm.lib、cs.lib五个文件都是TC提供的ANSI C标准库的库文件,分别对用不同的内存模式:

     cc compact模式
     ch huge模式
     cl large模式
     cm medium模式
     cs small模式

由于不同模式参数的入栈方式、函数的调用方式等等都各不一样,所以代码也不一样,因此需要分别提供各个模式的库文件。

     再讲一下Turbo C中的内存模式。内存模式的出现不是由编译器决定的,而是由处理器的寻址方式决定的,在8086处理器中为了在16位寄存器的基础上寻址20位的地址,引入了段寄存器和分段寻址的方式。在编译器这一级,利用这种段式的寻址方式,可以实现多种不同的存储分配方法,因此就产生了所谓的不同的内存模式。
     1. tiny模式:    程序和数据在一个64K字节的段内
     2. small模式:   独立的代码段(64KB)和独立的数据段(64KB)
     3. medium模式: 单个数据段(64KB)和多个代码段(1MB)
     4. compack模式:单个代码段(64KB)和多个数据段(1MB)
     5. large模式:   多个代码段(1MB)和多个数据段(1MB),数据指针不能跨越段边界,否则将回绕
     6. huge模式:    多个代码段(1MB)和多个数据段(1MB),数据指针可以跨越段边界,不会回绕

     在TC中内存模式与far、near、huge等关键字又有着密切的关系。在tiny、small模式下,所有的函数定义、全局变量定义和指针变量的定义,如果没有显示的加上far、near、huge等关键字,都默认为使用了near关键字;在medium模式下,函数定义默认使用了far关键字,变量定义默认使用了near关键字;在compact模式下函数定义模式使用了near关键字,变量定义默认使用了far关键字;large模式下函数定义和变量定义模认使用了far关键字;huge模式下函数定义模认使用了far关键字,变量定义默认使用了huge关键字。

     near、far、huge关键字的真正含义是什么?这三个关键字只能用于修改函数、全局变量和指针变量,对于非指针类型的局部变量,这些关键字没有实际意义。这些关键字用于修饰函数时,huge的含义与far相同,用于指明该函数的调用方式为far调用方式,即调用时需要一个段值和一个段偏移组成的32bits调用地址,使用far call进行跳转,跳转前先压栈保存当前CS:IP。near修饰函数时,用于指明该函数的调用方式为near调用方式,调用时只需要一个16bits的近地址,即当前CS的段内偏移。

 &

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号