| Deutsch English Français Italiano |
|
<vpqedi$37v45$3@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: olcott <polcott333@gmail.com>
Newsgroups: comp.theory
Subject: Re: The actual code of HHH
Date: Thu, 27 Feb 2025 13:28:51 -0600
Organization: A noiseless patient Spider
Lines: 86
Message-ID: <vpqedi$37v45$3@dont-email.me>
References: <f73c3b97590a4d189e33a2cf255ed3337e56d3cf@i2pn2.org>
<vppdf8$32jp4$1@dont-email.me>
<IHCdnbVJVtETLF36nZ2dnZfqn_SdnZ2d@brightview.co.uk>
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
Injection-Date: Thu, 27 Feb 2025 20:28:51 +0100 (CET)
Injection-Info: dont-email.me; posting-host="a411d0b11a3cdd795023b06d93853175";
logging-data="3406981"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19+Q6fqpZwAHd0iygndikpL"
User-Agent: Mozilla Thunderbird
Cancel-Lock: sha1:3G40vGUBd5QUkMVKoFOFm/MOfvM=
X-Antivirus-Status: Clean
In-Reply-To: <IHCdnbVJVtETLF36nZ2dnZfqn_SdnZ2d@brightview.co.uk>
Content-Language: en-US
X-Antivirus: Norton (VPS 250227-10, 2/27/2025), Outbound message
Bytes: 5401
On 2/27/2025 12:40 PM, Mike Terry wrote:
> 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.
>>
>
> This whole 0x90909090 thing is a bit of a red herring. Best just view
> it as an initial value, so the code that tests for it is looking for a
> "first time through" condition. PO's design needs a single execution
> trace table which is allocated by the outermost HHH, then used by all
> the inner HHHs to send their trace data to the outermost HHH for
> analysis. 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:
>
> #ifdef _WIN32
> __asm nop // The purpose of creating static local memory
> __asm nop // directly in the function body is to make it
> __asm nop // clear that a Turing machine computatation has
> __asm nop // this ability by simply writing to its own tape
> #elif __linux__
> __asm__("nop"); // The purpose of creating static local memory
> __asm__("nop"); // directly in the function body is to make it
> __asm__("nop"); // clear that a Turing machine computatation has
> __asm__("nop"); // this ability by simply writing to its own tape
> #endif
>
> ..and the nop instruction is 0x90, hence the first-through test for
> 0x90909090.
>
> Why did PO use nop instructions here? Well, he has code elsewhere that
> disassembles all the halt7.c functions as part of x86utm.exe output
> listing. That code would expect DATA1/DATA2 to contain valid x86
> instructions or it would choke. The comments in the code above shows
> that he doesn't understand TMs and the concept of code vs data, and the
> fact that a TMs code is not on its tape etc. etc. etc.
>
The machine code of DD emulated according to the behavior
that this machine code specifies cannot possibly reach its
own "ret" instruction and terminate normally.
EVERYTHING ELSE IS A RED HERRING
> I say it's all a red herring, because all the above is exactly
> equivalent to a much simpler (and transparent) use of a static variable
> to hold these global data addresses. Perhaps PO thought that by doing
> it this way he was avoiding the use of mutable static data or whatever.
> Just mentally replace all the lines 1086-1129 with two lines declaring
> 32-bit static pointers! (Don't worry /why/ he did all this or what he
> thought it might achieve...)
>
>
> Mike.
>
--
Copyright 2025 Olcott "Talent hits a target no one else can hit; Genius
hits a target no one else can see." Arthur Schopenhauer