After about a year of development and 3 release candidates, the SDCC team has released the new 3.1.0 version of this great multi platform cross compiler for MCUs. This version supports: 8051, DS390, Z80, HC08, and PIC MCUs.
Besides the numerous bug fixes here is a list of the important changes since the release 3.0.0 (list taken from SDCC website):
- include/pic, non-free/include/pic, lib/pic, non-free/lib/pic renamed to */pic14
- implemented --fomit-frame-pointer for mcs51
- support for use of sdcc in z88dk (--reserve-regs-iy and --no-optsdcc-in-asm options; smallc calling convention)
- new register allocator in the z80 and gbz80 ports (optimal when using --opt-code-size and a sufficiently high value for --max-allocs-per-node for the z80 port)
- C99 designated initializers
- added strxfrm() and strcoll() functions; strerror() is the only string handling function still missing
- added support for pic18f2xk22/pic18f4xk22 family (requires gputils > 0.14.0 and --enable-new-pics configure flag)
- added support for enhanced core pic14 devices (requires gputils > 0.14.0 and --enable-new-pics configure flag)
- setjmp() / longjmp() for the z80 port
- _Bool / bool for the hc08, pic16 and pic14 ports
- sdcpp synchronized with GNU cpp 4.6.1
- z180 port
- very basic (no integer constants, multiplication, division, shifts or use as return value) support for data types long long, unsigned long long, int_fast64_t, int_least64_t, int64_t, uint_fast64_t, uint_least64_t, uint64_t in the z80, z180, r2k and gbz80 ports
- r2k port for the Rabbit 2000 and Rabbit 3000