TC2.0编译下,数组过大问题

[复制链接]
4066|21
 楼主| jdwang001 发表于 2012-6-8 19:20 | 显示全部楼层 |阅读模式
查了好多方法,都提示说TC2.0下不能大于64K,我又下载了TC3.0而编译时还是提示数组过大。我现在就是想用一个大的数组,难不成非要使用DJGPP?
各位谁用过这个?
我也只是想定义这个大数组,
double arr[865536];
在DOS下编程的伤不起啊。
tyw 发表于 2012-6-8 19:29 | 显示全部楼层
highgear 发表于 2012-6-8 22:54 | 显示全部楼层
DOS 下就别指望了, 这是硬件的限制导致编译器作出了限制。 要么用 vc, bc, 要么使用分段。
 楼主| jdwang001 发表于 2012-6-10 12:36 | 显示全部楼层
也考虑过不过VC和BC不支持interrupt关键字啊。
是在DOS下运行的程序,想使用串口接收中断。
我试下DJGPP看看怎么用。
mohanwei 发表于 2012-6-10 15:33 | 显示全部楼层
就串口那龟爬速度……如果只是为了用interrupt来处理串口,用VC,随便下载个基于对话框的串口助手程序,在上面改改用吧
 楼主| jdwang001 发表于 2012-6-10 16:29 | 显示全部楼层
我用的PC\104装的是DOS6.22,现在需要用DOS下程序。。。。。。
Periodic 发表于 2012-6-10 19:54 | 显示全部楼层
复古了
李冬发 发表于 2012-6-10 23:41 | 显示全部楼层
VC可以编写中断服务程序的。其实这个不是由VC来实现,是WINDOWS本身已经实现的。
李冬发 发表于 2012-6-10 23:42 | 显示全部楼层
windows的串口本身就是基于中断服务程序实现的,你在windows下的查询,是查串口缓冲的数据,不影响串口的响应。
 楼主| jdwang001 发表于 2012-6-11 10:14 | 显示全部楼层
9# 李冬发
我能把这句话理解成,在VC下可以编写DOS下的串口中断程序不?若可以的话,希望东发大哥提供点资料吧。。。。
李冬发 发表于 2012-6-11 11:57 | 显示全部楼层
不可以
李冬发 发表于 2012-6-11 12:03 | 显示全部楼层
倒是你可以TC写的代码运行在保护模式下,这时内存就不用限制在64k了,缺点是内存管理得自己来做。
也可以使用DPMI编程。
 楼主| jdwang001 发表于 2012-6-11 13:10 | 显示全部楼层
12# 李冬发
这个的确是不懂了,我查了查说是DJGPP没有64K的限制,现在打算用这个来进行编译,可是这个编译器的语法有点不一样,东发大哥用过没?能指点下不?我用的串口中断程序实在网上找的那个是用interrupt关键字的。现在就剩下将磁盘数据读入内存了。就是这个数组问题。
 楼主| jdwang001 发表于 2012-6-11 15:56 | 显示全部楼层
需要帮助啊。。。。。。
李冬发 发表于 2012-6-11 17:27 | 显示全部楼层
为什么不用win32/linux平台,而非要DOS平台。dos运行在保护模式,就是裸奔!代价高昂。
 楼主| jdwang001 发表于 2012-6-11 18:55 | 显示全部楼层
开始定方案的时候,也注意到了TC是16位的问题,现在才发现挺难解决的。
highgear 发表于 2012-6-11 22:22 | 显示全部楼层
还在纠结这个问题?

DOS使用了实地址模式, 索引寄存器是 16 bit, 所以数组访问一般不会超过 64 K, 除非编译器降低效率特别处理, 基本上没有编译器会这么干, 因为程序员总是有方法不使用大数组。 你可以使用farmalloc() 分配一个大堆, 然后使用 far 指针处理。 far 指针(segment:offset)可以访问任何内存地址。
  
另外, Borland C++ 支持interrupt.
 楼主| jdwang001 发表于 2012-6-12 09:12 | 显示全部楼层
17# highgear
是啊,可是使用far指针的话,也不熟悉, Borland c++支持interrupt 可是它一样不支持大数组啊。。。现在尝试使用DJGPP吧,希望能搞定。
McuPlayer 发表于 2012-6-12 10:54 | 显示全部楼层
即使是VC或者C++Builder,都不建议使用大数组
 楼主| jdwang001 发表于 2012-6-12 11:02 | 显示全部楼层
19# McuPlayer
没办法啊,现在想解决这个问题,可是在DJGPP中对中断进行改写时又遇见问题了,都不知道该怎么改写了。。。。。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

316

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部