Глобальные переменные

Описанная выше схема регистровых окон обеспечивает эффективную работу с локальными скалярными переменными процедур. Однако она никак не учиты­вает необходимость обработки глобальных переменных, к которым обращаются не­сколько процедур.

Существует два подхода к обработке глобальных переменных. Первый подход, который совершенно очевиден, состоит в том, что для переменных, объявленных в исходном тексте программы на языке высокого уровня как глобаль­ные, компилятор резервирует определенные ячейки в оперативной памяти, и все команды обра­щения к глобальным переменным используют режимы адресации, работающие с оперативной па­мятью, а не с регистрами. Однако для обработки часто используемых в программе глобальных переменных такой подход не эффективен.

Альтернативный подход состоит в том, чтобы включить в состав процес­сора специальную группу регистров для размещения таких часто используе­мых глобальных переменных. Эти регистры должны иметь фиксированные номера, и доступ к ним должен быть открыт из любой процедуры. Для упрощения формата машинных команд при этом можно использовать унифицированную схему нумерации регистров. Например, номера от 0 до 7 при­сваиваются регистрам глобальных переменных, а номера от 8 до 31 — реги­страм в составе регистровых окон, т.е. фактически эти номера представляют собой смещение относительно значения указателя текущего окна. Конечно, использование регистров для хранения глобальных переменных несколько усложняет схему адресации регистров в процессоре, и, к тому же, компиля­тор должен решать, какие именно глобальные переменные имеет смысл раз­мещать в этих регистрах, а какие хранить в ячейках памяти.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: