Инструмент для выявления сходства в логике между функциями C и C ++ - PullRequest
3 голосов
/ 26 июня 2010

Есть ли в Linux / Windows инструмент, который позволил бы нам определить, совпадает ли логика конкретной функции в C с логикой конкретной функции в C ++?

Ответы [ 4 ]

11 голосов
/ 26 июня 2010

В общем случае эквивалентность машин Тьюринга составляет неразрешимо , поэтому нет.

1 голос
/ 27 июня 2010

Можно представить инструмент, который сравнивает структуру AST с после того, как компилятор выполнил первоначальное преобразование в абстрактное представление или после одного или нескольких проходов оптимизации.

Это, вероятно,

  1. Пропустить некоторые реальные совпадения (т.е. генерировать ложные негативы)
  2. Определить некоторые фиктивные совпадения (т.е. генерировать ложные срабатывания)

При настройке вы можете вызвать второедело быть более распространенным.Я не чувствую, насколько хорошо было бы быть полезным для использования в качестве интерфейса для vgrep процесса.

Но это становится еще хуже, потому что вы просите перекрестныйязыковая реализация, и это сделает сложнее.Тем не менее, gcc использует одно и то же абстрактное представление для всего, так что это не за гранью воображения.

Тем не менее, я не знаю такого инструмента.

1 голос
/ 26 июня 2010

Если вы просто говорите о структурах управления, if / else, блоках кода, swtich / case, while, for и т. Д. И если вы хотите быть в состоянии принять «получить хорошее представление об этом», а не На 100% точнее, тогда картинка может работать на тысячу слов, и вы можете взглянуть на код программы для потоковой диаграммы.

Я не буду рекомендовать их, так как не знаю их достаточно хорошо (но всегда хотел их опробовать, особенно, если туда и обратно. Найти что-то бесплатно может быть нелегко. В общем, вы увидите как то так ... альтернативный текст http://www.ezprog.com/wp-content/uploads/flowchart.gif

это то, что у вас есть разум? Сделайте это для версий как C, так и C ++, и вы получите грубое представление о сходстве логики.

Возможно, вы можете рассказать нам немного больше о том, что именно вы ищете? Помогите нам помочь вам? Спасибо.

0 голосов
/ 26 июня 2010

Я думаю, что есть такой инструмент, который называется листинг сборки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...