Liste des Groupes | Revenir à c theory |
Am Thu, 25 Jul 2024 23:25:59 -0500 schrieb olcott:That does not matter. As long as we understand that Mike is correct about this:On 7/25/2024 10:35 PM, Mike Terry wrote:On 26/07/2024 01:53, olcott wrote:On 7/25/2024 4:03 PM, Mike Terry wrote:On 25/07/2024 14:56, olcott wrote:On 7/24/2024 10:29 PM, Mike Terry wrote:On 23/07/2024 14:31, olcott wrote:On 7/23/2024 1:32 AM, 0 wrote:On 2024-07-22 13:46:21 +0000, olcott said:On 7/22/2024 2:57 AM, Mikko wrote:On 2024-07-21 13:34:40 +0000, olcott said:On 7/21/2024 4:34 AM, Mikko wrote:On 2024-07-20 13:11:03 +0000, olcott said:On 7/20/2024 3:21 AM, Mikko wrote:On 2024-07-19 14:08:24 +0000, olcott said:(b) We know that a decider is not allowed to report on theNo, we don't. There is no such prohibition.
behavior computation that itself is contained within.Therefore It is not allowed to report on its own behavior.Anyway, that does not follow. The theory of Turing machines does
not prohibit anything.I don't see how the outside use of a function can influence it.In this case we have two x86utm machines that are identical except
that DDD calls HHH and DDD does not call HHH1.
Thanks, Mike, for the detailed analysis.OK great, we are making headway.It is empirically proven according to the semantics of the x86Perhaps your actual code does behave differently!
machine code of DDD that DDD correctly emulated by HHH has different
behavior than DDD correctly emulated by HHH1.
How is the trace passed?The questions are:>
a) are HHH and HHH1 "identical copies", in the TM machine sense of
incorporating
the algorithm of one TM inside another TM? (As Linz
incorporates H inside H^, meaning that the behaviours of H
and embedded_H MUST be identical for any input.)
[You claim HHH and HHH1 /are/ proper copies, and yet give
different results for input (D), which is impossible.]
They are identical in the that have identical x86 machine code except
for the x86 quirk that function calls are to a relative rather than
absolute address. So when HHH calls the same function that HHH1 calls
the machine code is not the same. The only other case where the
machine code of HHH1 and HHH is not identical is the way for slave
instances of HHH to pass its execution trace up to the master.
The relative addressing is to be expected as a difference, and is fineThere never is any actual bug with the simulation.
provided the actual target is the same. [Which it seems to be...]
The whole thing with the slave instances might well be where the bug
lies! That would be slightly funny, as I pointed out that problem on
some completely unrelated post, and this could be a follow-on issue
where it has caused observable misbehavior in the code. (Needs a bit
more investigation...)
>
I bet my nonexistent soul that there are bugs left in libx86. ApartThat is irrelevant. We can see by the execution trace of
from that, your use of the library may be buggy.
Although it seems that I have been correct all along about the idea
that slave instances can pass their execution trace up to the master
without breaking computability this is not the way it has been
actually encoded.
How is it coded?That does not matter as long as we understand that this:
The problem is that the code itself has already answered this questionYou may have said it 500 times, but it doesn't answer my question!b) If the two behaviours HHH/HHH1 are indeed different, WHATDDD calls HHH(DDD) in recursive simulation and does not call HHH1(DDD)
precisely is the coding
difference that accounts for that different behaviour?
(Like, with your H/H1 the
difference was that H used H's address as part of its
algorithm, while H1 used H1's address.)
in recursive simulation.
500 times in three years and people just ignore it.
When DDD emulated by HHH calls HHH(DDD) this call cannot possibly
return. When DDD emulated by HHH1 calls HHH(DDD) this call DOES return.
But whyyy?(a) Because people so stupidly assume that I must be wrong that
No, 2+3 = 3+2. You have two copies of the same function that behaveLook, here is a rough sketch of the two traces side by side just doneAnd by your same reasoning 2 + 3 shouldn't = 5.
by hand:
So HHH/HHH1 behaviour is different, but shouldn't be if HHH1 is a
correct copy of HHH.
differently. How is that possible?Try to find one x86 instruction that is emulated incorrectly.Can you please point us to where they diverge?_DDD()
[00002177] 55 push ebp
[00002178] 8bec mov ebp,esp
[0000217a] 6877210000 push 00002177 ; push DDD
[0000217f] e853f4ffff call 000015d7 ; call HHH
[00002184] 83c404 add esp,+04
[00002187] 5d pop ebp
[00002188] c3 ret
Maybe you think that push 00002177 should jmp 00002188?Well that's correct [lines 6,9,12] - but it's irrelevant, because IT'SIn other words you are totally incompetent with the x86 language or
THE SAME ON BOTH SIDES ABOVE. Both HHH/HHH1 simulate DDD [line 4] and
BOTH of those simulations call HHH in recursive simulation, so BOTH
SIDES MUST HAVE THE SAME BEHAVIOUR.
disagree with this language.
_DDD()
[00002177] 55 push ebp
[00002178] 8bec mov ebp,esp
[0000217a] 6877210000 push 00002177 ; push DDD
[0000217f] e853f4ffff call 000015d7 ; call HHH
>
DDD emulated by HHH endlessly repeats as if it was infinite recursion
such that DDD emulated by HHH cannot possibly reach past 0000217f no
matter what HHH does.
I thought HHH aborts?DDD correctly emulated by HHH exactly matches the following
Les messages affichés proviennent d'usenet.