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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.02.2012, 00:32   #1
ABCDEF1551
Пользователь
 
Регистрация: 11.02.2012
Сообщений: 10
По умолчанию Регистр EBP

Приветствую!
Расскажите, пожалуйста, что это за регистр "EBP", для чего предназначен,
для чего используется, пример его использования?
Никак не пойму..
ABCDEF1551 вне форума Ответить с цитированием
Старый 12.02.2012, 00:40   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Если цитировать Бредли, то это базовый регистр, который указывает на начало некоего блока данных.
К примеру есть массив двумерный
EBP удобно будет хранить указатель на его первый элемент
ESI удобно будет хранить указатель (или если быть точным смещение) на элемент-строку и уже само индексное смещение укажет на элемент массива-ячейку
Что-то типа
Код:
mov eax, [ebp+esi+5] ; пятый элемент (байт) в строке по смещению в ESI от базового адресса в ebp.
P.S. Почитай про байт mod-r/m
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.02.2012, 04:16   #3
ABCDEF1551
Пользователь
 
Регистрация: 11.02.2012
Сообщений: 10
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Код:
mov eax, [ebp+esi+5] ; пятый элемент (байт) в строке по смещению в ESI от базового адресса в ebp.
Приведенный пример обозначает mov eax, array[esi][5]?
ABCDEF1551 вне форума Ответить с цитированием
Старый 12.02.2012, 10:18   #4
alexcoder
Форумчанин
 
Регистрация: 31.05.2009
Сообщений: 786
По умолчанию

По сути это обычный регистр, но с одним отличием: при использовании его как базового при косвенной адресации, обращение происходит к сегменту стека. Это свойство используется для организации кадров стека при вызове функций для организации доступа к параметрам функции и локальным переменным.
Вот тут нашел пример как компиляторы организуют кадр стека:
http://wasm.ru/article.php?article=1009004
Помощь с программами:
vk.com/alexcoder1
e-mail: informatik101@mail.ru
alexcoder вне форума Ответить с цитированием
Старый 12.02.2012, 13:10   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Приведенный пример обозначает mov eax, array[esi][5]?
В грубом приближении да.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.02.2012, 13:58   #6
8Observer8
Старожил
 
Аватар для 8Observer8
 
Регистрация: 02.01.2011
Сообщений: 3,327
По умолчанию

to ABCDEF1551

ebp - the stack-frame base pointer (указатель на стековый фрейм)

Стековый фрейм - часть стека, выделяемая процедуре в момент её активации для хранения локальных переменных (определение из электронного словаря lingvo).

Откройте следующий документ и запустите поиск по нему (введите: ebp)

http://download.intel.com/design/pro...als/253665.pdf

Найдёте там следующее:

Цитата:
6.2.4.1 Stack-Frame Base Pointer
The stack is typically divided into frames. Each stack frame can then contain local variables, parameters to be passed to another procedure, and procedure linking information. The stack-frame base pointer (contained in the EBP register) identifies a fixed reference point within the stack frame for the called procedure. To use the stack-frame base pointer, the called procedure typically copies the contents of the ESP register into the EBP register prior to pushing any local variables on the stack. The stack-frame base pointer then permits easy access to data structures passed on the stack, to the return instruction pointer, and to local variables added to the stack by the called procedure.
А ещё, найдите книгу Александра Крупника "Изучаем ассемблер". Он использует MASM32 и отладчик OllyDbg.

Скачайте MASM32 (он под номером 1, hutch) --> http://www.wasm.ru/toollist.php

На первых страницах книги написано:
Цитата:
От издательства:
Все исходные тексты, приведённые в книге, вы сможете найти по адресу http: //www.piter.com/download
Там (на сайте) в поиске просто наберите - Крупник.

Пишет Александр очень подробно, основательно и с математическим уклоном, что очень радует. К примеру, в книге есть метод Симпсона для нахождения интеграла.

Конкретно о ebp написано в разделе "Память", в подразделе "Своеволие ассемблера". Но я вам советую прочитать весь раздел "Память". Вы всё сами увидите с помощью отладчика OllyDbg.
8Observer8 вне форума Ответить с цитированием
Старый 12.02.2012, 19:32   #7
ABCDEF1551
Пользователь
 
Регистрация: 11.02.2012
Сообщений: 10
По умолчанию

masm-ами пользуйтесь сами.

Я писал и пишу без прямого использования EBP, и понятия не имею для чего он. Ну хоть головой об стену - не понимаю.

Последний раз редактировалось rpy3uH; 12.02.2012 в 19:51.
ABCDEF1551 вне форума Ответить с цитированием
Старый 12.02.2012, 19:54   #8
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

Цитата:
Сообщение от ABCDEF1551 Посмотреть сообщение
не имею для чего он. Ну хоть головой об стену - не понимаю.
EBP - это регистр, просто обычный регистр (хотя не очень обычный, но не суть). если не понимаешь для чего он и как используется, не парься, знание придёт со временем
rpy3uH вне форума Ответить с цитированием
Старый 12.02.2012, 19:54   #9
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

масм тут не причем, когда будете сказать по стеку и при этом нужно помнить начало вашего кадра, то поймете как обычно его применяют.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 12.02.2012, 20:15   #10
ABCDEF1551
Пользователь
 
Регистрация: 11.02.2012
Сообщений: 10
По умолчанию

Цитата:
Сообщение от rpy3uH Посмотреть сообщение
EBP - это регистр, просто обычный регистр (хотя не очень обычный, но не суть).
Регистр который может использоваться как сегментный и обычный?

Последний раз редактировалось ABCDEF1551; 12.02.2012 в 20:20. Причина: Не плодить посты.
ABCDEF1551 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C++/Абсолютный адрес регистра Ebp coNsept Общие вопросы C/C++ 6 29.03.2011 12:56
Запись в регистр Vitek-pm Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 10 17.02.2010 04:00
Регистр в таблицах БД Alexij БД в Delphi 3 17.04.2008 13:38
Регистр символов Никки Общие вопросы Delphi 1 22.12.2007 20:14
регистр vitalik007 Общие вопросы Delphi 2 15.09.2007 02:41