c'è una cosa da non sottovalutare:
codice:
int main (void){
	register int aNumber = 0;
	int * aNumberPtr =  &aNumber;
	return 0;
}
Non è compilabile; infatti:
codice:
$ gcc main.c 
main.c: In function 'main':
main.c:3: error: address of register variable 'aNumber' requested
insomma NON si può conoscere l'indirizzo di una variabile register, sia che venga messa realmente in un register oppure no.