Цитата
У вас скорее всего работает оптимизатор, и выкидывает нафиг вашу переменную.
Да, вы правы. Усложнил код - параметр RO-data стал меняться на 500 байт.
Код
#define AR_SIZE 500
const char ar[AR_SIZE]={1};
char ar2[AR_SIZE];
void main()
{
int i;
for(i=0;i<sizeof(ar2);i++)
if(i&1)
ar2[i]=ar[i];
}
Цитата
Кроме того, для приведенного фрагмента кода слишком много, наверняка что-то еще компилируется. Сделайте ваши эксперименты в отдельном файле, порулите размером массива, чтобы понять, куда он у вас попадает.
Ага, при создании проекта средой добавлен достаточно большой файл startap.s. Если его не добавить, то "голый проект" с одним лишь моим файлом не компилируется.
Цитата
Если не поможет, попробуйте volatile const char ar[AR_SIZE]; - это точно должно сработать.
Вот объявление массива как const volatile как раз оставляет RO-data= 0. Зато на 500 увеличивается RW-data.
Сообщение отредактировал Dreamer - Jul 23 2009, 09:54