FASM: fixups, shareable, discardable, notpageable

Тема в разделе "WASM.BEGINNERS", создана пользователем SSERG, 13 сен 2005.

  1. SSERG

    SSERG New Member

    Публикаций:
    0
    Регистрация:
    23 июл 2005
    Сообщения:
    6
    Адрес:
    Russia
    Что означает в FASM:

    fixups, shareable, discardable, notpageable



    Кто знает объясните (желательно поподробнее)
     
  2. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Почитай документацию по PE, это опции директорий.



    В крадце - в директории fixups находятся таблица перемещаемых элементов (relocations), нужны в случае загрузки PE Image не по базовому адресу (для dll например). discardable указывает системе, что эту секцию нужно (или можно?) сбрасывать из физ.памяти, когда она не нужна. Соответственно, notpageable указывает, что сбрасывать нельзя.



    Возможно, ошибаюсь. Почитай документацию.
     
  3. SSERG

    SSERG New Member

    Публикаций:
    0
    Регистрация:
    23 июл 2005
    Сообщения:
    6
    Адрес:
    Russia
    Может глупый вопрос, но как объявить в FASM сегмент неинециализированных данных. (желательно написать полную строчку).

    (в MASM ".data?")

    Заранее спасибо.
     
  4. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
    Фасму не надо никакую строчку, просто размещай данные перед секцией, тогда будет ещё отдельная для неинициализированных данных
    Код (Text):
    1. ;=====================================================================
    2. format      pe gui
    3. include     '%fasminc%\win32a.inc'
    4. ;=====================================================================
    5. uninit      rb      1024*1024
    6. ;=====================================================================
    7. section     '.code' code readable writeable executable
    8. ;=====================================================================
    9. entry       $
    10.             invoke  ExitProcess,0
    11. ;=====================================================================
    12. data        import
    13. library     kernel32,'kernel32.dll'
    14. include     '%fasminc%\apia\kernel32.inc'
    15. end         data
    16. ;=====================================================================
    Или размещай данные в конце последней секции, её виртульный размер будет увеличен, но на размере PE файла это не отобразится
    Код (Text):
    1. ;=====================================================================
    2. format      pe gui
    3. include     '%fasminc%\win32a.inc'
    4. ;=====================================================================
    5. entry       $
    6.             invoke  ExitProcess,0
    7. ;=====================================================================
    8. data        import
    9. library     kernel32,'kernel32.dll'
    10. include     '%fasminc%\apia\kernel32.inc'
    11. end         data
    12. ;=====================================================================
    13. uninit      rb      1024*1024
    14. ;=====================================================================