2012-05-14 5 views
0

Почему статические переменные адресуются напрямую, в то время как местные жители адресуются косвенно? Я не могу видеть, где косвенное направление происходит для местных жителей!Режимы адресации для статических и локальных переменных

+0

Вы не предоставляете достаточно контекста, чтобы дать хороший ответ на этот вопрос. Какой язык программирования; какой компилятор и т. д. вы говорите? –

+0

@DonStewart gcc. – saadtaame

ответ

1

В языках, разрешающих использование функций рекурсивно, местные жители должны обращаться косвенно (через указатель стека).

C, однако, имеет также статические локальные переменные, поэтому static и local не обязательно являются взаимоисключающими концепциями.

+0

@Ingro Я вижу, поэтому сначала мы вычисляем адрес локальной переменной, а затем считываем данные с адреса вычисленной памяти. Правильно? – saadtaame

+0

Это зависит, конечно, от реализации, но обычно нужно, чтобы регистр (указатель стека) указывал на верхнюю/нижнюю часть стека, а затем каждая локальная переменная имела известное смещение от этого указателя стека. – Ingo

Смежные вопросы