Re: Taking an AST back into C

vbdis@aol.com (VBDis)
13 Dec 2004 02:03:49 -0500

          From comp.compilers

Related articles
[2 earlier articles]
Re: Taking an AST back into C torbenm@diku.dk (2004-12-01)
Re: Taking an AST back into C vbdis@aol.com (2004-12-01)
Re: Taking an AST back into C vbdis@aol.com (2004-12-05)
Re: Taking an AST back into C vbdis@aol.com (2004-12-05)
Re: Taking an AST back into C vbdis@aol.com (2004-12-11)
Re: Taking an AST back into C Martin.Ward@durham.ac.uk (Martin Ward) (2004-12-11)
Re: Taking an AST back into C vbdis@aol.com (2004-12-13)
| List of all articles for this month |
From: vbdis@aol.com (VBDis)
Newsgroups: comp.compilers
Date: 13 Dec 2004 02:03:49 -0500
Organization: AOL Bertelsmann Online GmbH & Co. KG http://www.germany.aol.com
References: 04-12-053
Keywords: decompile
Posted-Date: 13 Dec 2004 02:03:49 EST

Martin Ward <Martin.Ward@durham.ac.uk> schreibt:


>This is not equivalent to the original: in the original code
>htst_irf() is called whenever both adtn1->dsaft and adtn1->hrfft are
>zero. Yours does nothing in that case.


I already sent you my detailed answer. Here the essential parts for
completeness:


You are right, my manual translation was incorrect, it should read:


    if (adtn1->dsaft == 0 && (adtn1->hrfft == 0 || oldgs = 0, hwal() == 0))
                    htst_irf();


The reduction of the expression, resulting in the omission of the
second call to htst_irf (why call???) is based on the placement of the
True and False labels for the if-statement as follows:


                jnz htst_irf_ret
True:
                jmp htst_irf
False:
htst_irf_ret:
                ret


These labels can be interpreted as Then and Else in an If, or as Continue and
Break in a loop, e.g.:


void htst_irf()
{
    do { whatever_not_listed_before_no_pick; }
    while (adtn1->dsaft == 0 && (adtn1->hrfft == 0 || oldgs = 0, hwal() == 0));
}




> Also, your code never executes the assignment hwal_zf = hwal().


I couldn't find such an assignment in your assembly code?


DoDi


Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.