On 2/27/2025 3:26 AM, Fred. Zwarts wrote:
Op 27.feb.2025 om 00:09 schreef olcott:
On 2/26/2025 3:52 PM, joes wrote:No, it is correct to report that HHH is unable to correctly simulate
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?
We then pass the saved flag in line 1143:
if (Decide_Halting_HH(&Aborted, &execution_trace, &decoded,
code_end, End_Of_Code, &master_state, &slave_state, &slave_stack,
Root)),
defined in line 1030.
Then we get a switch:
1059 if (Root) // Master UTM halt decider
Line 1070 is then conditionally skipped:
Needs_To_Be_Aborted_HH((Decoded_Line_Of_Code*)**execution_trace);
defined in line 1012, which (on a jmp or call instruction) calls
u32 Needs_To_Be_Aborted_Trace_HH(Decoded_Line_Of_Code* execution_trace, >>>> Decoded_Line_Of_Code *current)
in line 964, where the abort logic lives. (It basically triggers
on a call or jump to itself.)
So we only abort depending on the address of the execution trace.
This makes no sense. Why is that?
DD emulated by HHH according to the behavior that the x86
machine code of DD cannot possibly terminate normally thus
HHH is infallibly correct to report that this DD emulated
by HHH (not any other DD in the whole freaking universe)
is not-terminating.
this halting program up to its end.
In other words you are totally clueless that infinite
recursion HAS NO END.
Am Thu, 27 Feb 2025 18:40:14 +0000 schrieb Mike Terry:
On 27/02/2025 10:06, Mikko wrote:Thank you.
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.
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 "WTFSo the memory is garbage before and doesn't get updated afterwards?
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:
..and the nop instruction is 0x90, hence the first-through test forThat was the bit I'm missing.
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.
On 2/27/2025 1:12 PM, Fred. Zwarts wrote:
Op 27.feb.2025 om 16:29 schreef olcott:
On 2/27/2025 3:26 AM, Fred. Zwarts wrote:In other words Olcott is dreaming again of an infinite recursion,
Op 27.feb.2025 om 00:09 schreef olcott:
On 2/26/2025 3:52 PM, joes wrote:No, it is correct to report that HHH is unable to correctly simulate
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?
We then pass the saved flag in line 1143:
if (Decide_Halting_HH(&Aborted, &execution_trace, &decoded,
code_end, End_Of_Code, &master_state, &slave_state, &slave_stack,
Root)),
defined in line 1030.
Then we get a switch:
1059 if (Root) // Master UTM halt decider
Line 1070 is then conditionally skipped:
Needs_To_Be_Aborted_HH((Decoded_Line_Of_Code*)**execution_trace);
defined in line 1012, which (on a jmp or call instruction) calls
u32 Needs_To_Be_Aborted_Trace_HH(Decoded_Line_Of_Code*
execution_trace,
Decoded_Line_Of_Code *current)
in line 964, where the abort logic lives. (It basically triggers
on a call or jump to itself.)
So we only abort depending on the address of the execution trace.
This makes no sense. Why is that?
DD emulated by HHH according to the behavior that the x86
machine code of DD cannot possibly terminate normally thus
HHH is infallibly correct to report that this DD emulated
by HHH (not any other DD in the whole freaking universe)
is not-terminating.
this halting program up to its end.
In other words you are totally clueless that infinite
recursion HAS NO END.
where it has been proven by the direct execution that the aborting HHH
has no infinite recursion. It HAS AN END! Dreams are no substitute for
logic.
It is flat out dishonest to change the subject away
from DD emulated by HHH.
On 2/27/2025 1:15 PM, Fred. Zwarts wrote:
Op 27.feb.2025 om 19:55 schreef olcott:
On 2/27/2025 3:26 AM, Fred. Zwarts wrote:I never said that there is an infinite recursion.
Op 27.feb.2025 om 00:09 schreef olcott:
On 2/26/2025 3:52 PM, joes wrote:No, it is correct to report that HHH is unable to correctly simulate
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?
We then pass the saved flag in line 1143:
if (Decide_Halting_HH(&Aborted, &execution_trace, &decoded,
code_end, End_Of_Code, &master_state, &slave_state, &slave_stack,
Root)),
defined in line 1030.
Then we get a switch:
1059 if (Root) // Master UTM halt decider
Line 1070 is then conditionally skipped:
Needs_To_Be_Aborted_HH((Decoded_Line_Of_Code*)**execution_trace);
defined in line 1012, which (on a jmp or call instruction) calls
u32 Needs_To_Be_Aborted_Trace_HH(Decoded_Line_Of_Code*
execution_trace,
Decoded_Line_Of_Code *current)
in line 964, where the abort logic lives. (It basically triggers
on a call or jump to itself.)
So we only abort depending on the address of the execution trace.
This makes no sense. Why is that?
DD emulated by HHH according to the behavior that the x86
machine code of DD cannot possibly terminate normally thus
HHH is infallibly correct to report that this DD emulated
by HHH (not any other DD in the whole freaking universe)
is not-terminating.
this halting program up to its end.
That you do not comprehend that infinite recursion
DOES NOT END is your ignorance.
It seems that you simply lack sufficient technical
competence to understand these things.
On 2/27/2025 3:26 AM, Fred. Zwarts wrote:
Op 27.feb.2025 om 00:09 schreef olcott:
On 2/26/2025 3:52 PM, joes wrote:No, it is correct to report that HHH is unable to correctly simulate
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?
We then pass the saved flag in line 1143:
if (Decide_Halting_HH(&Aborted, &execution_trace, &decoded,
code_end, End_Of_Code, &master_state, &slave_state, &slave_stack, Root)), >>>> defined in line 1030.
Then we get a switch:
1059 if (Root) // Master UTM halt decider
Line 1070 is then conditionally skipped:
Needs_To_Be_Aborted_HH((Decoded_Line_Of_Code*)**execution_trace);
defined in line 1012, which (on a jmp or call instruction) calls
u32 Needs_To_Be_Aborted_Trace_HH(Decoded_Line_Of_Code* execution_trace, >>>> Decoded_Line_Of_Code *current)
in line 964, where the abort logic lives. (It basically triggers
on a call or jump to itself.)
So we only abort depending on the address of the execution trace.
This makes no sense. Why is that?
DD emulated by HHH according to the behavior that the x86
machine code of DD cannot possibly terminate normally thus
HHH is infallibly correct to report that this DD emulated
by HHH (not any other DD in the whole freaking universe)
is not-terminating.
this halting program up to its end.
In other words you are totally clueless that infinite
recursion HAS NO END.
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:Thank you.
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.
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 wonderSo the memory is garbage before and doesn't get updated afterwards?
"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:
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.
In any case this is all totally moot until one understands
that DD correctly simulated by HHH and
Ĥ.q0 ⟨M⟩ ⊢* embedded_H ⟨M⟩ ⟨M⟩ ⊢* Ĥ.qy ∞
Ĥ.q0 ⟨M⟩ ⊢* embedded_H ⟨M⟩ ⟨M⟩ ⊢* Ĥ.qn
Linz ⟨Ĥ⟩ correctly simulated by Linz Ĥ.embedded_H
specify non terminating behavior to their termination
analyzer partial halt decider.
On 2/28/2025 3:16 AM, Mikko wrote:
On 2025-02-27 15:29:31 +0000, olcott said:
No, it is correct to report that HHH is unable to correctly simulate
this halting program up to its end.
In other words you are totally clueless that infinite
recursion HAS NO END.
Do you mean that having no end enables the simulation to the end?
see my new post
DD emulated by HHH cannot possibly terminate normally --- x86 code
DD()
[00002133] 55 push ebp ; housekeeping
[00002134] 8bec mov ebp,esp ; housekeeping
[00002136] 51 push ecx ; make space for local
[00002137] 6833210000 push 00002133 ; push DD
[0000213c] e882f4ffff call 000015c3 ; call HHH(DD)
[00002141] 83c404 add esp,+04
[00002144] 8945fc mov [ebp-04],eax
[00002147] 837dfc00 cmp dword [ebp-04],+00
[0000214b] 7402 jz 0000214f
[0000214d] ebfe jmp 0000214d
[0000214f] 8b45fc mov eax,[ebp-04]
[00002152] 8be5 mov esp,ebp
[00002154] 5d pop ebp
[00002155] c3 ret
Size in bytes:(0035) [00002155]
When we hypothesize that the code at machine address
0000213c is an x86 emulator then we know that DD
remains stuck in recursive emulation and cannot possibly
reach its own "ret" instruction and terminate normally.
When we add the additional complexity that HHH also
aborts this sequence at some point then every level
of recursive emulation immediately stops. This does
not enable any DD to ever reach its "ret" instruction.
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:Thank you.
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.
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 "WTFSo the memory is garbage before and doesn't get updated afterwards?
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:
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.
On 2/28/2025 2:36 AM, Fred. Zwarts wrote:
Op 27.feb.2025 om 22:42 schreef olcott:
It is flat out dishonest to change the subject away
from DD emulated by HHH.
It is flat out incorrect to suggest that this DD is a different one.
There is only one finite string, describing only one behaviour.
It is a verified fact that the directly executed DD has a
different execution trace than DD emulated by HHH.
People try to get away with saying this is wrong are dumbfounded
when I challenge them to provide the correct execution trace
of DD emulated by HHH.
_DD()
[00002133] 55 push ebp ; housekeeping
[00002134] 8bec mov ebp,esp ; housekeeping
[00002136] 51 push ecx ; make space for local [00002137] 6833210000 push 00002133 ; push DD
[0000213c] e882f4ffff call 000015c3 ; call HHH(DD)
[00002141] 83c404 add esp,+04
[00002144] 8945fc mov [ebp-04],eax
[00002147] 837dfc00 cmp dword [ebp-04],+00
[0000214b] 7402 jz 0000214f
[0000214d] ebfe jmp 0000214d
[0000214f] 8b45fc mov eax,[ebp-04]
[00002152] 8be5 mov esp,ebp
[00002154] 5d pop ebp
[00002155] c3 ret
Size in bytes:(0035) [00002155]
It is perfectly fine to say that you just don't understand
that. What is terribly wrong is for you to know that you
don't understand that and claim that I am incorrect.
When we hypothesize that the code at machine address
0000213c is an x86 emulator then we know that DD
remains stuck in recursive emulation and cannot possibly
reach its own "ret" instruction and terminate normally.
On 2/28/2025 2:36 AM, Fred. Zwarts wrote:Yes, HHH emulates DD verifiably incorrect.
Op 27.feb.2025 om 22:42 schreef olcott:
It is flat out incorrect to suggest that this DD is a different one.It is a verified fact that the directly executed DD has a different
There is only one finite string, describing only one behaviour.
execution trace than DD emulated by HHH.
People try to get away with saying this is wrong are dumbfounded when I challenge them to provide the correct execution trace of DD emulated byIt is the trace of HHH1 emulating DD (where DD calls HHH).
HHH.
When we hypothesize that the code at machine address 0000213c is an x86 emulator then we know that DD remains stuck in recursive emulation andHHH is not an emulator though.
cannot possibly reach its own "ret" instruction and terminate normally.
When we add the additional complexity that HHH also aborts this sequenceYes it does, because HHH returns to DD.
at some point then every level of recursive emulation stops. This does
not enable any DD to ever reach its "ret" instruction.
If this is beyond your technical competence THAT DOES NOT MAKE ME WRONGThat this is beyond your technical competence does not make you right.
On 2/28/2025 2:36 AM, Fred. Zwarts wrote:
Op 27.feb.2025 om 22:42 schreef olcott:
It is flat out dishonest to change the subject away
from DD emulated by HHH.
It is flat out incorrect to suggest that this DD is a different one.
There is only one finite string, describing only one behaviour.
It is a verified fact that the directly executed DD has a
different execution trace than DD emulated by HHH.
People try to get away with saying this is wrong are dumbfounded
when I challenge them to provide the correct execution trace
of DD emulated by HHH.
_DD()
[00002133] 55 push ebp ; housekeeping
[00002134] 8bec mov ebp,esp ; housekeeping
[00002136] 51 push ecx ; make space for local [00002137] 6833210000 push 00002133 ; push DD
[0000213c] e882f4ffff call 000015c3 ; call HHH(DD)
[00002141] 83c404 add esp,+04
[00002144] 8945fc mov [ebp-04],eax
[00002147] 837dfc00 cmp dword [ebp-04],+00
[0000214b] 7402 jz 0000214f
[0000214d] ebfe jmp 0000214d
[0000214f] 8b45fc mov eax,[ebp-04]
[00002152] 8be5 mov esp,ebp
[00002154] 5d pop ebp
[00002155] c3 ret
Size in bytes:(0035) [00002155]
It is perfectly fine to say that you just don't understand
that. What is terribly wrong is for you to know that you
don't understand that and claim that I am incorrect.
When we hypothesize that the code at machine address
0000213c is an x86 emulator then we know that DD
remains stuck in recursive emulation and cannot possibly
reach its own "ret" instruction and terminate normally.
When we add the additional complexity that HHH also
aborts this sequence at some point then every level
of recursive emulation stops. This does not enable
any DD to ever reach its "ret" instruction.
If this is beyond your technical competence
THAT DOES NOT MAKE ME WRONG
On 3/1/2025 2:10 AM, Mikko wrote:
On 2025-03-01 01:16:41 +0000, olcott said:
On 2/28/2025 3:16 AM, Mikko wrote:
On 2025-02-27 15:29:31 +0000, olcott said:
No, it is correct to report that HHH is unable to correctly
simulate this halting program up to its end.
In other words you are totally clueless that infinite
recursion HAS NO END.
Do you mean that having no end enables the simulation to the end?
see my new post
DD emulated by HHH cannot possibly terminate normally --- x86 code
In that post:
DD()
[00002133] 55 push ebp ; housekeeping
[00002134] 8bec mov ebp,esp ; housekeeping
[00002136] 51 push ecx ; make space for local
[00002137] 6833210000 push 00002133 ; push DD
[0000213c] e882f4ffff call 000015c3 ; call HHH(DD)
[00002141] 83c404 add esp,+04
[00002144] 8945fc mov [ebp-04],eax
[00002147] 837dfc00 cmp dword [ebp-04],+00
[0000214b] 7402 jz 0000214f
[0000214d] ebfe jmp 0000214d
[0000214f] 8b45fc mov eax,[ebp-04]
[00002152] 8be5 mov esp,ebp
[00002154] 5d pop ebp
[00002155] c3 ret
Size in bytes:(0035) [00002155]
When we hypothesize that the code at machine address
0000213c is an x86 emulator then we know that DD
remains stuck in recursive emulation and cannot possibly
reach its own "ret" instruction and terminate normally.
When we add the additional complexity that HHH also
aborts this sequence at some point then every level
of recursive emulation immediately stops. This does
not enable any DD to ever reach its "ret" instruction.
The question remains unanswered. If the author cannot tell what he
means we may assume that he didn't mean anything.
Your question applied to my ambiguous verbiage.
I cancel that ambiguous verbiage and say that
DD emulated by HHH cannot possibly reach its
own "ret" instruction.
On 3/1/2025 2:10 AM, Mikko wrote:
On 2025-03-01 01:16:41 +0000, olcott said:
On 2/28/2025 3:16 AM, Mikko wrote:
On 2025-02-27 15:29:31 +0000, olcott said:
No, it is correct to report that HHH is unable to correctly simulate >>>>>> this halting program up to its end.
In other words you are totally clueless that infinite
recursion HAS NO END.
Do you mean that having no end enables the simulation to the end?
see my new post
DD emulated by HHH cannot possibly terminate normally --- x86 code
In that post:
DD()
[00002133] 55 push ebp ; housekeeping
[00002134] 8bec mov ebp,esp ; housekeeping
[00002136] 51 push ecx ; make space for local
[00002137] 6833210000 push 00002133 ; push DD
[0000213c] e882f4ffff call 000015c3 ; call HHH(DD)
[00002141] 83c404 add esp,+04
[00002144] 8945fc mov [ebp-04],eax
[00002147] 837dfc00 cmp dword [ebp-04],+00
[0000214b] 7402 jz 0000214f
[0000214d] ebfe jmp 0000214d
[0000214f] 8b45fc mov eax,[ebp-04]
[00002152] 8be5 mov esp,ebp
[00002154] 5d pop ebp
[00002155] c3 ret
Size in bytes:(0035) [00002155]
When we hypothesize that the code at machine address
0000213c is an x86 emulator then we know that DD
remains stuck in recursive emulation and cannot possibly
reach its own "ret" instruction and terminate normally.
When we add the additional complexity that HHH also
aborts this sequence at some point then every level
of recursive emulation immediately stops. This does
not enable any DD to ever reach its "ret" instruction.
The question remains unanswered. If the author cannot tell what he
means we may assume that he didn't mean anything.
Your question applied to my ambiguous verbiage.
I cancel that ambiguous verbiage and say that
DD emulated by HHH cannot possibly reach its
own "ret" instruction.
On 3/1/2025 7:14 PM, Richard Damon wrote:
On 3/1/25 5:02 PM, olcott wrote:
On 3/1/2025 2:10 AM, Mikko wrote:
On 2025-03-01 01:16:41 +0000, olcott said:
On 2/28/2025 3:16 AM, Mikko wrote:
On 2025-02-27 15:29:31 +0000, olcott said:
No, it is correct to report that HHH is unable to correctly
simulate this halting program up to its end.
In other words you are totally clueless that infinite
recursion HAS NO END.
Do you mean that having no end enables the simulation to the end?
see my new post
DD emulated by HHH cannot possibly terminate normally --- x86 code
In that post:
DD()
[00002133] 55 push ebp ; housekeeping
[00002134] 8bec mov ebp,esp ; housekeeping
[00002136] 51 push ecx ; make space for local >>>>> [00002137] 6833210000 push 00002133 ; push DD
[0000213c] e882f4ffff call 000015c3 ; call HHH(DD)
[00002141] 83c404 add esp,+04
[00002144] 8945fc mov [ebp-04],eax
[00002147] 837dfc00 cmp dword [ebp-04],+00
[0000214b] 7402 jz 0000214f
[0000214d] ebfe jmp 0000214d
[0000214f] 8b45fc mov eax,[ebp-04]
[00002152] 8be5 mov esp,ebp
[00002154] 5d pop ebp
[00002155] c3 ret
Size in bytes:(0035) [00002155]
When we hypothesize that the code at machine address
0000213c is an x86 emulator then we know that DD
remains stuck in recursive emulation and cannot possibly
reach its own "ret" instruction and terminate normally.
When we add the additional complexity that HHH also
aborts this sequence at some point then every level
of recursive emulation immediately stops. This does
not enable any DD to ever reach its "ret" instruction.
The question remains unanswered. If the author cannot tell what he
means we may assume that he didn't mean anything.
Your question applied to my ambiguous verbiage.
I cancel that ambiguous verbiage and say that
DD emulated by HHH cannot possibly reach its
own "ret" instruction.
Which is just a strawman, proving that you are just a fraud.
I don't have time left to talk in circles
DD emulated by HHH cannot possibly reach its
own "ret" instruction.
Anything else STFU about it.
Sysop: | Keyop |
---|---|
Location: | Huddersfield, West Yorkshire, UK |
Users: | 546 |
Nodes: | 16 (2 / 14) |
Uptime: | 02:50:01 |
Calls: | 10,387 |
Calls today: | 2 |
Files: | 14,061 |
Messages: | 6,416,755 |