Как осуществляется доступ к локальным переменным функции из стека?

From http://www.learncpp.com/cpp-tutorial/79-the-stack-and-the- heap /

Вот последовательность шагов, которые выполняются, когда функция вызывается:

  1. Адрес инструкции, находящейся за пределами вызова функции, помещается в стек. Так ЦП запоминает, куда идти после функция возвращается.
  2. В стеке выделяется место для типа возвращаемого значения функции. Это пока просто заполнитель.
  3. ЦП переходит к коду функции.
  4. Текущая вершина стека хранится в специальном указателе, называемом фреймом стека.
  5. Все, что добавлено в стек после этого момента, считается «локальным» для функции.
  6. Все аргументы функции помещаются в стек.
  7. Инструкции внутри функции начинают выполняться.
  8. Локальные переменные помещаются в стек по мере их определения.

Я не уверен, как работает пункт №6. Если все аргументы функции помещены в стек, как к ним получить доступ?

Если, например, есть три аргумента a , b и c и помещаются в стек таким образом сверху

| a |
| b |
| c |
|   |
 ...
|___|

Что же происходит, когда функция хочет получить доступ к c ? Выскакивают ли a и b ?

9
задан Lazer 12 February 2012 в 09:11
поделиться