LINUX.ORG.RU

История изменений

Исправление byko3y, (текущая версия) :

расскажи мне, как без модификатора доступа volatile ты собираешься сказать компилятору что этот кусок кода на что-то влияет и оптимизации тут не нужны?

static int RegisterA;
static int RegisterB;

int main(){
...
int *pRegisterA = &RegisterA;
int *pRegisterB = &RegisterB;
int temp;
temp = *pRegisterA;
*pRegisterA = *pRegisterB;
*pRegisterB = temp;
...

}

PS: я сделал наоборот - я указал компилятору, что этот кусок кода можно оптимизировать. Еще раз повторюсь: оптимизации компиляторов без volatile некорректны, они производят программу, отличную от описанной в исходном коде.

Исправление byko3y, :

расскажи мне, как без модификатора доступа volatile ты собираешься сказать компилятору что этот кусок кода на что-то влияет и оптимизации тут не нужны?

static int RegisterA;
static int RegisterB;

int main(){
...
int *pRegisterA = &RegisterA;
int *pRegisterB = &RegisterB;
int temp;
temp = *pRegisterA;
*pRegisterA = *pRegisterB;
*pRegisterB = temp;
...

}

Исходная версия byko3y, :

расскажи мне, как без модификатора доступа volatile ты собираешься сказать компилятору что этот кусок кода на что-то влияет и оптимизации тут не нужны?

static int RegisterA; static int RegisterB;

int main(){ ... pRegisterA = &RegisterA; temp = *pRegisterA; *pRegisterA = *pRegisterB; *pRegisterB = temp; ...

}