La palabra reservada register sirve al compilador para indicarle que "intente" almacenar ese valor en un registro de la CPU en vez de directamente en memoria, porque consideras que es una variable utilizada masivamente en la función, y es conveniente que no se guarde en memoria, para evitar movimientos de datos entre memoria y CPU.
Es una palabra reservada que tenía sentido al principio de los tiempos de C, cuando los compiladores no eran extremadamente hábiles y necesitaban las indicaciones del programador. Hoy en día, los compiladores son (o deberían ser) lo suficientemente "avispados" para darse cuenta de qué variables se utilizan más, y tratar de que esas estén en registros constantemente, evitando así tiempo de ejecución al mover datos.
De todas formas, obviamente, poner "register" no obliga al compilador a guardar esa variable en un registro, sino que es algo así como "si tienes registros libres de CPU al compilar esta función, y aprovecharlos para guardar alguna variable en él, pues yo prefiero que sea esta en vez de otra".
No sé si ha quedado claro...
Saludos