|
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
状态 离线
|
|
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 |
|
|
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 |
|