Фрагмент кода в ядре Linux 0.12 использует параметр функции следующим образом:
int do_signal(int signr, int eax /* other parameters... */) {
/* ... */
*(&eax) = -EINTR;
/* ... */
}
Цель кода - поместить -EINTR в память, где живет eax, но я не могу сказать, почему это не сработает, если просто назначить eax:
eax = -EINTR
Как компилятор мог бы сделать разницу между eax и * (& eax)?