[古董贴][原创][忽悠]忽悠完ICCV6,我们接着忽悠ICCV7
ICC好用不一定比得过GCC,但是,免费的ICC一定能得到和GCC一样的人气——特别是被各类GCC优化的小聪明弄得神魂颠倒的广大平下中农们。n年前,有人在Ouravr上大吼了一声,在Google上找到了ICC6.31A的Professional注册机,于是ICC6就被大家狠狠地忽悠了一把……
转眼间,ICCV7来到了我们的身边,貌似聪明了许多,掐着腰对我们大喊“忽悠,接着忽悠……”。果然,就像串通好了一般,一直到了7.11版本,仍然没有一个破解工具浮出水面。不过,一批先富起来的人,好心的把Standard版本的iccavride.exe作为破解Crack在网络上小范围的发放了一段时间,但毕竟是杯水车薪。
早就听说,ICCV6存在着几大缺陷:
1、volatile 声明的全局变量,在使用自加运算符时,会出错。
2、对Mega48/88/168的EEPROM支持不好——居然系统库函数编译有错!
3、COFF文件支持存在缺陷……
4、没有Global Optimaze等等
于是,本着将忽悠进行到底的原则,E文版编译原理为后盾,潜心研究了ICC编译器,发现,如果不在意4K HEX文件的限制,貌似采用修改时间的方法,能够很轻松的长期忽悠ICCV7。但这并不是解决办法。也许我们可以玩一把狸猫换太子。
首先,安装ICC6.31A,注册为Professional;
将icc\bin目录下的icc\bin\iccavride.exe拷贝出来,备用;
将ICCV7覆盖安装到原来ICCv6的目录中……
将ICCV6的iccavride.exe拷贝回icc\bin目录下,覆盖原文件
于是一个,换药不换汤的 ICCV7诞生了……Professinal还是那个Professional,不过心已经不是那个心了……
首先,成功解决4K HEX的限定,其次,解除了优化次数限制……成功的打开了ICCV7的编译优化。遗憾的是,无法打开ICCV7的Global Optimaze(可以通过在命令行中增加 -Wf-O8来实现)。
经过比对验证,的确是ICCv7哈,以往ICCv6的各种错误都一一被化解……
我已经使用20天以上了,确认破解成功,而非“20日试用期带来的假象”。
让我们把忽悠进行到底吧…… 沙发哈
傻孩子又发表文章了
我一直想用ICC7呢,不过一直没有注册码
也不知道为什么没有破解版出来
一会去试试哈.先谢谢了
不知道适用ICC7.几?
7.11也支持吗? 支持7.11,我用了一段时间了 我刚才下了最新的V7.12A版来试了一下,真的可以耶^O^,但不知道那个全局优化的命令行在哪里加呢?
-----此内容被steven于2007-03-29,20:52:32编辑过 感谢傻孩子的无私奉献,但是如何实现如下的功能:
无法打开ICCV7的Global Optimaze(可以通过在命令行中增加 -Wf-O8来实现)???
谢谢啦! 有这种事,太好了,玩ICC的又有的玩了,可惜早就玩CodeVisionAVR了。 要想打开全局优化,只有自己制作Makefile了……呵呵……其实,那个优化并不怎样,只能4K的HEX优化后只能节省大约50个字节左右…… 呵呵虽然不用ICC,但还是感谢傻孩子老大的无私。 谢谢Gorgon Meducer 傻孩子,先存起来,有空再研究. 哈哈,谢谢Gorgon Meducer 傻孩子。虽然我用GCC,还是替用用ICC的朋友谢谢你。 赶快找个 7.11保护起来 TO:傻孩子
想问一下你自己做没做makefile.
Global Optimaze能打开吗>?
我看BIN里没有makefile
他是通过imakew调用的吧
如果要做的话,请问一下应该怎么做?
谢谢 关注icc6.31的bug, 有官方消息吗,尤其是volatile的错误,我来看看反汇编 不用ICC,感谢LZ 顶一下. 6.31的BUG是icc\readme.avr文件中描述的。 知道问题,就可以避免,放心了.以下是原文,提醒还在用ICC的朋友注意就没问题了
********************************************************************
Make sure you subscribe to the icc-avr mailing list for program
update announcements. Refer to http://www.dragonsgate.net/mailman/listinfo
for details.
AVR Starter Kit users should read the file \icc\readme_avrkit.doc
Outstanding Bug List (we are working on resolving it):
- if you use the ++ pre increment operator on a volatile var in an
expression context, the wrong value is used, e.g.
volatile int i;
...
if (++i == ...
CHANGE LOGS
08/04/2004 - V6.31A
Library
- Changed printfs to use utoa/ultoa for %x/X,%u and %o
- FP Mul using the HW multiply instructions are incorrect under some
conditions
- EEPROMWrite functions were compiled incorrectly for M169,M48,M88, and
M168 刚试了试,无法在"Compiler Options"中选择新的器件啊? ICC V7较V6.31A除了修改了BUG,还有什么性能上的变化?哪位知道呢?
6.31一直用没什么大问题(那些问题我们刚好不用),有必要换V7么?
-----此内容被Oliver于2007-03-30,23:14:30编辑过 太好了,终于有ICCAVR7的声音了。 To17楼,这是必然的,因为,外壳还是ICCv6的,只能通过custom选项自己设定啦。呵呵,问题不大的。 IAR会有这些严重BUG 吗???
IAR 的完整版(非EV版、非破解版),在哪里有下哦? 如果时间限制只是相对IDE而言的话,那自己制作makefile,用UE或其它编辑器不是一样可以永久使用? 支持一下 TO:傻孩子
想问一下你自己做没做makefile.
Global Optimaze能打开吗>?
我看BIN里没有makefile
他是通过imakew调用的吧
如果要做的话,请问一下应该怎么做?
谢谢 好消息,感谢 朋友正在用icc,正好介绍给他,谢谢傻孩子。 试一下 其实7.10A和7.12A我早已破解,只是怕公布出来会引来麻烦!
http://cache.amobbs.com/bbs_upload782111/files_6/armok01148779.jpg http://cache.amobbs.com/bbs_upload782111/files_6/armok01148780.jpg 未优化前
http://cache.amobbs.com/bbs_upload782111/files_6/armok01148781.jpg 公布出来有什么不好么?…… 是啊,公布出来吧。 有限公开吧 是哈
强烈要求公开
这样幸福大家人 不公开的人在这里炫耀,是我们这里的大忌,不如走远点
强烈的鄙视 ICCV6有些什么bug?相DDR,PORT这样的寄存器变量就是volatile全局指针,不过自加好象没有出错过。我用过OCR2++这样的操作 原因很简单:就是因为中国的盗版事业太发达了,严重伤害了别人的利益!本人是BCG和DFCG的成员,遵守国际惯例,实在抱歉!
35楼的话严重了,本人确实没有想炫耀的意思。从7.07开始到目前的所有版本我都破解了,最开始发布过7.07的标准版,后来发现还是有人不遵守“规则”所以就没陆续更新了!相信不少人还用着7.07。
如果大家有耐心的话,可以稍等下,最近事情太多,等稍空时我整理个比较新的好用的版本给大家! 看看BCG的全称-“China Beginner’s Cracking Group
AuToCTRL 真牛! 发布软件破解成果,有效地制止被盗版商人利用破解成果,进行盈利
-----此内容被xtwhf于2007-04-02,19:15:08编辑过 AuToCTRL 忽悠人。^_^" 6.31A和ICC7.11对比评估报告 第一号
[外扩存储器]
同样一段代码,ATMega64 外扩32KSRAM,Compiler Option选项中选择了Extern 32K SRAM;使用动态内存分配,初始化代码如下:
//初始化外扩存储器
MCUCR = BIT(SRE);
XMCRA = 0x00;
XMCRB = BIT(XMBK)|(0x01<<XMM0);
……
# define EXTERN_SRAM_SIZE 32768u
# define GLOBAL_DATA_SIZE 4096u
# define DYNAMIC_ALLOCATED_MEMORY_SIZE(EXTERN_SRAM_SIZE - GLOBAL_DATA_SIZE)
_NewHeap(&_bss_end+1, &_bss_end + DYNAMIC_ALLOCATED_MEMORY_SIZE + 1);//初始化动态内存空间
症状:6.31A工作正常 7.11版本编译的代码运行时,上电复位情况下,系统要3-5秒才能正常工作(一直处于不停的复位状态),复位的频率似乎还不是固定的;但是,采用电平复位就不会出现该问题。请大家共同测试下。
-----此内容被Gorgon Meducer于2007-04-03,01:06:04编辑过 6.31的bug可能还不止这些,实际用过后印象中还有can128的中断向量表不太正确的问题。
至于Global Optimaze的问题可以手动修改工程的makefile,然后命令行调用make,用icc的ide话会在编译前重新生成makefile导致自己改的makefile被ide覆盖了。
至于暴力破解icc7估计不是难事,icc7的壳设置似乎一直没太大变化,就像AuToCTRL说的,考虑到版权和他人的劳动和利益。现在atmel都这么支持avrgcc了,没有理由不认为avrgcc会更好。 关注中。 6.31A和ICC7.11对比评估报告 第二号
对于这样的函数
BOOL Add_To_NULL_Buffer(ADT_QUEUE *pQueue,uint8 cData)
{
pQueue = pQueue;
cData = cData;
return FALSE;
}
6.31A即便打开 严格的ANSI-C格式检测,也不会报告任何警告。
7.11无论我们是否打开ANSI-C检测(连优化关闭了也不行),都会发出警报
!W H:\单片机\源程序\2007机器人_大赛\新主板测试\BUS_Config.c: in function 'Add_To_NULL_Buffer', argument 'cData' has no use.
相当影响心情……
-----此内容被Gorgon Meducer于2007-04-04,02:18:51编辑过 还是GCC好,拿来就用。 顶一下. 顶一下,期待ICC7 再忽悠.....恐怕又要忽悠ICCV8了!!!!!!!!!!!!!!!!! 顶起来,继续忽悠,哈哈哈 盗版该用还要用,我就不信大家的机器里没有盗版的东西。中国如果都不用盗版还能发展到现在?能盗着用的还要盗着用,只是尽量不要盗用国人自己的东西罢了。 6.31A和ICC7.11对比评估报告 第一号
最终测试结果:确认乃硬件焊接问题,至于为什么6.31A就比较幸运的运行,原因很简单,运气问题……偶然,偶然……7.11不存在外扩存储器的初始化问题。 Gcc用惯了反而觉得Icc别扭
现在还不会运行呢 确实可以,但有注册机最好。T_T 谢谢傻孩子!
我的iccavr6.31版本装了都出现问题:“遇到问题需关闭...............”
用傻孩子的办法,居然问题解决了,不用重装系统了,呵呵。
再次感谢! icc好像是小日本的,那个作者好像还娶了个罗马尼亚的老婆 挺好用的,谢谢傻孩子 目前确认7.13版存在EEPROM编译错误(针对M48/88/168系列)
解决方案如下:
去掉程序中
# include <eeprom.h>
将如下的代码粘贴进程序:
#define EEPROM_READ(addr, dst) EEPROMReadBytes(addr, &dst, sizeof (dst))
#define EEPROM_WRITE(addr, src) EEPROMWriteBytes(addr, &src, sizeof (src))
int EEPROMwrite( int location, unsigned char byte)
{
unsigned char oldSREG;
EEAR = location;
EEDR = byte;
oldSREG = SREG;
SREG &= ~0x80; // disable interrupt
EECR |= 0x04; // Set MASTER WRITE enable
EECR |= 0x02; // Set WRITE strobe
while (EECR & 0x02); // Wait until write is done
SREG = oldSREG;
return 0; // return Success.
// Could be expanded so that
// the routine checks that the address
// is within the range of the chip.
}
unsigned char EEPROMread( int location)
{
EEAR = location;
EECR |= 0x01; // Set READ strobe
return (EEDR); // Return byte
}
void EEPROMReadBytes(int addr, void *ptr, int size)
{
char *dst = ptr;
while (size--)
{
*dst = EEPROMread(addr);
addr++;
dst++;
}
}
void EEPROMWriteBytes(int addr, void *ptr, int size)
{
char *src = ptr;
while (size--)
{
EEPROMwrite(addr, *src);
addr++;
src++;
}
}
-----------------------------------------------
由此,其他牵涉到EEPROM的操作都照旧,不需要任何修改。 请问楼主:ICC V6.31A有4K hex的限制吗?我用此版本写过几十K的代码。 ICC V6.31A没有4K限制,前提是你注册过了。
ICCV7如果你没有注册,就会存在这个限制。 谢谢,找了两三天,现在终于可以用ATMAG168,并且可以读写EEPROM! 但是有一点不明白的是,ICC7.14已经没有对MAG48/88/168的读写EEPROMBUG了,用开始的方法安装后还是有这个BUG,只能按后面的方法重新做一个头文件.另外(可以通过在命令行中增加 -Wf-O8来实现)这句话还是不明白怎么操作,能否详细说明,谢谢! ICC6.31多次遇到的問題
如:
char temp;
device_init();
如果不小心刪了;變成,
char temp
device_init();
並不報錯,
幾次回為此問題導至程序無功能.
不知這算不算一個bug ICC好用啊,从来都不喜欢GCC。
我有个程序,用ICC编译过了,跑起来一点问题都没有,
然后我转成IAR,也可以。因为,我只要改机几个头文件就好了。
最后,转成GCC,连中断都进不去。 ICC 出7.16A了,好用的不得了~ ICC7.16A 增加了对 64位double的支持。可惜支持的有缺陷
当把double型数据赋值给float型数据时,有一定概率发生编译器错误…… 虽然没用过icc,但avr studio+winavr+gcc 一直在用,个别版本有BUG,如Studio4.12SP1b462. 但确实很好用。 我一直都在用ICC6.31,但发现6.31在数组初始化时不同名的数组初始化数据相同时,程序运行时会将两个变量混在一起。这个问题一开始搞的我头都大,后来发现问题后就对赋值一样的数组重新赋值就解决问题了!
还有 有些时候程序编译时会出现莫名其妙的错误,只要把提示出错的那一行注释了编译一次后在取消注释就好了!
现在都打算放弃ICC了
打算使用GCC(现在都还不知道杂用呢)
好像 CodeVisionAVR 的位操作很是方便啊!!! 【55楼】 weihua 梨花剑雨
积分:452
派别:
等级:------
来自:
icc好像是小日本的,那个作者好像还娶了个罗马尼亚的老婆
__________________________
http://shop.rcsoft.cn
很牛啊!!!既然这你也知道啊!!!! 呵呵,先谢谢了,我也试试呀 那个28楼出来炫耀的同学真让我无语。
页:
[1]