http://palmmicro.com/woody/blog/ar1688/20101123.php

 The Journey to SDCC 3.0.0

      Nov 23, 2010
      It took the SDCC team 19 months travelling from 2.9.0 to 3.0.0 release 
on Nov 1, seems that they had done many house keeping work during this time. 
The items in release note directly related with our AR1688 Z80 are:
      * changed z80 and gb targets object file extension to .rel
      * special sdcc keywords which are not preceded by a double underscore 
are deprecated in sdcc version 3.0.0 and higher. See section ANSI-Compliance 
in sdccman
      * asxxxx / aslink renamed to sdas / sdld and synchronized with ASXXXX 
V2.0
      Obviously those changes mean lots of changes in our source code and 
related makefiles. Partly because of I was busy with PA6488 work and moving 
my blog, partly because of I was lazy to fork a test version, I ignored the 
test phase of release candidate 1 & 2. But as soon as I started testing 
3.0.0, I realized that I had made a mistake.
      Most other Z80 users in the world are as lazy as me! So the Z80 port 
was not tested as good as the 8051 port. The first problem I met was inline 
asm not working any more, the SDCC mailing list soon replied it was a known 
bug already, and fixed in recent snapshot. Then I met another known problem, 
sometimes jp instruction was optimized into jr incorrectly, this time no 
ready fix yet, although somebody had already posted a workaround in the bug 
tracking system.
      With hundreds changes in my code, I do not hope to change back and 
wait. I started to try the workaround myself, but this need to recompile 
SDCC. As I had tried VC2008 to compile 2.9.0 and failed, I started to learn 
other ways to compile SDCC on my Windows Vista.
      At first I installed Cygwin, after several hours I got error messages 
like "gcc options -mno-cygwin not used any more". I realized that Cygwin 
compile was discarded the same way as MSVC. The only way is to use MinGW on 
Linux now.
      I downloaded VisualBox and installed it. It asked me for Linux install 
DVD when I tried to add a Linux visual machine. Then I downloaded DAEMON 
Tools Lite to simulate DVD drive and ubuntu-10.10-dvd-i386.iso as Linux 
install file. The installation process was smoother than I expected. After 
another several hours time I was able to compile and try the workaround 
myself. Finally I used a safer workaround, which is now working together 
with AR1688 software 0.49.007.
      The result is good, SDCC 3.0.0 generated 5% less code than 2.9.0, with 
Z80 usually it means 5% performance improve as well.
      SDCC 3.0.0 hates bad code. I added hundreds of (UCHAR) before const 
char like 'T', and adjusted many const string point declare. In rc4.c, a 
line originally as "x = x + something" can not be compiled until I change it 
to "x += something". The most fatal experience was with my own crt0.s, an 
empty call was made to a non used section, it works on 2.9.0 but 3.0.0 
compiled the call to an unexpected address and destroyed safe mode booting 
process. I lost 2 phones before I figured out the problem.
      With so many changes along with SDCC 3.0.0, we plan to release 0.50 
software in the near future. Software API 0.49.007 as 0.50 release candidate 
1 is available at the snapshot part now. Hope our customers are not so lazy 
as Z80 SDCC users like me. Due to lots of file names changes, I suggest to 
remove old API completely before extract the new API package.
      The new API package is much larger than before, mostly because MinGW 
compiled sdcc.exe 3.0.0 is now 2.3M bytes, while VC6 compiled sdcc.exe 2.9.0 
only 0.8M bytes. And other SDCC related tools in bin directory are also much 
larger than before.
      The 8051 example code to work with AR168M in mcs51 directory is also 
updated and now compiled with SDCC 3.0.0.


Woody

http://palmmicro.com/woody/


------------------------------------------------------------------------------
Increase Visibility of Your 3D Game App & Earn a Chance To Win $500!
Tap into the largest installed PC base & get more eyes on your game by
optimizing for Intel(R) Graphics Technology. Get started today with the
Intel(R) Software Partner Program. Five $500 cash prizes are up for grabs.
http://p.sf.net/sfu/intelisp-dev2dev
_______________________________________________
Sdcc-user mailing list
Sdcc-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sdcc-user

Reply via email to