I use cc65 (
http://www.cc65.org/). But, I've never used the C compiler (I don't know how to, honestly heheh), only the assembler and linker. I like being able to use the segments and linker config, being able to reserve bytes of RAM/ROM right next to the code that uses it, stuff like that.
Like Memblers, I also use the CC65 Assembler. I really like the relocatable code support and memory segment support of it so I can write modules and not have to worry about addressing until "Link - Time"
It is nice that cc65 supports so many targets (15 or 16), including Apple II, Comadore, Atari, Amiga, NES, and others. I am in the process of modifying one of the existing traget defineitions to meet my specific needs.
It is open source and runs under Linux, Windows, other uincies and Mac OS X.
I had some difficulites getting cc65 up under Mac OS X, but it was mostly my misunderstandings and inexperience with Unix applicaitons.
CC65 supports 6502, 65C02 and 65816 and I am Looking forward to being able to do projects in both assembler and C.
Later,
Andy