![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 18.03.2019
Сообщений: 8
|
![]()
есть псевдокод описывающий инструкцию ENTER:
PUSH EBP; FRAME_PTR ← ESP; IF LEVEL > 0 THEN DO (LEVEL − 1) times EBP ← EBP − 4; PUSH Pointer(EBP); (* doubleword pointed to by EBP *) OD; PUSH FRAME_PTR; FI; EBP ← FRAME_PTR; ESP ← ESP − STORAGE; так вот не пойму что то указатель на локальные переменные прошлой процедуры будет положительным смешением от текущего ebp или отрицательным? |
![]() |
![]() |
![]() |
#2 |
Программист
Участник клуба
Регистрация: 23.06.2009
Сообщений: 1,772
|
![]()
Для прошлой процедуры смещение будет положительным. Отрицательным будет только для текущей процедуры
|
![]() |
![]() |
![]() |
#3 |
Регистрация: 18.03.2019
Сообщений: 8
|
![]()
то есть для обращения к локальным переменным прошлой процедуры [bp+4] и минус смешение до локальной переменной прошлого кадра стека верно понимаю?
Последний раз редактировалось char[]; 04.10.2019 в 20:31. |
![]() |
![]() |
![]() |
#4 |
Программист
Участник клуба
Регистрация: 23.06.2009
Сообщений: 1,772
|
![]()
Проще перейти к старому фрейму, временно восстановив прошлый bp
|
![]() |
![]() |
![]() |
#5 |
Регистрация: 18.03.2019
Сообщений: 8
|
![]() |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
добрый вечер | ВЕчная ПОмощь | Помощь студентам | 0 | 23.05.2013 19:50 |
Добрый вечер)Я занимаюсь стартапами | generalov | Помощь студентам | 4 | 14.06.2012 10:10 |
Добрый вечер. | DanilovLooNy | Свободное общение | 2 | 01.11.2011 19:54 |
ДОбрый вечер, ночь. Помогите решить задачу на си плиззз | Pavelhr | Общие вопросы C/C++ | 6 | 12.12.2009 02:10 |
Добрый вечер... | Allen Iverson | Помощь студентам | 0 | 27.04.2009 19:22 |