中国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比较 使用 LLM 解释/回答一下

本文仅在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 楼』:   使用 LLM 解释/回答一下

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



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




积分 2165
发帖 730
注册 2004-4-21
状态 离线
『第 3 楼』:   使用 LLM 解释/回答一下


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

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


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




积分 2165
发帖 730
注册 2004-4-21
状态 离线
『第 4 楼』:  再來比較WACTOM 使用 LLM 解释/回答一下


Open Watcom Version 1.7

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


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





积分 43
发帖 20
注册 2007-12-25
状态 离线
『第 5 楼』:   使用 LLM 解释/回答一下

由于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 楼』:   使用 LLM 解释/回答一下

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


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





积分 282
发帖 126
注册 2006-5-17
状态 离线
『第 7 楼』:   使用 LLM 解释/回答一下

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

我怀疑是B




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





积分 43
发帖 20
注册 2007-12-25
状态 离线
『第 8 楼』:   使用 LLM 解释/回答一下

确实是B.


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





积分 43
发帖 20
注册 2007-12-25
状态 离线
『第 9 楼』:   使用 LLM 解释/回答一下

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


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




积分 2165
发帖 730
注册 2004-4-21
状态 离线
『第 10 楼』:   使用 LLM 解释/回答一下

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


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

“新DOS时代”站长


积分 27736
发帖 10521
注册 2002-10-9
状态 离线
『第 11 楼』:   使用 LLM 解释/回答一下

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 楼』:   使用 LLM 解释/回答一下

不错,站长的加入为主题带更精彩的讨论。
我从理论上感觉,它们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
查看资料  发短消息  网志   编辑帖子  回复  引用回复

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


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



论坛跳转: