[elektro] PIC C sztring

Palasik Sandor palasik at mail.datanet.hu
Fri Feb 24 18:24:24 CET 2012


>> A char[] és a char * nem ugyanaz.
>
> De.

De mégsem.

Vegyük a következő egyszerű programot:

extern char *string;
extern char array[];

char *sp;
char *ap;

void x()
{
        sp = string;
        ap = array;
}

És nézzük meg a belőle keletkező intel kódot:

; 9    :        sp = string;
  00003 a1 00 00 00 00   mov     eax, DWORD PTR _string
  00008 a3 00 00 00 00   mov     DWORD PTR _sp, eax
; 10   :        ap = array;
  0000d c7 05 00 00 00
        00 00 00 00 00   mov     DWORD PTR _ap, OFFSET FLAT:_array

Vagy ugyanez PIC-re:

                         ;x.c: 9: sp = string;
                                global  _sp
                                global  _string
03F9  0800                      movf    (((_string))),w
03FA  00A1                      movwf   (((_sp)))
                         ;x.c: 10: ap = array;
                                global  _ap
                                global  _array
03FB  3000                      movlw   ((_array))
03FC  00A0                      movwf   (((_ap)))

Marhára nem mindegy, hogy egy konstanst kell átmásolni, vagy pedig egy 
memóriacímről ki kell olvasni egy pointert.

Palasik Sándor



More information about the Elektro mailing list