Что такое релоки...

Discussion in 'WASM.BEGINNERS' started by jaga, Feb 21, 2009.

  1. jaga

    jaga Дмитрий

    Blog Posts:
    0
    Joined:
    Oct 25, 2008
    Messages:
    33
    Location:
    Пермская обл.
    Глупый вопрос конечно... но так и не понял что это такое...
     
  2. Y_Mur

    Y_Mur Active Member

    Blog Posts:
    0
    Joined:
    Sep 6, 2006
    Messages:
    2,494
    Это адреса в исполнимом файле (dll, exe(не всегда)) по которым находятся базозависимые адреса в командах переходов и обращений к памяти. Если файл загружен не по тому базовому адресу на который он рассчитан, то загрузчик пробегается по этим адресам и корректирует их.
     
  3. Partner

    Partner Павел

    Blog Posts:
    0
    Joined:
    Feb 28, 2008
    Messages:
    917
    Location:
    Los Angeles
    jaga
    Упрощая,Relocation table - это список адресов, которые требуют коррекции при загрузке файла.
     
  4. MSoft

    MSoft New Member

    Blog Posts:
    0
    Joined:
    Dec 16, 2006
    Messages:
    2,854
    вот пример: mov eax,offset xxx. После компиляции у тебя в коде будет такое: mov eax,401012 (ну это к примеру выбрано такое смещение). НО! Это при условии, что твой файл будет загружен по базе 400000. А если этот адрес будет занят и файл будет загружен по 500000 к примеру? Получается, что mov eax,401012 указывает уже на неправильный адрес. Т.е. ссылку надо будет подкорректировать. Вот релоки и содержат указатели на то, что нужно подкорреткировать
     
  5. max7C4

    max7C4 New Member

    Blog Posts:
    0
    Joined:
    Mar 17, 2008
    Messages:
    1,203
    хотя достаточно того, что секция куда указывает команда окажется не на своем месте. (но такое чистый виндовый загрузчик обычно не творит, хотя там это предусмотрено)