Karthik Balaguru
Karthik Balaguru

Reputation: 7852

Tool to identify the similarities in logic between a function of C and C++

Is there a tool in either Linux/Windows that would enable us to determine if a logic of the particular function in C is same as that of a particular function in C++ ?

Upvotes: 3

Views: 299

Answers (4)

You can imagine a tool that compares the structure of ASTs after the compiler has done the initial conversion to abstract representation or after one of more optimization passes.

This would probably

  1. Miss some real matches (i.e. generate false negatives)
  2. Identify some bogus matches (i.e. generate false positives)

With tuning you could force the second case to be more common. I have no feel for how good it would have to be to be useful as a front end to a vgrep process.

But it get worse, because you've asking for a cross-language implementation, and that will make it harder. Still, gcc uses the same abstract representation for everything, so it is not beyond imagining.

That said, I know of no such tool.

Upvotes: 1

fredoverflow
fredoverflow

Reputation: 263270

In general, the equivalence of Turing machines is undecidable, so no.

Upvotes: 11

Paul Richter
Paul Richter

Reputation: 6311

I think there is such a tool, called an assembly listing.

Upvotes: -1

Mawg
Mawg

Reputation: 40185

If you are just talking of control structures, if/else, blocks of code, swtich/case, while, for, etc AND if you are willing to be able to accept "gettign a good feel for it", rather than 100% accuray, then a picture may be work a thousand words, and you might look at a code to flowchart program.

I won't recommend any, as I don't know them well enough (but have always wanted to try them out, espcially if round trip. It might not be easy to find something free. In general, you will see something like this ... alt text http://www.ezprog.com/wp-content/uploads/flowchart.gif

is that what you have is mind? Do it for both C and C++ versions, and you can get a rough feel for similarity of logic.

Perhaps you can tell us a little more what exactly you are looking for? Help us to help you? Thanks.

Upvotes: 1

Related Questions