ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
3 мая
1406361
mse homjak (22.02.2024 11:55, просмотров: 1178)
Гуры Ц, поясните, шозах? 
const uint16_t ChargenMainData[]=
{
 #include "CharGen16LE.dat"
};
 void initChargen(void)
{
    uint16_t* charGenIdx;
    uint32_t i;
    charGenIdx=(uint16_t*)CharGenRAM;
    for (i=0;i<(sizeof(ChargenMainData));i++)
       {
            *charGenIdx++=ChargenMainData[i];
       }
 }

тут имеем варнинг:

../User/iosetup.c:90:38: warning: iteration 3072 invokes undefined behavior [-Waggressive-loop-optimizations]

*charGenIdx++=ChargenMainData[i];

~~~~~~~~~~~~~~~^~~

../User/iosetup.c:88:5: note: within this loop

for (i=0;i<(sizeof(ChargenMainData));i++)

^~~

схуяли, казалось бы?


делаем "i" volatile, чтобы посмотреть отлаччиком переменную, хуяк, варнинга нет.

чо он там агрессивно наоптимизировал в том лупе?


const uint16_t ChargenMainData[]=
{
#include "CharGen16LE.dat"
};
void initChargen(void)
{
uint16_t* charGenIdx;
volatile uint32_t i;
charGenIdx=(uint16_t*)CharGenRAM;
for (i=0;i<(sizeof(ChargenMainData));i++)
{
*charGenIdx++=ChargenMainData[i];
}
}