C & Assembler

Тема в разделе "LANGS.C", создана пользователем Vic, 12 май 2009.

  1. Vic

    Vic New Member

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

    вопрос исключительно технический: программа состоит из двух модулей. Один написан на Си (Dev C++) второй на асме (hutch's masm). Каким образом их собрать в один файл? (вопрос не в синтаксисе, те не в директивах public, extern и не в соглашении о вызовах) а именно в том как связать файлы...
    Dev C++ создает объектные файлы как ".o", пробовал в проект положить файл на асме ".obj", компилятор пишет : "...\Makefile.win [Build Error] No rule to make target `first.o', needed by `second.exe'. Stop. "

    Вообще так можно собирать файлы? Подскажите как разрулить ситуацию?
     
  2. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
    они могут не совпадать форматом, мангленьем, способами передачи параметров на входе и возврате итд. от суффикса объектника тут мало что зависит. ов линкер понимает и умеет связывать кучу всяких форматов + позволяет переименовывать на ходу, но боюсь вы там не разберетесь.

    попробуйте для начала скомпелить С модули вс компелиром и связать с масмовыми модулями мсвс линкером. дальнейшее придет с опытом

    да. масмовый проц использует стдкальную конвенцию
     
  3. barton

    barton New Member

    Публикаций:
    0
    Регистрация:
    19 июл 2008
    Сообщения:
    164
    Адрес:
    Czechoslovakia
    Dev C++ использует gcc, как я помню, так что хз чего ты хочешь добится.
    Можно юзать, например, MS-компиляторы (студия) и fasm (он умеет MSCOFF т.е. obj делать)
     
  4. Microedition

    Microedition Active Member

    Публикаций:
    0
    Регистрация:
    5 июн 2008
    Сообщения:
    814
    gcc c_code.c -o c_code.o
    fasm asm_code.asm asm_code.o

    gcc -o program.exe c_code.o asm_code.o
     
  5. Vic

    Vic New Member

    Публикаций:
    0
    Регистрация:
    12 апр 2008
    Сообщения:
    75
    Microedition
    спасибо, щас скачал fasm разберусь что надо в синтаксисе подправить и попробую твой вариант
     
  6. Vic

    Vic New Member

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

    у меня вызов ассемблерной процедуры из кода на СИ. При запуске команды
    пишет "undefined reference to asm_proc"
     
  7. Vic

    Vic New Member

    Публикаций:
    0
    Регистрация:
    12 апр 2008
    Сообщения:
    75
    =))) спасибо всем , работает, все компилирует и собирает =)

    В общем-то если интересно как все было :
    скомпилировал в ".obj" на masm'e
    c:\masm32\bin\ml /c /coff asm_proc.asm

    и скомпилировал в ".o" на СИ , кстати
    Microedition, поправочка

    - боюсь неверно

    правильно получается при: gcc -c <compile-options> с_proc.c

    далее все как и было подсказано
    Код (Text):
    1. gcc    -o program.exe c_code.o asm_code.o