1. Если вы только начинаете программировать на ассемблере и не знаете с чего начать, тогда попробуйте среду разработки ASM Visual IDE
    (c) на правах рекламы
    Скрыть объявление

Как собирать проект на masm, включающий в себя несколько asm файлов?

Тема в разделе "WASM.BEGINNERS", создана пользователем oxvlad, 28 авг 2009.

  1. oxvlad

    oxvlad New Member

    Публикаций:
    0
    Регистрация:
    28 авг 2009
    Сообщения:
    7
    Есть куча asm файлов, как их собрать в одну dll библиотеку?
     
  2. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.204
    оффтоп: копипастом
    oxvlad
    попробуйте слинковать вместе все obj, получающиеся после ассемблирования. подробнее см. командную строку link.exe
     
  3. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.587
    cкомпилировать в .obj каждый файл, потом слинковать все вместе линкером ms link, указав ему флаг /DLL и точку входа и другие необходимые для длл параметры.
     
  4. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    семеришься o_0
     
  5. oxvlad

    oxvlad New Member

    Публикаций:
    0
    Регистрация:
    28 авг 2009
    Сообщения:
    7
    И еще вопрос, что писать в модулях asm т.е. какой формат он должен иметь для masm?
    PS. Если просто имплементации функций перечислить не собирается в объектники. :dntknw:
     
  6. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.587
    n0name
    что это значит?


    oxvlad
    не понял? приведи пример файлов.
     
  7. oxvlad

    oxvlad New Member

    Публикаций:
    0
    Регистрация:
    28 авг 2009
    Сообщения:
    7
    Great

    Пример asm модуля:

    ;test.asm

    foo proc
    xor eax, eax
    ret
    foo endp
     
  8. oxvlad

    oxvlad New Member

    Публикаций:
    0
    Регистрация:
    28 авг 2009
    Сообщения:
    7
    Модуль основной dll:

    .386
    .model flat, stdcall
    option casemap :none

    .data

    .code
    LibMain proc instance : DWORD, reason : DWORD, unused : DWORD
    ret
    LibMain endp

    end LibMain
     
  9. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.204
    исчебы. тогда копипаст или include
     
  10. oxvlad

    oxvlad New Member

    Публикаций:
    0
    Регистрация:
    28 авг 2009
    Сообщения:
    7
    max7C4
    Как сделать, чтобы без копипаста и инклюда, чтобы объектники генерировались? Не хочется весь код писать в одном asm файле.
     
  11. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.204
    вот так
    Код (Text):
    1. .386
    2. .model flat, stdcall
    3. option casemap :none
    4.  
    5. .data
    6.    
    7. .code
    8. foo proc
    9.     xor eax, eax
    10.     ret
    11. foo endp
    12.  
    13. end
     
  12. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.204
    а. да еще extern foo забыл, но это можно и в def файле указать
     
  13. oxvlad

    oxvlad New Member

    Публикаций:
    0
    Регистрация:
    28 авг 2009
    Сообщения:
    7
    max7C4
    Я все в def файле указывал.
     
  14. oxvlad

    oxvlad New Member

    Публикаций:
    0
    Регистрация:
    28 авг 2009
    Сообщения:
    7
    max7C4
    Твой пример "Сегодня 10:32:05" при сборке выдает следующее

    Assembling: test.asm
    test.asm(1) : error A2085: instruction or register not accepted in current CPU mode
    test.asm(1) : error A2088: END directive required at end of file

    Объектник собирал так:
    \masm32\bin\ml /c /coff test.asm

    Видимо опять я что то жделаю не так ((
     
  15. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.204
    ну так попробуйте другой CPU, .386P что ли напишите, какие проблемы (наверное незнание английского, translate.google.com Вам в помощь)
    в конце файла нет end. А кто мешает поставить?
     
  16. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.204
    Вот еще, уберите .data, с пустыми блоками, могут быть глюки, хотя я уже точно не помню, как там масм (сам фасмом пользуюсь, он лучше: 1 - удобнее, 2 - функциональнее (с его помощью компилятся хоть образы дисков, хоть 3D модельки, хоть ... да в общем что угодно), 3 - легче (меньше по размеру и количеству файлов), 4 - без замут (с объектниками или какими-то типами процессоров) и 5 - с исходниками)
    а пример лично у меня компилится в объектник нормально и в этом варианте и в исходном
    Код (Text):
    1. .586З
    2. .model flat, stdcall
    3. _TEXT segment
    4. foo proc
    5.     xor eax, eax
    6.     ret
    7. foo endp
    8. _TEXT ends
    9. end
     
  17. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.204
    очепятался .586P
     
  18. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.587
    max7C4
    Омг, зачем привилегированный набор инструкций? Автору уж точно нужен не драйвер.
     
  19. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.204
    Great
    это значит любой другой, хоть с привилегированными инструкциями хоть без, на вкус и цвет товарищей нет (а я вообще эти ограничения не понимаю, по мне фасм и юзай че хочешь)
     
  20. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.587
    Я тоже уважаю фасм =) Даешь фасм в массы! :)