![]() |
中国DOS联盟-- 联合DOS 推动DOS 发展DOS --联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum |
| 游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟 |
|
中国DOS联盟论坛 现在时间是 2026-10-31 15:54 |
共 47,815 主题排行 / 349,930 发帖 / 今日 0 篇 / 48,290 会员排行 |
| DOS开发编程 & 发展交流 (开发室) » [原创]djgpp与ms compile比较 |
| 可打印版本 1,500 / 11 |
| 第1楼 bobo98 | 发表于 2008-01-07 22:37 |
| 初级用户 发帖 20 积分 43 | |
|
[原创]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 |
|
| 第2楼 bush | 发表于 2008-01-07 23:52 |
| 银牌会员 发帖 730 积分 2,165 | |
|
想要說明什麽呢? 從生成文件大小決定編譯器優劣?
你貼得代碼少了一個[i] |
|
| 第3楼 bush | 发表于 2008-01-08 00:09 |
| 银牌会员 发帖 730 积分 2,165 | |
|
不好意思,剛才在命令行模式下看帖,顯示不正常,代碼沒問題。 我手上有從VC6中提取的 CL編譯器 拿來編譯你的文件作比較: CL test.c 文件大小: 28672 byte |
|
| 第4楼 bush | 发表于 2008-01-08 00:15 |
| 银牌会员 发帖 730 积分 2,165 | |
|
再來比較WACTOM Open Watcom Version 1.7 wcl test.c (我用的是16位程序) 文件大小:8746 byte |
|
| 第5楼 bobo98 | 发表于 2008-01-08 09:40 |
| 初级用户 发帖 20 积分 43 | |
|
由于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 ] |
|
| 第6楼 bobo98 | 发表于 2008-01-16 17:19 |
| 初级用户 发帖 20 积分 43 | |
|
好象大家对编辑器不是很关心哈.
例如,在DOS下: 1. 内存空间 2. 存储空间 都可能是你要关心的问题. 当然并不是讲GNU开发器不好,只是它要在多平台上使用,估计有些 并容性造成文件大点. 欢迎更多的人提出看法... |
|
| 第7楼 zyl910 | 发表于 2008-01-16 18:38 |
| 中级用户 发帖 126 积分 282 | |
|
vs2005编译出来的是哪种?
A.DOS下的exe程序 B.Windows下的控制台程序 我怀疑是B |
|
| 第8楼 bobo98 | 发表于 2008-01-16 19:16 |
| 初级用户 发帖 20 积分 43 | |
|
确实是B.
|
|
| 第9楼 bobo98 | 发表于 2008-01-16 19:18 |
| 初级用户 发帖 20 积分 43 | |
|
对了Djgpp也是B,如果加上了DIPM2个都能运行了.
|
|
| 第10楼 bush | 发表于 2008-01-18 00:55 |
| 银牌会员 发帖 730 积分 2,165 | |
|
還有一些純C編譯器,據說在某些場合也比那些C/C++兼容的編譯器做得好
就是不知道有沒有人測試過 |
|
| 第11楼 Wengier | 发表于 2008-01-18 09:12 |
| 系统支持 发帖 10,521 积分 27,736 | |
Originally posted by bobo98 at 2008-1-16 07:18 PM: DJGPP不是B。32位DOS DPMI程序和WIN控制台程序是不一样的。 |
|
| 第12楼 bobo98 | 发表于 2008-01-18 16:31 |
| 初级用户 发帖 20 积分 43 | |
|
不错,站长的加入为主题带更精彩的讨论。
我从理论上感觉,它们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); } |
|
|
[ 联系联盟系统管理团队 -
中国DOS联盟 -
标准版 ] Sponsored by ifanr Inc | © 2001–2023 |