Gorgon_Meducer 发表于 2007-3-29 20:00:07

[古董贴][原创][忽悠]忽悠完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日试用期带来的假象”。



    让我们把忽悠进行到底吧……

xuepeng2000 发表于 2007-3-29 20:22:20

沙发哈

傻孩子又发表文章了

我一直想用ICC7呢,不过一直没有注册码

也不知道为什么没有破解版出来

一会去试试哈.先谢谢了

不知道适用ICC7.几?

7.11也支持吗?

Gorgon_Meducer 发表于 2007-3-29 20:28:41

支持7.11,我用了一段时间了

steven 发表于 2007-3-29 20:38:41

我刚才下了最新的V7.12A版来试了一下,真的可以耶^O^,但不知道那个全局优化的命令行在哪里加呢?
-----此内容被steven于2007-03-29,20:52:32编辑过

TonyCai 发表于 2007-3-29 20:59:13

感谢傻孩子的无私奉献,但是如何实现如下的功能:

无法打开ICCV7的Global Optimaze(可以通过在命令行中增加 -Wf-O8来实现)???

谢谢啦!

zjykx 发表于 2007-3-29 22:14:14

有这种事,太好了,玩ICC的又有的玩了,可惜早就玩CodeVisionAVR了。

Gorgon_Meducer 发表于 2007-3-29 22:57:50

要想打开全局优化,只有自己制作Makefile了……呵呵……其实,那个优化并不怎样,只能4K的HEX优化后只能节省大约50个字节左右……

JAMESKING 发表于 2007-3-30 02:12:21

呵呵虽然不用ICC,但还是感谢傻孩子老大的无私。

MYMCU 发表于 2007-3-30 08:06:56

谢谢Gorgon Meducer 傻孩子,先存起来,有空再研究.

benladn911 发表于 2007-3-30 09:02:50

哈哈,谢谢Gorgon Meducer 傻孩子。虽然我用GCC,还是替用用ICC的朋友谢谢你。

CN.Cn 发表于 2007-3-30 12:48:50

赶快找个 7.11保护起来

xuepeng2000 发表于 2007-3-30 14:51:16

TO:傻孩子

想问一下你自己做没做makefile.

Global Optimaze能打开吗>?

我看BIN里没有makefile

他是通过imakew调用的吧

如果要做的话,请问一下应该怎么做?

谢谢 

myjnj 发表于 2007-3-30 16:51:38

关注icc6.31的bug, 有官方消息吗,尤其是volatile的错误,我来看看反汇编

laoma 发表于 2007-3-30 17:03:06

不用ICC,感谢LZ

hchkfh 发表于 2007-3-30 17:04:25

顶一下.

Gorgon_Meducer 发表于 2007-3-30 20:25:40

6.31的BUG是icc\readme.avr文件中描述的。

myjnj 发表于 2007-3-30 20:36:31

知道问题,就可以避免,放心了.以下是原文,提醒还在用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

win2kddk 发表于 2007-3-30 22:39:28

刚试了试,无法在"Compiler Options"中选择新的器件啊?

Oliver 发表于 2007-3-30 23:13:15

ICC V7较V6.31A除了修改了BUG,还有什么性能上的变化?哪位知道呢?



6.31一直用没什么大问题(那些问题我们刚好不用),有必要换V7么?
-----此内容被Oliver于2007-03-30,23:14:30编辑过

AVR_AFA 发表于 2007-3-30 23:51:33

太好了,终于有ICCAVR7的声音了。

Gorgon_Meducer 发表于 2007-3-31 00:45:25

To17楼,这是必然的,因为,外壳还是ICCv6的,只能通过custom选项自己设定啦。呵呵,问题不大的。

dvhome 发表于 2007-3-31 03:43:49

IAR会有这些严重BUG 吗???



IAR 的完整版(非EV版、非破解版),在哪里有下哦?

yerdak 发表于 2007-3-31 08:46:55

如果时间限制只是相对IDE而言的话,那自己制作makefile,用UE或其它编辑器不是一样可以永久使用?

bluerain 发表于 2007-3-31 09:01:39

支持一下

xuepeng2000 发表于 2007-3-31 13:43:49

TO:傻孩子

想问一下你自己做没做makefile.

Global Optimaze能打开吗>?

我看BIN里没有makefile

他是通过imakew调用的吧

如果要做的话,请问一下应该怎么做?

