Path: ...!3.eu.feeder.erje.net!feeder.erje.net!weretis.net!feeder8.news.weretis.net!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: Mikko Newsgroups: comp.theory Subject: Re: Everyone here seems to consistently lie about this Date: Mon, 5 Aug 2024 10:23:52 +0300 Organization: - Lines: 68 Message-ID: References: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit Injection-Date: Mon, 05 Aug 2024 09:23:53 +0200 (CEST) Injection-Info: dont-email.me; posting-host="bbfb59f828059e193a33ed558dfca0d5"; logging-data="601816"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX1+fv9Pvrt0FkBfOmr36X0qR" User-Agent: Unison/2.2 Cancel-Lock: sha1:sgAnrZ79smkdFMn3gT1sTo5vnuI= Bytes: 2903 On 2024-08-04 12:30:26 +0000, olcott said: > On 8/4/2024 1:11 AM, Fred. Zwarts wrote: >> Op 03.aug.2024 om 17:01 schreef olcott: >>> On 8/3/2024 9:54 AM, Fred. Zwarts wrote:>>> >>>> Talking nonsense does not hide you problem. I don't disagree with that >>>> semantics. >>>> It is HHH that deviates from the semantics of the x86 language by >>>> skipping the last few instructions of a halting program, changing its >>>> behaviour in this way. >>> >>> There are no last few instructions of any halting program >>> that DDD correctly emulated by HHH skips. >> >> Why substituting facts by dreams? >> DDD halts when HHH halts. HHH skips tte last cycle of the simulated >> HHH,after which it would return to DDD, which would then return too. >> >>> >>> Within the semantics of C and the semantics of the x86 >>> language (thus specifying a correct simulation) the call >>> to HHH(DDD) from the simulated DDD cannot possibly return. >>> >> >> Indeed, that is why it is incorrect. > > Would the call from DDDD to ExecuteInput(DDDD) return? > > // This is ordinary C and I compiled and ran it. > > typedef void (*ptr)(); > > void ExecuteInput(ptr x) > { > x(); > } > > void DDDD() > { > ExecuteInput(DDDD); > return; > } > > int main() > { > ExecuteInput(DDDD); > } Most likely it will abort or clrash for stack overflow. A compiler may detect that the functions have no side effects and no return value and traslate them as void DDDD() { reurn; } or, if it also detects that there is a indirect infinite recursion, as void DDDD() { LOOP: goto LOOP; } but your compiler doesn't think so much. -- Mikko