Liste des Groupes | Revenir à c theory |
On 8/12/24 2:25 PM, olcott wrote:PO's rule is that there must be no conditional branch instructions *WITHIN DDD*. Conditional branch instructions in HHH are simulated, and with suitable compilation options [I think it is the TRACE_USER_CODE_ONLY pre-processing symbol that needs to be undefined] those instructions will also be LOGGED. Well, you're seeing the result of that on page 79 of the PDF file.On 8/12/2024 1:16 PM, Richard Damon wrote:First a few comments about this file.On 8/12/24 1:32 PM, olcott wrote:On 8/12/2024 12:12 PM, Richard Damon wrote:YOU don't understand the rules of the x86 code, or don't care if you are wrong, as NOTHING in the x86 language allows the leaving of the direct exectuion thread and into showing the code the simulator being simulated is simulating. The ONLY correct answer is showing it doing the simulating.>
>
I showed the first four lines of this code
highlighted in red and you ignored it.
https://liarparadox.org/HHH(DDD)_Full_Trace.pdf
It has clearlly changed over time without notice, you said you added highlighting, but it also has had content changes.
It really needs to be date-stamped and version controlled. I can not say if the copy I look at today is the same as I looked at the other day.
Second, it is NOT the trace you keep on claiming but is the trace that x86UTM makes of running main, with the trace that the levels of HHH do inserted (WITHOUT COMMENT) into the listing, making the trace that HHH generats hard to find.
The length of the wrong trace starts on page 38, so there are only about 160 pages of trace (the rest is an assembly listing of the program, useful to understand the trace, but not part of the trace itself) and there are only 1 to 2 lines from HHH per page, so a trace of just what HHH does would be only about 200-300 LINES long, not 200 pages, and not beyond what many people can handle, especially when you remove the cruft of having to wade through all the other junk that isn't the trace that HHH makes.
There are also clearly functions that are not even correctly listed in the assembly listings, nor traced, that seem to be hooks to make OS calls. That isn't totally unreasonable, but not clearly marked as such.
Looking closer, I may have gotten confused by the changing file by the same name>>
No, you ignored my comments.
>
First, that isn't a trace generated by HHH emulating DDD, but by x86UTM emulating HHH, so your claim is just a type error.
>
Then when I look at this emulation, we see that HHH *ONLY* emulates those first 4 instructions of HHH and no more,
That is counter factual.
I do see the simulation continuing into HHH, but ...
One thing I do note is that the trace sees conditional jump instructions in the trace, but your "rule" is that there can be no conditional instructions see in the full loop, so something is wrong.
One instruction I see is:
Page 79, simulated the JNZ 00001335 at address 000012f8
Why wasn't this counted as a conditional instruction in the trace?
(That means the recursion isn't unconditional)
So, mybe it is a correct partial emulation, but just ignores some of the meaning, so that conditional recursion is incorrectly considered to be infinite recursion. Perhaps you just failed to test you code to see that it correctly detects conditional jump instructions.You are quite right on both those points. The result is HHH's simulation of DDD does not match the external running of DDD, so the simulation is a incorrect - not so much because of a failure to emulate a specific instruction, but because what is being simulated is not actually the proper DDD code /and data/. [Specifically, the data being simulated is wrong - static variables are not in their correct state and so on.]
Note, examining your code, your code also VIOLATES your requirement to be a pure functikon.
First, in Init_Halts_HH you detect if you are the "root" decider by look to see it the stack is at the initial prefilled value, and if so make yourself the "root" and setup a trace buffer, and record that we are the "Root"
Then in Decides_Halting_HH you test that Root flag, and only the "Root" decider actually does halt deciding, thus the copy of HHH that DDD calls performs a DIFFERENT set of actions to the ones that the one called by main does.
Les messages affichés proviennent d'usenet.