Deutsch   English   Français   Italiano  
<vpufjb$4ucu$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!eternal-september.org!.POSTED!not-for-mail
From: Mikko <mikko.levanto@iki.fi>
Newsgroups: comp.theory
Subject: Re: The actual code of HHH
Date: Sat, 1 Mar 2025 10:13:31 +0200
Organization: -
Lines: 105
Message-ID: <vpufjb$4ucu$1@dont-email.me>
References: <f73c3b97590a4d189e33a2cf255ed3337e56d3cf@i2pn2.org> <vppdf8$32jp4$1@dont-email.me> <IHCdnbVJVtETLF36nZ2dnZfqn_SdnZ2d@brightview.co.uk> <69ea9e900ed4aa9b3325b011a95dde1c2b5fd69e@i2pn2.org> <lf-cnWK8e7fTiVz6nZ2dnZfqnPidnZ2d@brightview.co.uk> <vpr5le$3bvlg$1@dont-email.me> <c8e04c99badc0d6fe5176e67a327e95073b2d324@i2pn2.org> <vptosu$3st19$16@dont-email.me>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Date: Sat, 01 Mar 2025 09:13:31 +0100 (CET)
Injection-Info: dont-email.me; posting-host="3c2cdfc6a621b8df7395d6a65111664f";
	logging-data="162206"; mail-complaints-to="abuse@eternal-september.org";	posting-account="U2FsdGVkX1/ep1XNzLdrBqzx9qwB1/3V"
User-Agent: Unison/2.2
Cancel-Lock: sha1:ASPg7jvRSKvUnzCu64obyUSXWTQ=
Bytes: 5948

On 2025-03-01 01:46:06 +0000, olcott said:

> On 2/28/2025 8:30 AM, Richard Damon wrote:
>> On 2/27/25 9:05 PM, olcott wrote:
>>> On 2/27/2025 7:41 PM, Mike Terry wrote:
>>>> On 27/02/2025 21:07, joes wrote:
>>>>> Am Thu, 27 Feb 2025 18:40:14 +0000 schrieb Mike Terry:
>>>>>> On 27/02/2025 10:06, Mikko wrote:
>>>>>>> On 2025-02-26 21:52:31 +0000, joes said:
>>>>>>> 
>>>>>>>> Since there is so much talk around, but not really about it,
>>>>>>>> let's take a look:
>>>>>>>> https://github.com/plolcott/x86utm/blob/
>>>>>>>> 48b4cbfeb3f486507276a5fc4e9b10875ab24dbf/Halt7.c#L1081 In line 1137,
>>>>>>>> we compute a flag:
>>>>>>>> u32 Root = Init_Halts_HH(&Aborted, &execution_trace, &decoded,
>>>>>>>> &code_end,
>>>>>>>> (u32)P, &master_state, &slave_state, &slave_stack);
>>>>>>>> In line 918, we find it basically checks for the magic number
>>>>>>>> **execution_trace==0x90909090. What is this unexplained value?
>>>>>>> 
>>>>>>> The variable execution_trace is a pointer to a pointer to a 32 bit
>>>>>>> unsigned int. The function Init_Halts_HH may update the pointer
>>>>>>> *execution_trace or the number **execution_trace. The special value
>>>>>>> 0x90909090, when interpreted as a fragment of a program, means four no
>>>>>>> operation instructions. That many no operation instructions is not used
>>>>>>> in the compiled code so it can be used as a speial value where
>>>>>>> otherwise instrunctions generated by the compiler are expected.
>>>>> Thank you.
>>>>> 
>>>>>> Given this design, the inner HHHs must not allocate another
>>>>>> trace table.  Also they skip the abort analysis logic, making their
>>>>>> simulated code behaviour different from the outermost HHH.
>>>>> ^
>>>>> 
>>>>>> Why 0x90909090?  When you look at the HHH code, you probably wonder "WTF
>>>>>> is all this DATA1, DATA2 and related assembler stuff for?"  The answer
>>>>>> is it's not really for anything useful!  It was just some experiment PO
>>>>>> was conducting at some point to show to himself that the code of HHH
>>>>>> could update itself if it wanted to.  The DATA1/DATA2 areas hold the
>>>>>> direct addresses to global data areas like the execution trace table.
>>>>>> PO initialises them with:
>>>>> So the memory is garbage before and doesn't get updated afterwards?
>>>> 
>>>> No, the DATA1/DATA2 memory is part of the program /code/ of HHH, 
>>>> initialised to NOP instructions. Also there are similar areas in the 
>>>> variation functions HHH1 and so on.
>>>> 
>>>> Normally if you're writing C code and you need a static variable you 
>>>> would write e.g.
>>>> 
>>>> u32 HHH(ptr P)
>>>> {
>>>>    u32* Aborted;
>>>>    static u32* execution_trace = NULL;  /* <===== */
>>>>    u32  End_Of_Code;
>>>>    ..
>>>>    if (execution_trace == NULL)
>>>>    { /* first time (outer HHH) */
>>>>      execution_trace = Allocate (sizeof(Decoded_Line_Of_Code) * 10000);
>>>>    }
>>>>    ...
>>>> }
>>>> 
>>>> Done this way, execution_trace is naturally in the program /data/ 
>>>> segment, not the /code/ segment. Initialising it to NULL is natural and 
>>>> I think the default anyway for static data.  PO could disassemble HHH 
>>>> function without encountering the null bytes as code.  But instead he 
>>>> wants the DATA1 /code/ text to contain the Allocated memory address, 
>>>> and DATA1 is part of the /code/ segment so he initialises it to NOPs to 
>>>> avoid problems disassembling it.  He sets execution_trace to point to 
>>>> DATA1 introducing an extra level of redirection everywhere it's used, 
>>>> in case you were wondering about extra * appearing in the code in 
>>>> various places.  :)  The DATA1 is later updated with the pointer from 
>>>> Allocate() but that is done indirectly via **execution_trace = ... 
>>>> (note extra *)
>>>> 
>>>> Mike.
>>>> 
>>>> 
>>> 
>>> My idea of all of this is that a TM could do this same
>>> sort of thing. The outer TM knows its own tape and
>>> allocates a portion of this tape to slave instance of
>>> itself. Each instance of these TM's thinks that a single
>>> execution_trace belongs to itself alone.
>> 
>> A TM Could not do the same sort of thing,
> 
> Mike has already agreed that a TM that is a UTM
> can examine every aspect of the internals of its
> slave UTMs.
> 
> None of the details of HOW HHH determines that
> its finite string input specifies non terminating
> behavior is relevant UNTIL AFTER IT IS UNDERSTOOD THAT
> ITS FINITE STRING INPUT SPECIFIES NON TERMINATING BEHAVIOR.

Understanding is not relevant. A proof would be if there were one.
As long as there is none it is sufficient to say that the claim is
unproven.

-- 
Mikko