搜索
bottom↓
回复: 70

[古董贴][原创][忽悠]忽悠完ICCV6,我们接着忽悠ICCV7

[复制链接]

出0入296汤圆

发表于 2007-3-29 20:00:07 | 显示全部楼层 |阅读模式
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日试用期带来的假象”。



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

出0入0汤圆

发表于 2007-3-29 20:22:20 | 显示全部楼层
沙发哈

傻孩子又发表文章了

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

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

一会去试试哈.先谢谢了

不知道适用ICC7.几?

7.11也支持吗?

出0入296汤圆

 楼主| 发表于 2007-3-29 20:28:41 | 显示全部楼层
支持7.11,我用了一段时间了

出0入0汤圆

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

出0入10汤圆

发表于 2007-3-29 20:59:13 | 显示全部楼层
感谢傻孩子的无私奉献,但是如何实现如下的功能:

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

谢谢啦!

出0入0汤圆

发表于 2007-3-29 22:14:14 | 显示全部楼层
有这种事,太好了,玩ICC的又有的玩了,可惜早就玩CodeVisionAVR了。

出0入296汤圆

 楼主| 发表于 2007-3-29 22:57:50 | 显示全部楼层
要想打开全局优化,只有自己制作Makefile了……呵呵……其实,那个优化并不怎样,只能4K的HEX优化后只能节省大约50个字节左右……

出0入0汤圆

发表于 2007-3-30 02:12:21 | 显示全部楼层
呵呵虽然不用ICC,但还是感谢傻孩子老大的无私。

出0入0汤圆

发表于 2007-3-30 08:06:56 | 显示全部楼层
谢谢Gorgon Meducer 傻孩子,先存起来,有空再研究.

出0入0汤圆

发表于 2007-3-30 09:02:50 | 显示全部楼层
哈哈,谢谢Gorgon Meducer 傻孩子。虽然我用GCC,还是替用用ICC的朋友谢谢你。

出0入0汤圆

发表于 2007-3-30 12:48:50 | 显示全部楼层
赶快找个 7.11保护起来

出0入0汤圆

发表于 2007-3-30 14:51:16 | 显示全部楼层
TO:傻孩子

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

Global Optimaze能打开吗>?

我看BIN里没有makefile

他是通过imakew调用的吧

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

谢谢 

出0入0汤圆

发表于 2007-3-30 16:51:38 | 显示全部楼层
关注icc6.31的bug, 有官方消息吗,尤其是volatile的错误,我来看看反汇编

出0入0汤圆

发表于 2007-3-30 17:03:06 | 显示全部楼层
不用ICC,感谢LZ

出0入0汤圆

发表于 2007-3-30 17:04:25 | 显示全部楼层
顶一下.

出0入296汤圆

 楼主| 发表于 2007-3-30 20:25:40 | 显示全部楼层
6.31的BUG是icc\readme.avr文件中描述的。

出0入0汤圆

发表于 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

出0入0汤圆

发表于 2007-3-30 22:39:28 | 显示全部楼层
刚试了试,无法在"Compiler Options"中选择新的器件啊?

出0入0汤圆

发表于 2007-3-30 23:13:15 | 显示全部楼层
ICC V7较V6.31A除了修改了BUG,还有什么性能上的变化?哪位知道呢?



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

出0入0汤圆

发表于 2007-3-30 23:51:33 | 显示全部楼层
太好了,终于有ICCAVR7的声音了。

出0入296汤圆

 楼主| 发表于 2007-3-31 00:45:25 | 显示全部楼层
To17楼,这是必然的,因为,外壳还是ICCv6的,只能通过custom选项自己设定啦。呵呵,问题不大的。

出0入0汤圆

发表于 2007-3-31 03:43:49 | 显示全部楼层
IAR会有这些严重BUG 吗???



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

出0入0汤圆

发表于 2007-3-31 08:46:55 | 显示全部楼层
如果时间限制只是相对IDE而言的话,那自己制作makefile,用UE或其它编辑器不是一样可以永久使用?

出0入0汤圆

发表于 2007-3-31 09:01:39 | 显示全部楼层
支持一下

出0入0汤圆