谢谢 

C_test 发表于 2007-3-31 14:23:03

好消息,感谢

joson 发表于 2007-3-31 14:42:49

朋友正在用icc,正好介绍给他,谢谢傻孩子。

caobin52095 发表于 2007-3-31 19:26:37

试一下

AuToCTRL 发表于 2007-3-31 22:30:19

其实7.10A和7.12A我早已破解,只是怕公布出来会引来麻烦!

http://cache.amobbs.com/bbs_upload782111/files_6/armok01148779.jpg

AuToCTRL 发表于 2007-3-31 22:43:43

http://cache.amobbs.com/bbs_upload782111/files_6/armok01148780.jpg

AuToCTRL 发表于 2007-3-31 22:47:46

未优化前

http://cache.amobbs.com/bbs_upload782111/files_6/armok01148781.jpg

Gorgon_Meducer 发表于 2007-4-1 04:53:38

公布出来有什么不好么?……

win2kddk 发表于 2007-4-1 07:40:16

是啊,公布出来吧。

GandF 发表于 2007-4-1 11:00:05

有限公开吧

xuepeng2000 发表于 2007-4-1 18:58:33

是哈

强烈要求公开

这样幸福大家人

migzan 发表于 2007-4-1 20:23:26

不公开的人在这里炫耀,是我们这里的大忌,不如走远点

强烈的鄙视

luoyiming1984 发表于 2007-4-1 21:46:02

ICCV6有些什么bug?相DDR,PORT这样的寄存器变量就是volatile全局指针,不过自加好象没有出错过。我用过OCR2++这样的操作

AuToCTRL 发表于 2007-4-2 15:52:19

原因很简单:就是因为中国的盗版事业太发达了,严重伤害了别人的利益!本人是BCG和DFCG的成员,遵守国际惯例,实在抱歉!



35楼的话严重了,本人确实没有想炫耀的意思。从7.07开始到目前的所有版本我都破解了,最开始发布过7.07的标准版,后来发现还是有人不遵守“规则”所以就没陆续更新了!相信不少人还用着7.07。



如果大家有耐心的话,可以稍等下,最近事情太多,等稍空时我整理个比较新的好用的版本给大家!

xtwhf 发表于 2007-4-2 18:59:04

看看BCG的全称-“China Beginner’s Cracking Group



AuToCTRL 真牛!

xtwhf 发表于 2007-4-2 19:12:27

发布软件破解成果,有效地制止被盗版商人利用破解成果,进行盈利
-----此内容被xtwhf于2007-04-02,19:15:08编辑过

C_test 发表于 2007-4-2 19:37:27

AuToCTRL 忽悠人。^_^"

Gorgon_Meducer 发表于 2007-4-3 01:04:38

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编辑过

gingin 发表于 2007-4-3 10:50:19

6.31的bug可能还不止这些,实际用过后印象中还有can128的中断向量表不太正确的问题。

至于Global Optimaze的问题可以手动修改工程的makefile,然后命令行调用make,用icc的ide话会在编译前重新生成makefile导致自己改的makefile被ide覆盖了。

至于暴力破解icc7估计不是难事,icc7的壳设置似乎一直没太大变化,就像AuToCTRL说的,考虑到版权和他人的劳动和利益。现在atmel都这么支持avrgcc了,没有理由不认为avrgcc会更好。

haosheng 发表于 2007-4-3 11:58:50

关注中。

Gorgon_Meducer 发表于 2007-4-4 02:16:47

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编辑过

ztrx 发表于 2007-4-4 10:31:43

还是GCC好,拿来就用。

hchkfh 发表于 2007-4-7 11:56:48

顶一下.

haosheng 发表于 2007-4-14 09:13:26

顶一下,期待ICC7

xtwhf 发表于 2007-4-14 22:41:04

再忽悠.....恐怕又要忽悠ICCV8了!!!!!!!!!!!!!!!!!

haosheng 发表于 2007-5-5 21:16:33

顶起来,继续忽悠,哈哈哈

dxjk 发表于 2007-5-6 08:45:27

盗版该用还要用,我就不信大家的机器里没有盗版的东西。中国如果都不用盗版还能发展到现在?能盗着用的还要盗着用,只是尽量不要盗用国人自己的东西罢了。

Gorgon_Meducer 发表于 2007-5-6 10:23:30

6.31A和ICC7.11对比评估报告 第一号



