funkce v C - pro€ to nechod

Jan Waclawek konfera na efton.sk
Středa Prosinec 30 00:26:00 CET 2015


Zacnem s tym, ze to je C++ a nie C.

C++ presne nepoznam, ale je mozne, ze to spravanie v tomto konkretnom pripade je rovnake ako v C. Zakladom "problemu" je vsak urcite fakt, ze int je v avr-gcc aj avr-g++ 16-bitovy. Neviem sice, aky je navratovy typ funkcie (pardon, ++ metody) co cita z EEPROM, ale tipujem, ze to bude jeden z troch 8-bitovych typov, co sa pred nasobenim vdaka usual arithmetic conversions konvertuje na int. Rovnako konstanta 256 zo stredneho sucinu je implicitne int, ergo aj ten sucin je typu int. Konstantny vysledok pri inkriminovanej hodnote "stredneho parametra" nad 250 (a pravdepodobne nad 128) je asi dana optimalizaciou vychadzajucou z faktu, ze 128 a viac  * 256 do [znamienkoveho 16-bitoveho] int pretecie, a teda vysledok sucinu je nedefinovany, ergo moze byt aj nahodne cislo alebo aj konstanta.

Bolo by poucne vidiet relevantny disasemblat.

wek




Daląí informace o konferenci Hw-list