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

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

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

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

Ответ
 
Опции темы
Старый 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,700
По умолчанию

Для прошлой процедуры смещение будет положительным. Отрицательным будет только для текущей процедуры
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,700
По умолчанию

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

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

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

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
добрый вечер ВЕчная ПОмощь Помощь студентам 0 23.05.2013 18:50
Добрый вечер)Я занимаюсь стартапами generalov Помощь студентам 4 14.06.2012 09:10
Добрый вечер. DanilovLooNy Свободное общение 2 01.11.2011 18:54
ДОбрый вечер, ночь. Помогите решить задачу на си плиззз Pavelhr Общие вопросы C/C++ 6 12.12.2009 02:10
Добрый вечер... Allen Iverson Помощь студентам 0 27.04.2009 18:22


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS