none
Просьба помочь разобраться в терминах. RRS feed

  • Вопрос

  • Добрый день.

    Опять же для чтения литературы мне нужно понять значение следующих терминов:

    1. "Символы", "Экспортируемые или глобальные символы".

    2. "Экспортируемые и импортируемые функции" библиотеки.

    Заранее спасибо!


    Давайте начнем считать ИТ точной наукой, а не ремеслом, когда каждый делает так, как у него получается. (c)

Ответы

  • Добрый день.
    ---
    1. Конструкции языков программирования используют ключевые слова. Например, while или for для организации циклов.
    В выражениях используются операторы. Например, +.
    Остальное обозначается символами.
    Символы имеют идентификаторы(имена), могут иметь атрибуты(описатели).
    "Экспортируемые или глобальные символы" - символы доступные в среде выполнения программ.
    Примеры.
    Программы в Windows могут получать сообщение WM_PAINT(необходимо перерисовать окно). Это глобальная символьная константа.
    Программы в среде .NET Framework могут использовать вывод строк на консоль. Соответственно, имеются символы Console (класс), WriteLine (член класса). Функция, реализующая вывод строки, будет выбрана по списку аргументов.

    2. Если в библиотеке(статической .lib или динамической .dll), имеются функции для использования в программах - такие функции называются "Экспортируемые функции". В свою очередь, в библиотеке могут быть использованы внешние функции(функции не входящие в состав библиотеки). Такие функции называются "Импортируемые функции".
    Библиотеки содержат таблицы экспорта/импорта функций. Эти таблицы позволяют организовать использование функций в программах (компоновка программ со статическими библиотеками, обращение к функциям динамических библиотек).
    Примеры. Функции Windows API - библиотеки ntdll.dll, kernel32.dll.
    ---
    P.S. Вероятно, Вы читаете специальную литературу. Не знаю, насколько Вам будут полезны мои пояснения.
    Попробуйте дополнительно использовать издания с предметным указателем.
    Могу порекомендовать: Автор - Jose Mojica.
    Язык C#. Разработка Web-приложений на ASP.NET / Xoce Мохика;
    Пер. с англ. А.А. Слинкина. М.:HT Пресс, 2006. (Quick Start)

    • Помечено в качестве ответа Abolmasov Dmitry 13 июня 2011 г. 20:40
    • Снята пометка об ответе ITD27M01 14 июня 2011 г. 5:51
    • Помечено в качестве ответа ITD27M01 15 июня 2011 г. 9:26
    5 июня 2011 г. 14:42

