[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [avr-gcc-list] string initialization using "" and { }
From: |
Zoran Rilak |
Subject: |
Re: [avr-gcc-list] string initialization using "" and { } |
Date: |
Wed, 27 May 2009 11:09:33 -0400 |
> If you declare a string and then use it as an initializer for an array of
> characters, the compiler will arrange for the string to be stored somewhere
> and then copy it to the array to perform the initialization. Should you
> need the string "abd" elsewhere in your program, the same copy might be
> used.
This makes a lot of sense, only that I do not observe the string
actually being copied to RAM:
char test1[] = "abd";
if (test1[0] == 'a') DO_SOMETHING;
DO_SOMETHING doesn't happen. I see that the produced assembly
char test1[] = "abd";
lds r24, 0x0100
lds r25, 0x0101
lds r26, 0x0102
lds r27, 0x0103
std Y+15, r24 ; 0x0f
std Y+16, r25 ; 0x10
std Y+17, r26 ; 0x11
std Y+18, r27 ; 0x12
loads bytes from SRAM, which should be abc\0 for the string to get
initialized in data segment, but I'm getting 0xff at runtime.
Please advise.
Zoran