История изменений
Исправление 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; ...
}