Все ответы

  • Добрый день.
    ---
    1. Конструкции языков программирования используют ключевые слова. Например, while или for для организации циклов.
    В выражениях используются операторы. Например, +.
    Остальное обозначается символами.
    Символы имеют идентификаторы(имена), могут иметь атрибуты(описатели).
    "Экспортируемые или глобальные символы" - символы доступные в среде выполнения программ.
    Примеры.
    Программы в Windows могут получать сообщение WM_PAINT(необходимо перерисовать окно). Это глобальная символьная константа.
    Программы в среде .NET Framework могут использовать вывод строк на консоль. Соответственно, имеются символы Console (класс), WriteLine (член класса). Функция, реализующая вывод строки, будет выбрана по списку аргументов.

    2. Если в библиотеке(статической .lib или динамической .dll), имеются функции для использования в программах - такие функции называются "Экспортируемые функции". В свою очередь, в библиотеке могут быть использованы внешние функции(функции не входящие в состав библиотеки). Такие функции называются "Импортируемые функции".
    Библиотеки содержат таблицы экспорта/импорта функций. Эти таблицы позволяют организовать использование функций в программах (компоновка программ со статическими библиотеками, обращение к функциям динамических библиотек).
    Примеры. Функции Windows API - библиотеки ntdll.dll, kernel32.dll.
    ---
    P.S. Вероятно, Вы читаете специальную литературу. Не знаю, насколько Вам будут полезны мои пояснения.
    Попробуйте дополнительно использовать издания с предметным указателем.
    Могу порекомендовать: Автор - Jose Mojica.
    Язык C#. Разработка Web-приложений на ASP.NET / Xoce Мохика;
    Пер. с англ. А.А. Слинкина. М.:HT Пресс, 2006. (Quick Start)

    • Помечено в качестве ответа Abolmasov Dmitry 13 июня 2011 г. 20:40
    • Снята пометка об ответе ITD27M01 14 июня 2011 г. 5:51
    • Помечено в качестве ответа ITD27M01 15 июня 2011 г. 9:26
    5 июня 2011 г. 14:42
  • Добрый день, ещё раз спасибо за ответ. Второй пункт мне предельно ясен.

    Меня в данный момент интересуют внутренние механизмы ОС Windows и в описании этих механизмов, например, на msdn или в Windows Internals  я встречаю подобного рода термины, описание которых в разных источниках размыты. Указанная вами книга у меня оказалась под рукой и я обязательно просмотрю её указатель.

    Насчёт символов. Для просмотра внутренних труктур Windows используется отладчик например WinDbg и для того, чтобы информация была читабельной, да и вообще выводилась необходимо подключаться к серверу сиволов. Как я понимаю модули компилируются с применением некоторых методов оптимизации и т.п. и символьные сущности заменяются какими-то другими? Вот это бы мне хотелось прояснить.

    Во время чтения возник ступор вот в этом месте:

    "Просмотр имен экспортируемых или глобальных символов в ключевых системных файлах (Ntoskrnl.exe, Hal.dll или Ntdll.dll) может оказаться полезным: вы получите представление о том, что умеет делать Windows в сравнении с документированной и поддерживаемой частью."

    В оригинале также используется термин "symbols".


    Давайте начнем считать ИТ точной наукой, а не ремеслом, когда каждый делает так, как у него получается. (c)
    6 июня 2011 г. 15:45
  • Здравствуйте.

    1. Насчёт символов.
    WinDbg входит в состав DDK. Его используют для отладки кодов, работающих в режиме ядра. Не обязательно подключаться к внешнему серверу, чтобы получить доступ к символьной информации. Читал, что символы в комплекте с отладчиком можно получить по подписке MSDN (требуемый уровень подписки я не знаю).
    2. Насчёт замены символьных сущностей.
    При компиляции программ символы транслируются в машинные коды (символьная информация сохраняется).
    При последующей компоновке:
    в отладочных версиях (Debug) - символьная информация сохраняется;
    в Release версиях  - символьная информация удаляется.
    В случае использования продуктов MS символьную информацию можно сохранить в файлах .pdb (.dbg).
    -----
    Программы, написанные на языках высокого уровня могут переноситься на другие платформы.
    Пример. VS2010, язык С. Можно компилировать для платформы Win7 x86, можно компилировать для платформы Win7 x64.
    После компиляции машинные коды будут разными.
    Программы в среде .NET Framework - трансляция на промежуточный язык MSIL. Компиляция производится на машине пользователя (с учётом установленных версий Framework).
    3. По поводу чтения.
    В Windows существует механизм обращений к функциям в dll с использованем имён (если эти функции экспортируются dll).
    Имеется и другой механизм обращения - без использования имён (ordinal - используется порядковый номер в таблице, функция может не иметь имени).
    Таблицы символов (если Вас интересуют имена и не интересует отладка) проще просматривать с помощью Total Commander (есть plugin для просмотра .ехе и .dll файлов).

  • Ещё маленький вопросик, чтоб у меня всё уложилось в голове. Каким образом сохраняется символьная информация после компиляции?


    Давайте начнем считать ИТ точной наукой, а не ремеслом, когда каждый делает так, как у него получается. (c)
    9 июня 2011 г. 19:22
  • Открой DLL-файл любым текстовым редактором - там обычно в конце, увидишь что-то наподобие таблицы со столбцами: название функции, ее номер, адрес и т.д. Вообще-то DLL-view много, и они есть практически в приличных IDE - например в MS VS 6. Они красиво тебе покажут все функции.

    Экспорт и импорт привязаны к одной вещи. Если ты ее отдаешь она "''экспортируемая", если ты ее забираешь она - "импортируемая

    14 декабря 2011 г. 19:46