Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер
Регистрация

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

Здесь нужно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

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

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

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

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

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

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
добрый вечер ВЕчная ПОмощь Помощь студентам 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 03:10
Добрый вечер... Allen Iverson Помощь студентам 0 27.04.2009 19:22


22:47.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.