Deutsch English Français Italiano |
<v2q04f$2amug$1@dont-email.me> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: Richard Harnden <richard.nospam@gmail.invalid> Newsgroups: comp.lang.c++,comp.lang.c Subject: Re: Can you see that D correctly simulated by H remains stuck in recursive simulation? Date: Fri, 24 May 2024 13:10:52 +0100 Organization: A noiseless patient Spider Lines: 50 Message-ID: <v2q04f$2amug$1@dont-email.me> References: <v2ns85$1rd65$1@dont-email.me> Reply-To: richard.harnden@invalid.com MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Injection-Date: Fri, 24 May 2024 14:10:55 +0200 (CEST) Injection-Info: dont-email.me; posting-host="f335a46ed73574a2f2b8200627a25bff"; logging-data="2448336"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1/xH7Xlfvy9hchRZ0IbVP2U87+qhAPfrPs=" User-Agent: Mozilla Thunderbird Cancel-Lock: sha1:gxS5VGFifEzXWHEG7eY+CeHMVLk= Content-Language: en-GB In-Reply-To: <v2ns85$1rd65$1@dont-email.me> Bytes: 2783 On 23/05/2024 17:52, olcott wrote: > typedef int (*ptr)(); // ptr is pointer to int function in C > 00 int H(ptr p, ptr i); > 01 int D(ptr p) > 02 { > 03 int Halt_Status = H(p, p); > 04 if (Halt_Status) > 05 HERE: goto HERE; > 06 return Halt_Status; > 07 } > 08 > 09 int main() > 10 { > 11 H(D,D); > 12 return 0; > 13 } > > The above template refers to an infinite set of H/D pairs where D is > correctly simulated by pure function H. This was done because many > reviewers used the shell game ploy to endlessly switch which H/D was > being referred to. > > *Correct Simulation Defined* > This is provided because every reviewer had a different notion of > correct simulation that diverges from this notion. > > In the above case a simulator is an x86 emulator that correctly emulates > at least one of the x86 instructions of D in the order specified by the > x86 instructions of D. > > This may include correctly emulating the x86 instructions of H in the > order specified by the x86 instructions of H thus calling H(D,D) in > recursive simulation. > > *Execution Trace* > Line 11: main() invokes H(D,D); H(D,D) simulates lines 01, 02, and 03 of > D. This invokes H(D,D) again to repeat the process in endless recursive > simulation. So, you have: main -> H -> D -> H -> D -> ... -> H -> D until you run out of stack? No return statement is ever reached. Line 3 never completes. Halt_Status at line 3 never gets a value. </shrug>