最终测试结果:确认乃硬件焊接问题,至于为什么6.31A就比较幸运的运行,原因很简单,运气问题……偶然,偶然……7.11不存在外扩存储器的初始化问题。

sixfeet 发表于 2007-5-6 17:12:50

Gcc用惯了反而觉得Icc别扭

现在还不会运行呢

chenwansheng 发表于 2007-5-14 12:52:07

确实可以,但有注册机最好。T_T

benchi9506 发表于 2007-5-14 17:11:31

谢谢傻孩子!

我的iccavr6.31版本装了都出现问题:“遇到问题需关闭...............”

用傻孩子的办法,居然问题解决了,不用重装系统了,呵呵。

再次感谢!

weihua 发表于 2007-5-15 01:10:17

icc好像是小日本的,那个作者好像还娶了个罗马尼亚的老婆

haosheng 发表于 2007-5-15 16:09:39

挺好用的,谢谢傻孩子

Gorgon_Meducer 发表于 2007-5-16 03:01:23

目前确认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的操作都照旧,不需要任何修改。

cao_zhihong_0 发表于 2007-5-16 11:57:16

请问楼主:ICC V6.31A有4K hex的限制吗?我用此版本写过几十K的代码。

Gorgon_Meducer 发表于 2007-5-17 09:21:09

ICC V6.31A没有4K限制,前提是你注册过了。

ICCV7如果你没有注册,就会存在这个限制。

xiangzi880 发表于 2008-1-23 15:06:30

谢谢,找了两三天,现在终于可以用ATMAG168,并且可以读写EEPROM!

xiangzi880 发表于 2008-1-23 15:14:36

但是有一点不明白的是,ICC7.14已经没有对MAG48/88/168的读写EEPROMBUG了,用开始的方法安装后还是有这个BUG,只能按后面的方法重新做一个头文件.另外(可以通过在命令行中增加 -Wf-O8来实现)这句话还是不明白怎么操作,能否详细说明,谢谢!

haso2007 发表于 2008-1-23 16:07:32

ICC6.31多次遇到的問題
如:
char temp;
device_init();
如果不小心刪了;變成,
char temp
device_init();
並不報錯,
幾次回為此問題導至程序無功能.
不知這算不算一個bug

yinyan186 发表于 2008-1-29 15:51:28

ICC好用啊,从来都不喜欢GCC。
我有个程序,用ICC编译过了,跑起来一点问题都没有,
然后我转成IAR,也可以。因为,我只要改机几个头文件就好了。
最后,转成GCC,连中断都进不去。

SunnyTrip 发表于 2008-5-6 23:29:07

ICC 出7.16A了,好用的不得了~

Gorgon_Meducer 发表于 2008-5-6 23:34:20

ICC7.16A 增加了对 64位double的支持。可惜支持的有缺陷
当把double型数据赋值给float型数据时,有一定概率发生编译器错误……

lxx_sea_sky 发表于 2008-6-13 09:26:59

虽然没用过icc,但avr studio+winavr+gcc 一直在用,个别版本有BUG,如Studio4.12SP1b462. 但确实很好用。

fy024 发表于 2009-4-7 23:50:56

我一直都在用ICC6.31,但发现6.31在数组初始化时不同名的数组初始化数据相同时,程序运行时会将两个变量混在一起。这个问题一开始搞的我头都大,后来发现问题后就对赋值一样的数组重新赋值就解决问题了!

还有 有些时候程序编译时会出现莫名其妙的错误,只要把提示出错的那一行注释了编译一次后在取消注释就好了!

现在都打算放弃ICC了

打算使用GCC(现在都还不知道杂用呢)

好像 CodeVisionAVR 的位操作很是方便啊!!!

fy024 发表于 2009-4-7 23:53:02

【55楼】 weihua 梨花剑雨
积分:452
派别:
等级:------
来自:
icc好像是小日本的,那个作者好像还娶了个罗马尼亚的老婆
__________________________
http://shop.rcsoft.cn



很牛啊!!!既然这你也知道啊!!!!

cazhcs 发表于 2009-4-8 12:48:45

呵呵,先谢谢了,我也试试呀

zhaoxukiller 发表于 2010-11-26 10:13:34

那个28楼出来炫耀的同学真让我无语。
页: [1]
查看完整版本: [古董贴][原创][忽悠]忽悠完ICCV6,我们接着忽悠ICCV7