发表于 2007-3-31 13:43:49 | 显示全部楼层
TO:傻孩子

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

Global Optimaze能打开吗>?

我看BIN里没有makefile

他是通过imakew调用的吧

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

谢谢 

出0入0汤圆

发表于 2007-3-31 14:23:03 | 显示全部楼层
好消息,感谢

出0入0汤圆

发表于 2007-3-31 14:42:49 | 显示全部楼层
朋友正在用icc,正好介绍给他,谢谢傻孩子。

出0入0汤圆

发表于 2007-3-31 19:26:37 | 显示全部楼层
试一下

出0入0汤圆

发表于 2007-3-31 22:30:19 | 显示全部楼层
其实7.10A和7.12A我早已破解,只是怕公布出来会引来麻烦!

出0入0汤圆

发表于 2007-3-31 22:43:43 | 显示全部楼层

出0入0汤圆

发表于 2007-3-31 22:47:46 | 显示全部楼层
未优化前

出0入296汤圆

 楼主| 发表于 2007-4-1 04:53:38 | 显示全部楼层
公布出来有什么不好么?……

出0入0汤圆

发表于 2007-4-1 07:40:16 | 显示全部楼层
是啊,公布出来吧。

出0入0汤圆

发表于 2007-4-1 11:00:05 | 显示全部楼层
有限公开吧

出0入0汤圆

发表于 2007-4-1 18:58:33 | 显示全部楼层
是哈

强烈要求公开

这样幸福大家人

出0入0汤圆

发表于 2007-4-1 20:23:26 | 显示全部楼层
不公开的人在这里炫耀,是我们这里的大忌,不如走远点

强烈的鄙视

出0入0汤圆

发表于 2007-4-1 21:46:02 | 显示全部楼层
ICCV6有些什么bug?相DDR,PORT这样的寄存器变量就是volatile全局指针,不过自加好象没有出错过。我用过OCR2++这样的操作

出0入0汤圆

发表于 2007-4-2 15:52:19 | 显示全部楼层
原因很简单:就是因为中国的盗版事业太发达了,严重伤害了别人的利益!本人是BCG和DFCG的成员,遵守国际惯例,实在抱歉!



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



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

出0入0汤圆

发表于 2007-4-2 18:59:04 | 显示全部楼层
看看BCG的全称-“China Beginner’s Cracking Group



AuToCTRL 真牛!

出0入0汤圆

发表于 2007-4-2 19:12:27 | 显示全部楼层
发布软件破解成果,有效地制止被盗版商人利用破解成果,进行盈利
-----此内容被xtwhf于2007-04-02,19:15:08编辑过

出0入0汤圆

发表于 2007-4-2 19:37:27 | 显示全部楼层
AuToCTRL 忽悠人。^_^"

出0入296汤圆

 楼主| 发表于 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编辑过

出0入0汤圆

发表于 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会更好。

出0入0汤圆

发表于 2007-4-3 11:58:50 | 显示全部楼层
关注中。

出0入296汤圆

 楼主| 发表于 2007-4-4 02:16:47 | 显示全部楼层
6.31A和ICC7.11对比评估报告 第二号



[ANSI-C严格程度]

     对于这样的函数

    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: [warning] in function 'Add_To_NULL_Buffer', argument 'cData' has no use.



    相当影响心情……

   


-----此内容被Gorgon Meducer于2007-04-04,02:18:51编辑过

出0入4汤圆

发表于 2007-4-4 10:31:43 | 显示全部楼层
还是GCC好,拿来就用。

出0入0汤圆

发表于 2007-4-7 11:56:48 | 显示全部楼层
顶一下.

出0入0汤圆

发表于 2007-4-14 09:13:26 | 显示全部楼层
顶一下,期待ICC7

出0入0汤圆

发表于 2007-4-14 22:41:04 | 显示全部楼层
再忽悠.....恐怕又要忽悠ICCV8了!!!!!!!!!!!!!!!!!

出0入0汤圆

发表于 2007-5-5 21:16:33 | 显示全部楼层
顶起来,继续忽悠,哈哈哈

出0入0汤圆

发表于 2007-5-6 08:45:27 | 显示全部楼层
盗版该用还要用,我就不信大家的机器里没有盗版的东西。中国如果都不用盗版还能发展到现在?能盗着用的还要盗着用,只是尽量不要盗用国人自己的东西罢了。

出0入296汤圆

 楼主| 发表于 2007-5-6 10:23:30 | 显示全部楼层
6.31A和ICC7.11对比评估报告 第一号



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

出0入0汤圆

发表于 2007-5-6 17:12:50 | 显示全部楼层
Gcc用惯了反而觉得Icc别扭

现在还不会运行呢

出0入0汤圆

发表于 2007-5-14 12:52:07 | 显示全部楼层
确实可以,但有注册机最好。T_T

出0入0汤圆

发表于 2007-5-14 17:11:31 | 显示全部楼层
谢谢傻孩子!

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

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

再次感谢!

出0入0汤圆

发表于 2007-5-15 01:10:17 | 显示全部楼层
icc好像是小日本的,那个作者好像还娶了个罗马尼亚的老婆

出0入0汤圆

发表于 2007-5-15 16:09:39 | 显示全部楼层
挺好用的,谢谢傻孩子

出0入296汤圆

 楼主| 发表于 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的操作都照旧,不需要任何修改。

出0入0汤圆

发表于 2007-5-16 11:57:16 | 显示全部楼层
请问楼主:ICC V6.31A有4K hex的限制吗?我用此版本写过几十K的代码。

出0入296汤圆

 楼主| 发表于 2007-5-17 09:21:09 | 显示全部楼层
ICC V6.31A没有4K限制,前提是你注册过了。

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

出0入0汤圆

发表于 2008-1-23 15:06:30 | 显示全部楼层
谢谢,找了两三天,现在终于可以用ATMAG168,并且可以读写EEPROM!

出0入0汤圆

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

出0入0汤圆

发表于 2008-1-23 16:07:32 | 显示全部楼层
ICC6.31多次遇到的問題
如:
char temp;
device_init();
如果不小心刪了;變成,
char temp
device_init();
並不報錯,
幾次回為此問題導至程序無功能.
不知這算不算一個bug

出0入0汤圆

发表于 2008-1-29 15:51:28 | 显示全部楼层
ICC好用啊,从来都不喜欢GCC。
我有个程序,用ICC编译过了,跑起来一点问题都没有,
然后我转成IAR,也可以。因为,我只要改机几个头文件就好了。
最后,转成GCC,连中断都进不去。

出0入0汤圆

发表于 2008-5-6 23:29:07 | 显示全部楼层
ICC 出7.16A了,好用的不得了~

出0入296汤圆

 楼主| 发表于 2008-5-6 23:34:20 | 显示全部楼层
ICC7.16A 增加了对 64位double的支持。可惜支持的有缺陷
当把double型数据赋值给float型数据时,有一定概率发生编译器错误……

出0入0汤圆

发表于 2008-6-13 09:26:59 | 显示全部楼层
虽然没用过icc,但avr studio+winavr+gcc 一直在用,个别版本有BUG,如Studio4.12SP1b462. 但确实很好用。

出0入0汤圆

发表于 2009-4-7 23:50:56 | 显示全部楼层
我一直都在用ICC6.31,但发现6.31在数组初始化时不同名的数组初始化数据相同时,程序运行时会将两个变量混在一起。这个问题一开始搞的我头都大,后来发现问题后就对赋值一样的数组重新赋值就解决问题了!

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

现在都打算放弃ICC了

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

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

出0入0汤圆

发表于 2009-4-7 23:53:02 | 显示全部楼层
【55楼】 weihua 梨花剑雨
积分:452
派别:
等级:------
来自:
icc好像是小日本的,那个作者好像还娶了个罗马尼亚的老婆  
__________________________
http://shop.rcsoft.cn  



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

出0入0汤圆

发表于 2009-4-8 12:48:45 | 显示全部楼层
呵呵,先谢谢了,我也试试呀

出0入0汤圆

发表于 2010-11-26 10:13:34 | 显示全部楼层
那个28楼出来炫耀的同学真让我无语。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-4 20:21

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表