Varování v programu (optimalizace smyčky)

C,C++,C#

Moderátori: psichac, Moderátori

Používateľov profilový obrázok
jirka.jirka.
Ultimate člen
Ultimate člen
Príspevky: 1537
Dátum registrácie: 17 Okt 2008, 00:00
Bydlisko: Uherské Hradiště
Kontaktovať používateľa:

Varování v programu (optimalizace smyčky)

Príspevok od používateľa jirka.jirka. » 06 Mar 2018, 09:09

Zdravím pánové a dámy,

Tak nějak jsem psaním kódu narazil na zajímavé varování, teda pro mě zajímavé a rozhodl jsem se zjistit více.

Takže, mám tuto funkci:

Kód: Vybrať všetko

FLASH_write_n_data_32
Která zapisuje data do interní FLASH u STM32.
- data - pole dat, které chci zapsat
- adresa odkud chci zapisovat
- nybytes - kolik 32bit hodnot chci zapsat.

Funkce funguje pěkně, ale.....

Překladač mě nenechá na pokoji.
cannot optimize loop, the loop counter may overflow [-Wunsafe-loop-optimizations]
Překlad jsem si vyložil takto:
Nemohu optimalizovat smyčku, smyčka může přetéct.

A teď přijde to zajímaví. Jak to udělat tak, aby to nastat nemohlo? Díky moc za rady.

Kód: Vybrať všetko

uint8_t FLASH_write_n_data_32(uint32_t *data, uint32_t start_address, uint32_t nbytest)
{
	 uint32_t address = start_address;
	 uint32_t stop_addr = nbytest*4 + address;
	 while(address < stop_addr )
	 {
		 FLASH_ProgramWord(address, *data++);
		 address = address + 4;
	 }
	 return 0;
}
PS: Pro všechny rýpaly, to že to funguje neznamená, že se varováním nemusím zabývat. A ano zkoušel jsem mnoho věcí, ale nic mi nepomohlo. A cesta na google byla moje první, ale nepomohlo mi to.
0

stefanSK
Pokročilý člen
Pokročilý člen
Príspevky: 752
Dátum registrácie: 24 Jún 2010, 00:00
Bydlisko: Trnava
Vek: 68

Re: Varování v programu (optimalizace smyčky)

Príspevok od používateľa stefanSK » 06 Mar 2018, 10:14

?napr :

Kód: Vybrať všetko

void  FLASH_write_n_data_32(uint32_t *data, uint32_t start_address, uint32_t nbytest)
{
    uint32_t address = start_address;
    while(nbytest-- )
    {
       FLASH_ProgramWord(address, *data++);
       address +=  4;
    }
}
0
S.K.

Používateľov profilový obrázok
jirka.jirka.
Ultimate člen
Ultimate člen
Príspevky: 1537
Dátum registrácie: 17 Okt 2008, 00:00
Bydlisko: Uherské Hradiště
Kontaktovať používateľa:

Re: Varování v programu (optimalizace smyčky)

Príspevok od používateľa jirka.jirka. » 06 Mar 2018, 12:35

kurňa, že mě to taky nenapadlo. Vyzkouším a dám vědět. :thumbup: Zatím děkuji
0

Napísať odpoveď
  • Podobné témy
    Odpovedí
    Zobrazení
    Posledný príspevok