|
From: Bonian Z. <zha...@gm...> - 2008-09-02 16:49:17
|
When I look at the IR Generated by valgrind, I find that there are many PUT(60) Instructions, which stands for modifying EIP. Most instructions including them are movs and branchs. Anyone could tell me what are these PUT(60)s does? And If IR-NoOp doesn't do anything, why it appeared in the ir list? Thank you! |
|
From: Nuno L. <nun...@is...> - 2008-09-02 18:11:54
|
It's not a no-op :-) Those PUT(60) are needed in order to keep the virtualized machine state up-to-date. The optimizer will also remove most useless PUTs. The reason behind this is that if e.g. the code accesses some protected memory address the process will segfault and then valgrind has to know which of the original (i.e. from the program that you are running on top of valgrind) instructions caused the problem, so that it can pinpoint the problem down to the source code file/line. Nuno ----- Original Message ----- > When I look at the IR Generated by valgrind, I find that there are many > PUT(60) Instructions, which stands for modifying EIP. Most instructions > including them are movs and branchs. Anyone could tell me what are these > PUT(60)s does? > > And If IR-NoOp doesn't do anything, why it appeared in the ir list? > > Thank you! |
|
From: Julian S. <js...@ac...> - 2008-09-02 21:00:41
|
And the reason IR-NoOp appears is because it was originally something else, but was removed during IR optimisation. J On Tuesday 02 September 2008, Nuno Lopes wrote: > It's not a no-op :-) > Those PUT(60) are needed in order to keep the virtualized machine state > up-to-date. The optimizer will also remove most useless PUTs. > The reason behind this is that if e.g. the code accesses some protected > memory address the process will segfault and then valgrind has to know > which of the original (i.e. from the program that you are running on top of > valgrind) instructions caused the problem, so that it can pinpoint the > problem down to the source code file/line. > > Nuno > > > ----- Original Message ----- > > > When I look at the IR Generated by valgrind, I find that there are many > > PUT(60) Instructions, which stands for modifying EIP. Most instructions > > including them are movs and branchs. Anyone could tell me what are these > > PUT(60)s does? > > > > And If IR-NoOp doesn't do anything, why it appeared in the ir list? > > > > Thank you! > > ------------------------------------------------------------------------- > This SF.Net email is sponsored by the Moblin Your Move Developer's > challenge Build the coolest Linux based applications with Moblin SDK & win > great prizes Grand prize is a trip for two to an Open Source event anywhere > in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ > _______________________________________________ > Valgrind-developers mailing list > Val...@li... > https://lists.sourceforge.net/lists/listinfo/valgrind-developers |