Как создать допольнительную секцию в masm?

Тема в разделе "WASM.BEGINNERS", создана пользователем amvoz, 6 май 2010.

  1. amvoz

    amvoz Member

    Публикаций:
    0
    Регистрация:
    12 ноя 2008
    Сообщения:
    653
    Друзья!

    Я поискал в пакете masm в опциях линковщика и нашёл такую штуку:

    LINK Options
    usage: LINK [options] [files] [@commandfile]

    ...
    /RELEASE
    /SECTION:name,[E][R][W][D][K][L][P][X]
    /STACK:reserve[,commit]

    Ну вот, потом в опциях линковщика я так прописываю:
    /SECTION:name /SUBSYSTEM:WINDOWS *.obj rsrc.obj

    Бесполезно, я так понимаю, что должна создасться секция с именем name, но не создаётся.

    Помогите пожалуйста!
     
  2. Phyber

    Phyber New Member

    Публикаций:
    0
    Регистрация:
    27 мар 2010
    Сообщения:
    96
    http://msdn.microsoft.com/en-us/library/sf9b18xk(v=VS.71).aspx
     
  3. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    amvoz
    В скобках указываются опциональные параметры, запятая не опциональный параметр. Далее линкеру нужно знать размер секции и что в неё помещать. Это нужно указать в сурсе как .code name
     
  4. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    Overrides the attributes of a section
     
  5. amvoz

    amvoz Member

    Публикаций:
    0
    Регистрация:
    12 ноя 2008
    Сообщения:
    653
    Я понял, сверх установленных атрибутов для секции... И так далее
    Спасибо всем, я быстренько перевёл ресурс этот, в общем, меня бы устроил такой вариант:
    /SECTION:.name,R

    ТО есть чтобы можно было читать из секции

    ТОлько, простите, всё равно что-то не создаётся секция
    Простите, я так понимаю, в исходнике я должен указать размер секции и её содержание? А как? Извините.

    И ещё. Phyber, ничего, что ресурс, к которому вы меня отослали... э... С++-ый? Или линковщики одинаковы, что для C++, что для masm?
     
  6. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    Данная опция изменяет атрибуты существующей секции.
    Содержание.
    Ну, вы же, как-то указываете содержание секции кода. Или данных.

    Данная опция изменяет атрибуты существующей секции.
    да.
     
  7. Phyber

    Phyber New Member

    Публикаций:
    0
    Регистрация:
    27 мар 2010
    Сообщения:
    96
    :)
     
  8. amvoz

    amvoz Member

    Публикаций:
    0
    Регистрация:
    12 ноя 2008
    Сообщения:
    653
    Вот секцию я худо-бедно научился создавать. Вот так:
    Код (Text):
    1. .386
    2. .model flat, stdcall
    3. option casemap:none
    4.  
    5. include \masm32\include\windows.inc
    6. include \masm32\include\kernel32.inc
    7. includelib \masm32\lib\kernel32.lib
    8. .data
    9.  
    10. .code section
    11. per db "stroka", 0
    12.  
    13. .code
    14. start:
    15.       invoke ExitProcess, 0
    16. end start
    Но вот мне нужно ещё её размер как-то указывать научиться. Ну, я не знаю,может, я слишком многого прошу и линковщик сам создаёт ей размер в зависимости от содержания, не знаю. В принципе я это смогу сделать и сам, открыв нужный файл на запись и порывшись в статье "от зелёного к красному", найти нужное поле и вручную изменить размер. Но это много труднее, нежели поручить это дело линковщику. Спасибо, буду дальше сам думать.
     
  9. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    amvoz
    DB Размер DUP (Начинка).
     
  10. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.914
    amvoz
    Если уж вы начали разбираться в опциях компилятора и линковщика, то посмотрите заодно, как избавиться ненужной писанины в каждом asm-файле: вместо .model flat,stdcall достаточно писать .model flat отсутствие stdcall компенсируется ключем ml /Gz, отсутствие строки option casemap:none компенсируется ml /Cp. Полный путь к inc- и lib- файлам убирается совсем, например вместо include \masm32\include\windows.inc, достаточно include windows.inc при указании "ml /Ic:\masm32\include", то же с либами - строка "link /LIBPATH:c:\masm32\lib". Примеры здесь и здесь
     
  11. amvoz

    amvoz Member

    Публикаций:
    0
    Регистрация:
    12 ноя 2008
    Сообщения:
    653
    Спасибо