Programování uC Microchip v C

Jo, to může být že použije pro výsledek stejný registr.

Překladač to běžně bere tak, že zkontroluje velikosti operandů ve výrazu a podle toho použije typ výpočtu, tj. 16b číslo * 16b číslo násobí 16bitově, výsledek je 16b a ten pak uloží do registru výsledku (např. 32b). Měl by mít alespoň jeden operand rozměr 32b aby použil 32bitové násobení.

Při sčítání dvou 16b může být výsledek velký 17 bitů. Překladač musí zajistit i správné nastavení horního slova výsledku (aby zajistil znaménko), takže použije informace ze stavového registru a tam je nejen signum, ale i příznak carry (resp. overflow), který mu řekne že tam má přidat ještě jeden bít. Sčítání 16 bitů může tedy udělat 32b výsledek bez ztráty dat.