В общем это не верное утверждение, на регистрах я пишу специфичные
для платформ модули. Сама по себе идея HAL - hardware abstraction
level - существует уже очень давно, а заключается она в том, чтобы
раздробить код на три части: - специфичные для платформы драйверы
- обертка над драйверами
- платформонезависимая логика
Смысл данной идеи - обеспечить переносимость логики, как наиболее сложной и трудозатратной части кода. Хорошим примером будет TCP/IP стек LwIP, портируемость которого зависит только от объёмов памяти и быстродействия целевой платформы.