eXeLab
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 2 сентября!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Русский / Russian English / Английский

Сейчас на форуме: dma, SDK (+3 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS · SVN ·

 eXeL@B —› Вопросы новичков —› Выравнивание адресов секций.
Посл.ответ Сообщение

Ранг: 10.6 (новичок)
Статус: Участник

Создано: 8 сентября 2019 15:57 New!
Цитата · Личное сообщение · #1

Всем привет. Вот у Криса есть два макроса
ALIGN_DOWN(x, align) (x & ~(align - 1))//для адресов секций (физических и виртуальных)
ALIGN_UP(x, align) ((x & (align - 1)) ? ALIGN_DOWN(x, align) + align : x) //для размеров секций
С выравниванием размеров все понятно.
Вот не понятно практическое применение выравнивание адреса.


Ранг: 211.3 (наставник)
Статус: Участник

Создано: 8 сентября 2019 16:12 · Поправил: f13nd New!
Цитата · Личное сообщение · #2


Основная идея в том, что для выборки из памяти данных или инструкций может потребоваться больше циклов обращения к контроллеру памяти. Выравнивание применяется в основном для адресов назначения переходов ну и для операндов инструкций, требующих обязательного выравнивания.

Ранг: 130.1 (ветеран)
Статус: Участник

Создано: 8 сентября 2019 16:12 New!
Цитата · Личное сообщение · #3

zombi-vadim пишет:
не понятно практическое применение выравнивание адреса

Если помимо копипаста кода еще и содержание книг читать, то подобных вопросов в принципе не возникнет...

Ранг: 10.6 (новичок)
Статус: Участник

Создано: 8 сентября 2019 16:15 · Поправил: zombi-vadim New!
Цитата · Личное сообщение · #4

f13ndММ а можно пожалуйста ссылочку на страничку


Ранг: 211.3 (наставник)
Статус: Участник

Создано: 8 сентября 2019 16:17 New!
Цитата · Личное сообщение · #5

Ранг: 10.6 (новичок)
Статус: Участник

Создано: 8 сентября 2019 16:23 New!
Цитата · Личное сообщение · #6

Ну допустим я создал секцию в файле.Выровнял размер. Потом следующую. Адрес следующей секции должен соответствовать адресу первой плюс ее размер. Никак иначе.


Ранг: 211.3 (наставник)
Статус: Участник

Создано: 8 сентября 2019 16:32 · Поправил: f13nd New!
Цитата · Личное сообщение · #7

zombi-vadim пишет:
Адрес следующей секции должен соответствовать адресу первой плюс ее размер.

Здесь речь не про выравнивания секций. Выравнивание секции связано с размером страницы (4096 байт, 0x1000), менеджер памяти оперирует с этой категорией.

ЗЫ: Не разглядел название темы, сами макросы характерные для выравнивания кода и данных. Вобщем берешь OPTIONAL_HEADER.SectionAlignment из заголовка, затем
(Virtual address + virtual size + (OPTIONAL_HEADER.SectionAlignment-1)) & ~(OPTIONAL_HEADER.SectionAlignment-1)
Это VA следующей секции.
(raw size + (OPTIONAL_HEADER.FileAlignment-1)) & ~(OPTIONAL_HEADER.FileAlignment-1)
Это raw size для текущей секции.

| Сообщение посчитали полезным: zombi-vadim



Ранг: 302.0 (мудрец)
Статус: Участник

Создано: 8 сентября 2019 18:09 New!
Цитата · Личное сообщение · #8

zombi-vadim

Ты будешь так и дальше задавать вопросы про формат. Открой док по пе формату и изучай загрузчик в WRK. Там ответы на любой твой вопрос.
 eXeL@B —› Вопросы новичков —› Выравнивание адресов секций.

Оригинальный DVD-ROM: eXeL@B DVD !

Вы находитесь на форуме сайта EXELAB.RU
Проект ReactOS