Перед разработчиками архитектуры процессора встает несколько вопросов, связанных с организацией набора регистров:
1. Универсальные регистры или регистры с частичной специализацией на выполнение определенного круга функций?
2. Универсальные регистры для хранения данных любых форматов или специализированные регистры в соответствии с определенными типами данных?
3. Количество регистров.
4. Разрядность регистров и размещение в регистрах данных, разрядность которых превышает разрядность регистров.
Универсальные регистры или регистры с частичной специализацией на выполнение определенного круга функций?
Если в процессоре существуют специализированные регистры, то их применение специфицируется неявно через код операции, который требует участия в определенной операции именно такого-то регистра и никакого другого. Явная спецификация операнда при такой организации может только уточнить, какой именно из группы регистров одинакового назначения будет использоваться при выполнении данной команды (если специализированные регистры объединены в группы по назначению). В результате сохраняется пространство в коде команды для другой информации. С другой стороны, любая специализация ограничивает программиста в использовании ресурсов процессора. Однозначного решения этой проблемы, пригодного на все случаи жизни, не существует.
|
|
В архитектурах, которые были разработаны еще в 70-х годах 20-го столетия (например, в архитектуре фирмы Intel IA-32), часть регистров общего назначения являлись истинно универсальными, а часть специализированными.
В архитектурах, которые были разработаны значительно позже регистры общего назначения – это универсальные регистры, данные из которых программист мог использовать в любых командах. В тоже время некоторые из этих универсальных регистров все-таки были специализированы, например: один из них предназначался для хранения номера текущей команды; другой – для хранения адреса возврата из подпрограммы; третий – для хранения указателя стека.