[MinGW] формат символа C++ функции

Тема в разделе "LANGS.C", создана пользователем Rel, 9 янв 2011.

  1. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.321
    собираю проект с помощью MinGW и Yasm... по соглашению, в проекте используется С++ манера именования функций... то есть, написанные на ассемблере функции должны иметь метки формата C++ имени в хедере... в msvc - все просто, создаю такую функцию, потом линкер ее не находит и выводит ее "украшенное" имя, которое я уже подставляю в метку в асм-файле... линкер MinGW выводит функцию в таком виде, в каком она указана в хедере... вопрос: как определить украшенное имя функции в MinGW?))
     
  2. Damon

    Damon New Member

    Публикаций:
    0
    Регистрация:
    14 мар 2010
    Сообщения:
    23
    В принципе, nm.exe из поставки MinGW'а, примененный к скомпилированному объектному файлу, показывает все символы, и те, что экспортируются и те, что требуются для успешной линковки. Т.ч., можете попробовать поискать в полученном листинге замангленное название вашей внешней асм ф-ции.
    Man по nm, собственно.

    Только немного не понятен подобный изврат с именами. Собственно для этого и существует 'extern "C"' директива компилятора...

    Объясните сакральный смысл сего действа, если не трудно. :)
     
  3. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.321
    да, спасибо! помогло...

    ну это специфика проекта... когда разрабатываешь проект один - то само собой делаешь, как тебе удобно... но когда вливаешься в тим-проект, то нужно следовать установленным для проекта стандартам, хоть особого значения этот стандарт может и не иметь...
     
  4. Damon

    Damon New Member

    Публикаций:
    0
    Регистрация:
    14 мар 2010
    Сообщения:
    23
    Основная проблема подобного подхода в том, что нет однозначного соответствия между названием ф-ции в хидере и асм коде, по этому, тому кто после будет разбирать код, можно только посочувствовать. В прочем, gcc, вроде как, может генерить map-файлы, с указанием чего куда и откуда включал. Неплохой повод заставить человека выучить мат часть! :)

    Но нецензурных выражений ( в свой адрес ), тоже можно будет выучить не мало! :derisive: