таблица импорта

Тема в разделе "WASM.ASSEMBLER", создана пользователем Dimarik__, 21 сен 2011.

  1. Dimarik__

    Dimarik__ New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2011
    Сообщения:
    58
    Читаю туториалы по ассемблеру с WASM-a.
    Авто пишет:
    А разве RVA (относительный виртуальный адрес) и файловое смещение это не одно и то же?
    Если вам не трудно, можете подробнее про это пояснить на пальцах или же хорошей ссылочкой поделиться?
    Просто немножко непонятно, каким образом работает эта функция, как мэпирует файл PE-загрузчик и как это делаем мы в программе.
    Заранее спасибо.
     
  2. _Juicy

    _Juicy Active Member

    Публикаций:
    0
    Регистрация:
    12 авг 2003
    Сообщения:
    1.159
    Адрес:
    SPb
    RVA - адрес относительно начала образа загруженного в память исполняемого файла.
    Файловое смещение - смещение относительно начала файла на диске.
    Если entry point программы имеет, допустим, адрес 0x401000, то его RVA будет 0x1000, а файловое смещение будет зависеть от размера заголовка и секций и может быть, к примеру, 0x400.
     
  3. _Juicy

    _Juicy Active Member

    Публикаций:
    0
    Регистрация:
    12 авг 2003
    Сообщения:
    1.159
    Адрес:
    SPb
  4. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    Нет. Все дело в
    1) разном выравнивании начала секций в файле (обычно 512 байт = размер сектора) и в загруженном в память образе (4К = размер страницы)
    2) возможном наличии секций неинициализированных данных (типа .data? или .bss), которые в файле вообще не хранятся.
    Поэтому при загрузке образа в память секции "раздвигаются" по адресам, кратным 4К, и дополнительно могут вставляться обнуленные секции неинициализированных данных