Вопрос:
Доступ к стеку достигает той же скорости, что и доступ к памяти?
Например, я мог бы выполнить некоторую работу в стеке, или я мог бы работать непосредственно с помеченным местоположением в памяти.
Итак, в частности: push ax
с той же скоростью, что и mov [bx], ax
? Точно так же pop ax
с той же скоростью, что и mov ax, [bx]
? (предположим, что bx имеет место в памяти near
.)
Мотивация для вопроса:
В C часто встречается препятствие тривиальным функциям, которые принимают параметры.
Я всегда думал, что это связано не только с тем, что параметры попадают в стек, а затем выталкиваются из стека после возвращения функции, но также потому, что сам вызов функции должен сохранять контекст CPU, что означает больший объем использования стека.
Но если предположить, что кто-то знает ответ на заголовок вопроса, должно быть возможно количественно накладные расходы, которые функция использует для настройки (push/pop/preserve context и т.д.) в терминах эквивалентного количества прямой памяти доступ. Отсюда заголовок вопроса.
( Изменить: Уточнение:
near
, приведенное выше, в отличие от far
в сегментированной модели памяти 16 -битная архитектура x86.)