Да, это законно, однако, поскольку register - это всего лишь подсказка компилятору о том, что он может попробовать, в действительности ни одна реализация не должна его слушать.Также легко создать структуру, которая не может быть сохранена в пределах пространства, выделенного в регистрах.
Как только вы начинаете подходить так близко к машинно-зависимым проблемам, их роль в стандартах становится просто предположением, поскольку аппаратное обеспечение меняется так,одно и то же невозможно на этом уровне во всех архитектурах.