Как представить функцию в виде графа ?

Тема в разделе "WASM.WIN32", создана пользователем Charlief, 25 фев 2012.

  1. Charlief

    Charlief New Member

    Публикаций:
    0
    Регистрация:
    17 авг 2010
    Сообщения:
    129
    Начал читать книгу Сэджвик Р. Фундаментальные алгоритмы на С++.Алгоритмы на графах.
    Сразу возник вопрос о применении графов для анализа кода.

    И собственно вопрос по теме: как представить в виде графа, для примера, логику работы функции memchr ? Анализ её ассемблерного кода не нужен, так как из описания можно заключить что она сравнивает содержимое буфера побайтно с входным символом. Нужна модель. Что будет узлами что рёбрами, входом выходом и т.д. ? Вобщем чувствую голова взорвётся.
    Код (Text):
    1. char *memchr(buf,c,cnt);
    2.                char *buf;                 Указатель на буфер
    3.                int c;                     Копируемый символ
    4.                unsigned cnt;              Количество символов
    5.            
    6.                Описание.
    7.            
    8.                Функция memchr находит первые cnt байтов из buf с целью об-
    9.          наружения первого появления символа c. Поиск продолжается до  тех
    10.          пор, пока не будет найден указанный символ или не будут проверены
    11.          все cnt байтов.
    12.            
    13.                Возвращаемое значение.
    14.            
    15.                Функция memchr возвращает указатель на расположение символа
    16.          c  в  buf.  Если  символ c не будет обнаружен в первых cnt байтах
    17.          buf, возвращается NULL.
     
  2. Charlief

    Charlief New Member

    Публикаций:
    0
    Регистрация:
    17 авг 2010
    Сообщения:
    129
    В голову приходит пока что представить работу функции в виде обычной блоксхемы с ромбиками и прямоугольниками. Только вот думаю что будет узлом а что ветвью - либо состояние переменной либо операции инкремента-декремента-сравнения. И цикл присутствует.
    Есть хоть какое-нибудь чтиво по такой теме ?
     
  3. _DEN_

    _DEN_ DEN

    Публикаций:
    0
    Регистрация:
    8 окт 2003
    Сообщения:
    5.383
    Адрес:
    Йобастан
    Charlief

    На кой фиг это вообще надо? Для анализа нет смысла детализировать вплоть до каждой функции. Достаточно построить граф data/control-flow, чтобы на графе была продемонстрирована алгоритмическая сложность. Нужность более детального расписывания на графах/схемах очень сомнительна.