/ / Variabilný prístup pre čítanie bodu na rovnakom riadku, bude OS čítať pamäť dvakrát? - c, kompilátorová konštrukcia, operačný systém

Variabilne prístupný pre čítanie na rovnakom riadku, OS bude čítať pamäť dvakrát? - c, kompilátor-konštrukcia, operačný systém

Pomôžte mi pochopiť, ako kompilátor / OS reaguje na nasledujúci riadok programu v jazyku C,

int c;

void task1()
{
c+=c;  // This line is actually c=c+c; 2 read point 1 write
}

Bude pamäť čítať dvakrát alebo len raz?

odpovede:

0 pre odpoveď č. 1

To závisí od procesora, kompilátora amožnosti kompilátora. Na procesore, ktorý má inštrukciu s násobením pamäte a kompilátorom, ktorý nie je v režime ladenia, môžete získať kód vygenerovaný ako niečo ako

MULL2 #2, C

Pamäť sa prečíta raz a zapíše sa raz. Na procesore, ktorý vykonáva všetky operácie v registroch, môžete získať niečo ako:

MOVL C, R3
MULL #2, R3
MOVL R3, C