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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.10.2010, 09:40   #1
xrnd
Пользователь
 
Регистрация: 27.09.2010
Сообщений: 18
Вопрос Команды ENTER и LEAVE

Вроде бы такие полезные команды ENTER и LEAVE, но почему-то ни компиляторы языков выского уровня, ни программисты на ассемблере их практически не используют.
В чем проблема?
xrnd вне форума Ответить с цитированием
Старый 19.10.2010, 10:13   #2
yuran666666
Форумчанин
 
Аватар для yuran666666
 
Регистрация: 23.04.2009
Сообщений: 346
По умолчанию

Да вроде как и ни в чем тут нет проблем - дело вкуса, но вручную потом высчитвать смещения в стеке своих переменных и аргументов - мало кому хочется
Кстати, Sphinx C-- очень даже использует enter, а уж про неиспользование leave это ложь - даже masm32 его генерирует чуть чаще чем всегда, но выделяет кадр стека таки без enter
Нет, ну правда..
yuran666666 вне форума Ответить с цитированием
Старый 19.10.2010, 10:33   #3
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,162
По умолчанию

yuran666666
наверное не masm (здесь мы всё подставляем руками) а С/С++/C#
просто однобайтовый leave заменяет 3 байта mov esp,ebp /pop ebp да и enter достаточно часто попадается в программах, написанных на ассемблере
Mikl___ вне форума Ответить с цитированием
Старый 19.10.2010, 12:02   #4
Goodwin98
equ asm
Участник клуба
 
Аватар для Goodwin98
 
Регистрация: 02.05.2009
Сообщений: 1,605
По умолчанию

Цитата:
наверное не masm (здесь мы всё подставляем руками) а С/С++/C#
Именно в масме, тасме вроде тоже, да и в фасме наверняка. Ведь макросы для создания подпрограмм никто не отменял
А про enter вроде бы слышал, что он исполняется не эффективно и что не рекомендуется его использовать... Только вот уже не вспомню где
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4
Goodwin98 вне форума Ответить с цитированием
Старый 19.10.2010, 17:17   #5
xrnd
Пользователь
 
Регистрация: 27.09.2010
Сообщений: 18
По умолчанию

yuran666666

Я посмотрел макросы FASM, действительно leave они генерируют.
А вот вместо enter используются 3 команды:
Код:
    push ebp

    mov ebp,esp

    sub esp,loc
Я предполагаю, что дело всё-таки в скорости выполнения. Но неужели 3 команды быстрее чем одна?
xrnd вне форума Ответить с цитированием
Старый 19.10.2010, 17:49   #6
Goodwin98
equ asm
Участник клуба
 
Аватар для Goodwin98
 
Регистрация: 02.05.2009
Сообщений: 1,605
По умолчанию

попробовал
Код:
    push ebp
    mov ebp,esp
    sub esp,16
    leave
выполнилось за 2 такта на моем проце.
Код:
enter 16,0
leave
Выполнилось за 14 тактов.
Код:
push ebp
mov ebp,esp
sub esp,16
mov esp,ebp
pop ebp
4 такта
Разница очевидна
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4

Последний раз редактировалось Goodwin98; 19.10.2010 в 17:59.
Goodwin98 вне форума Ответить с цитированием
Старый 20.10.2010, 03:52   #7
xrnd
Пользователь
 
Регистрация: 27.09.2010
Сообщений: 18
По умолчанию

Goodwin98
Спасибо.
А как Вы это измерили и на каком конкретно процессоре?
Мне интересно на своём тоже проверить
xrnd вне форума Ответить с цитированием
Старый 20.10.2010, 04:51   #8
Goodwin98
equ asm
Участник клуба
 
Аватар для Goodwin98
 
Регистрация: 02.05.2009
Сообщений: 1,605
По умолчанию

Программа, которой измерял(фасм).
Процессор - AMD Athlon XP 2500+
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4
Goodwin98 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
реакция на Enter AK BULLETS Общие вопросы Delphi 2 06.04.2010 14:00
Enter prod87 Общие вопросы Delphi 3 01.11.2009 19:13
Enter PAVEL315 Помощь студентам 7 17.12.2007 20:41
Enter Slash Общие вопросы Delphi 2 24.03.2007 17:40