中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: [原创]djgpp与ms compile比较 上一主题 | 下一主题
bobo98
初级用户





积分 43
发帖 20
注册 2007-12-25
状态 离线
『楼 主』:  [原创]djgpp与ms compile比较

本文仅在2 编译器产生的文件大小方面。

分别用这2 款编译器对同一C文件编译后,结果如下:

编译器                        djgpp                vs2005
文件大小(byte)                79926                53248
其中:
djgpp: gcc4.22, djdev203, bnu217
vs2005: SP1
环境:Win2003 cmd

测试C文件
#include <stdio.h>


int main(void)
{
    char a[] = "Hello, world!";
    char *week[] = { "sun", "mon", "tue",
                     "wed", "thu", "fri", "sat" };
    int i;
   
    printf("%s\n", a);
   
    for(i=0; i<7; i++)
    {
        printf("%s ", week[i]);
    }
    printf("\n");
    return 0;
}

编译指令:
  djgpp: gcc -Wall -O2 -o test6.exe test6.c
  Vs2005: cl -Wall -O2 test7.c

2008-1-7 22:37
查看资料  发短消息 网志   编辑帖子  回复  引用回复
bush
银牌会员




积分 2165
发帖 730
注册 2004-4-21
状态 离线
『第 2 楼』:  

想要說明什麽呢? 從生成文件大小決定編譯器優劣?
你貼得代碼少了一個[i]



2008-1-7 23:52
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bush
银牌会员




积分 2165
发帖 730
注册 2004-4-21
状态 离线
『第 3 楼』:  


不好意思,剛才在命令行模式下看帖,顯示不正常,代碼沒問題。

我手上有從VC6中提取的 CL編譯器 拿來編譯你的文件作比較:
CL test.c
文件大小: 28672 byte


2008-1-8 00:09
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bush
银牌会员




积分 2165
发帖 730
注册 2004-4-21
状态 离线
『第 4 楼』:  再來比較WACTOM


Open Watcom  Version 1.7

wcl test.c   (我用的是16位程序)
文件大小:8746 byte  


2008-1-8 00:15
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
bobo98
初级用户





积分 43
发帖 20
注册 2007-12-25
状态 离线
『第 5 楼』:  

由于djgpp是32位模式,所以没有贴上16位的

在tc 2.0下
test8.com   1760 bytes
test8.exe    2328 bytes

上传文件满了,传不上这2 个.

[ Last edited by bobo98 on 2008-1-8 at 09:49 AM ]

2008-1-8 09:40
查看资料  发短消息 网志   编辑帖子  回复  引用回复
bobo98
初级用户





积分 43
发帖 20
注册 2007-12-25
状态 离线
『第 6 楼』:  

好象大家对编辑器不是很关心哈.
例如,在DOS下:
  1. 内存空间
2. 存储空间
都可能是你要关心的问题.
      当然并不是讲GNU开发器不好,只是它要在多平台上使用,估计有些
并容性造成文件大点.
欢迎更多的人提出看法...

2008-1-16 17:19
查看资料  发短消息 网志   编辑帖子  回复  引用回复
zyl910
中级用户





积分 282
发帖 126
注册 2006-5-17
状态 离线
『第 7 楼』:  

vs2005编译出来的是哪种?
A.DOS下的exe程序
B.Windows下的控制台程序

我怀疑是B



人类存在的目的就是试图理解人类为何存在
2008-1-16 18:38
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复
bobo98
初级用户





积分 43
发帖 20
注册 2007-12-25
状态 离线
『第 8 楼』:  

确实是B.

2008-1-16 19:16
查看资料  发短消息 网志   编辑帖子  回复  引用回复
bobo98
初级用户





积分 43
发帖 20
注册 2007-12-25
状态 离线
『第 9 楼』:  

对了Djgpp也是B,如果加上了DIPM2个都能运行了.

2008-1-16 19:18
查看资料  发短消息 网志   编辑帖子  回复  引用回复
bush
银牌会员




积分 2165
发帖 730
注册 2004-4-21
状态 离线
『第 10 楼』:  

還有一些純C編譯器,據說在某些場合也比那些C/C++兼容的編譯器做得好
就是不知道有沒有人測試過


2008-1-18 00:55
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Wengier
系统支持

“新DOS时代”站长


积分 27734
发帖 10521
注册 2002-10-9
状态 离线
『第 11 楼』:  



  Quote:
Originally posted by bobo98 at 2008-1-16 07:18 PM:
对了Djgpp也是B,如果加上了DIPM2个都能运行了.

DJGPP不是B。32位DOS DPMI程序和WIN控制台程序是不一样的。



Wengier - 新DOS时代

欢迎大家来到我的“新DOS时代”网站,里面有各类DOS软件和资料,地址:
http://wendos.mycool.net/

E-Mail & MSN: wengierwu AT hotmail.com (最近比较忙,有事请联系DOSroot和雨露,谢谢!)

2008-1-18 09:12
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (29206679)  编辑帖子  回复  引用回复
bobo98
初级用户





积分 43
发帖 20
注册 2007-12-25
状态 离线
『第 12 楼』:  

不错,站长的加入为主题带更精彩的讨论。
我从理论上感觉,它们2者应该是一样的,但是从实际上就象
Wengier所说它们2者是不同的。

对GNU DPMI来说:通过int 2fh(1687h)找到入口进入,而且我
看到的这个DPMI V0.9指南中提到把32位程序当16位进行.进入
后得得到的段限仅64K,同real dos一样.

Windows NT下的控制台,把后台工作全做好,通过我的小程序测试
能达到32位的模式.程序附后.我的内存有1G,限制在1.5G,测试到
1.8G多点时,崩溃.那位有DPMI环境的,可以用它测试后,报告一下
结果.

// 测试程序
// 测试近似从1.1M开始
#include <stdio.h>
#include <stdlib.h>

void PrintMsg(char*, int);

int main(void)
{
    char *buf;
    int base = 1024, i = 1100;
   
    while(1)
    {
        buf = (char*)malloc(base * i);
        if(buf == 0)
        {
            printf("Memory crach!\n");
            return -1;
        }
        PrintMsg(buf, i);
        free(buf);
        i += 16;        // test memory crach by para
    }
   
    return 0;
}

void PrintMsg(char* buf, int i)
{
    sprintf(buf, "Test memory in %dK", i);
    printf("%s\n", buf);
}

2008-1-18 16:31
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: