ja, das ist ne blöde Sache, PIC16 und C, da sind die PIC18 besser für C geeignet
Prinzipiell hast Du recht, d.h. die Architektur der PIC18 kommt C mehr entgegen (in Assembler sind sie aber auch "angenehmer").

Eine Lösung für das Problem von fritzle123 Problem habe ich im Moment auch nicht, da ich den CC5X nicht näher kenne. Es ist aber eigentlich eindeutig ein Problem des verwendeten Compilers, denn PICC von HT-Soft kann dafür Code erzeugen (warum auch nicht, ist ja schließlich in Assembler auch möglich)

Code:
*ptr1 = *ptr2
MOVF   ptr2, W
MOVWF  FSR	   ; FSR zeigt auf ptr2
MOVF   INDF, W  ; w enthält Inhalt von ptr2
MOVWF  0x70     ; Inhalt von ptr2 in 0x70 zwischenspeichern
MOVF   ptr1, W  
MOVWF  FSR      ; FSR zeigt auf ptr1
MOVF   0x70, W  ; W enthält den Inhalt von ptr2
MOVWF  INDF     ; Inhalt von ptr1 = Inhalt von ptr2
Von diesem Compiler gibt es auch eine freie Version, ist für den 16F877 aber auf 2k Words Code und 2 RAM-Bänke beschränkt.

http://www.htsoft.com/products/PICClite.php

Bernd