Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.10.2019, 19:36   #1
char[]
 
Регистрация: 18.03.2019
Сообщений: 8
Печаль вечер добрый помогите разобраться в инструкции enter с уровнем вложенности

есть псевдокод описывающий инструкцию 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 или отрицательным?
char[] вне форума Ответить с цитированием
Старый 04.10.2019, 19:48   #2
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Для прошлой процедуры смещение будет положительным. Отрицательным будет только для текущей процедуры
Black Fregat вне форума Ответить с цитированием
Старый 04.10.2019, 19:52   #3
char[]
 
Регистрация: 18.03.2019
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Black Fregat Посмотреть сообщение
Для прошлой процедуры смещение будет положительным. Отрицательным будет только для текущей процедуры
то есть для обращения к локальным переменным прошлой процедуры [bp+4] и минус смешение до локальной переменной прошлого кадра стека верно понимаю?

Последний раз редактировалось char[]; 04.10.2019 в 20:31.
char[] вне форума Ответить с цитированием
Старый 04.10.2019, 21:19   #4
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Проще перейти к старому фрейму, временно восстановив прошлый bp
Black Fregat вне форума Ответить с цитированием
Старый 04.10.2019, 23:28   #5
char[]
 
Регистрация: 18.03.2019
Сообщений: 8
По умолчанию

Цитата:
Сообщение от Black Fregat Посмотреть сообщение
Проще перейти к старому фрейму, временно восстановив прошлый bp
понял, благодарю за ответы
char[] вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
добрый вечер ВЕчная ПОмощь Помощь студентам 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