Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: [WinAVR][C++] Что за префиксы в обьектных файлах, напр. "_ZL1....." ?
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему
kurtis
Доброе время суток! smile.gif
Прошу прощения за немного неадекватное название темы....

Возникла небольшая непонятность!
В составе WinAVR-XXXXXX есть замечательная утилита avr-nm, с помощью которой можно "вытащить" символические имена из объектных файлов с указанием их адресов. Но на выходе я получаю что-то вроде такого
Код
......................
00000479 t _ZL10no_iic_str
00000484 t _ZL11no_arch_str
0000048f t _ZL11message_str
......................
или такого
Код
......................
00001f9e t _GLOBAL__I_sec_tik
00001fcc T _ZN2OS7processILNS_9TPriorityE5ELt150EE4ExecEv
000020b0 T _ZN2OS7processILNS_9TPriorityE4ELt150EE4ExecEv
......................


Т.е. меня лично смущают префиксы в названиях переменных, вроде _ZN2, _ZL10 или _GLOBAL__I. Они могут быть произвольными, эти я привел только для примера. Не ко всем переменным приписывается такой префикс.
Я так понимаю что это какая-то служебная информация или что-то вроде того. Только мне не понятно что она значит и как я ее могу использовать, возможно кто-то сможет прояснить ситуацию по этому поводу???
Заранее спасибо! a14.gif
Сергей Борщ
Цитата(kurtis @ Sep 15 2008, 19:13) *
Не ко всем переменным приписывается такой префикс.
Да. Таким образом реализуется переопределение имен (name mangling) в C++. Ищите в опциях nm что-нибудь связанное с Demangle. У objdump есть для этого ключ -C.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.