just like the title.
I write C code like this:
    unsigned char a[4] = {0x12, 0x13, 0x14, 0x15};

    int main() {
        PORTA = a[2];
        return 0;   
the generated asmbler file is:
ID_a_0    idata
    db    0x12
    db    0x13
    db    0x14
    db    0x15

STARTUP    code 0x0000
    pagesel __sdcc_gsinit_startup
    goto    __sdcc_gsinit_startup

code_a    code

    BANKSEL    _a
    MOVF    (_a + 2),W
;    .line    1806; "a.c"    return 0;   
    MOVLW    0x00
    MOVWF    STK00
    MOVLW    0x00
; exit point of _main

in the manual of gputils for the directive IDATA have this "Data memory is alllocated and the initialization data is placed in ROM,
    The user must provide the code to load the data into memory"
so , just like the title can sdcc generate code which can load value from ROM(placed for idata directive) to RAM in startup?

if have Where is the source code doing this LOAD?
if not ,How can i do this?

Another, in SDCC PIC14 the *pic16f887.lib* doing what?
and how it come from? how can i compile to get it by myself?
What does it contain?

Thanks, guys..

live long and prosper..