中国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时代”站长


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

Originally posted by bobo98 at 2008-1-16 07:18 PM: 对了Djgpp也是B,如果加上了DIPM2个都能运行了.
DJGPP不是B。32位DOS DPMI程序和WIN控制台程序是不一样的。




Wengier - 新DOS时代 欢迎大家来到我的“新DOS时代”网站,里面有各类DOS软件和资料,地址: 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
查看资料  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: