[晴 2007/11/01 08:15 | by turbozv ]
发布一天多以来,用户已经donate了几套不同的皮肤了。

下个开发版本一定要加入更多的函数。

正式把rlToday, QuickClock列为竞争对手!

点击在新窗口中浏览此图片


2007.11.03
搞定了libpng和zlib,现在可以显示带alpha通道的PNG了cool
点击在新窗口中浏览此图片

更多的信息,请访问 FiT工作室官方网站: http://www.PDA01.com/
[晴 2007/10/21 03:54 | by turbozv ]
这个版本中修复了很多BUG。

今日插件做了很多处修改。

点击在新窗口中浏览此图片
[晴 2007/10/20 03:49 | by turbozv ]
点击在新窗口中浏览此图片
[不指定 2007/10/10 07:30 | by turbozv ]
还是一个栈变量的问题,请问以下赋值有什么不同?
引用
#define LEN 0xff

unsigned char a[LEN] = {0};
unsigned char b[LEN] = {};
unsigned char c[LEN] = {1};

{0}的方式是我们常用的初始化数组,结构的方法。

我第一次见到这个是从别人的代码里,于是之后我也没有多想就直接使用了,后来看了汇编,我才发现,原来{0}和{}是不同的。
编译器生成的代码也不同。

Release模式,关闭优化
引用
    unsigned char a[LEN] = {0};
004017E9  mov         byte ptr [a],0 -- 第一个元素单独赋值0
004017F0  push        0FEh -- 所以只剩下0xff - 1 = 0xfe个元素需要调用memset了
004017F5  push        0    
004017F7  lea         eax,[ebp-0FFh]
004017FD  push        eax  
004017FE  call        memset (401840h)
00401803  add         esp,0Ch
    unsigned char b[LEN] = {};
00401806  push        0FFh
0040180B  push        0    
0040180D  lea         ecx,[ b]
00401813  push        ecx  
00401814  call        memset (401840h)
00401819  add         esp,0Ch
    unsigned char c[LEN] = {1};
0040181C  mov         byte ptr [c],1
00401823  push        0FEh
00401828  push        0    
0040182A  lea         edx,[ebp-2FFh]
00401830  push        edx  
00401831  call        memset (401840h)
00401836  add         esp,0Ch

Release模式,完全优化
引用
    unsigned char a[LEN] = {0};
004017E6  push        0FEh -- 去掉第一个元素,只剩下0xff - 1 = 0xfe个元素需要调用memset了
004017EB  lea         eax,[esp+5]
004017EF  push        0    
004017F1  push        eax  
004017F2  mov         byte ptr [esp+0Ch],0 -- 第一个元素单独赋值0
004017F7  call        memset (401876h)
    unsigned char b[LEN] = {};
004017FC  push        0FFh
00401801  lea         ecx,[esp+210h]
00401808  push        0    
0040180A  push        ecx  
0040180B  call        memset (401876h)
    unsigned char c[LEN] = {1};
00401810  push        0FEh
00401815  lea         edx,[esp+11Dh]
0040181C  push        0    
0040181E  push        edx  
0040181F  mov         byte ptr [esp+124h],1
00401827  call        memset (401876h)

结论:
看到了吧,其实{}比{0}生成的代码更优化,所以下次记得要写{}了,不要加0~grin
其实不要说其他公司,M$里也很多{0}的代码,呵呵~~

补充:
发现Microsoft Embeded Visual C++ 3.0不支持 {},只能用{0}.....
分页: 30/68 第一页 上页 25 26 27 28 29 30 31 32 33 34 下页 最后页 [ 显示模式: 摘要 | 列表 ]