Liste des Groupes | Revenir à c theory |
On 8/30/2024 3:32 AM, Fred. Zwarts wrote:Not according to the unmodified world calls simulator, which, when given the same input shows that the DDD based on the aborting HHH, halts.Op 29.aug.2024 om 23:13 schreef olcott:*This is before any aborting occurs*>>
One cannot simply ignore the actual behavior of DDD emulated
by HHH according to the semantics of the x86 language because
this actual behavior is not the behavior that one expects or
one would like to have.
You cannot deny the semantics of the x86 language simply because you do not like it, or you prefer another behaviour.
The specification of the semantics of the x86 language does not give room for a context depending interpretation. It is independent on which processor, or which simulator processes this finite string.
>
*This is before any aborting occurs*
*This is before any aborting occurs*
The behavior of
the directly executed DDD and executed HHH
is different from the behavior of
the emulated DDD and the emulated HHH
and all four of them are emulated by the worldAnd after a few recursions HHH sees a 'special condition' after which it aborts and halt. This abort takes place before the simulated HHH would see the same 'special condition' after which it would abort and halt.
class x86 emulator libx86emu
It is easy to see that when the executed HHH emulates
DDD that it does this correctly when we look at the
execution trace and see the the first four instructions
of DDD are listed.
_DDD()
[00002172] 55 push ebp ; housekeeping
[00002173] 8bec mov ebp,esp ; housekeeping
[00002175] 6872210000 push 00002172 ; push DDD
[0000217a] e853f4ffff call 000015d2 ; call HHH(DDD)
[0000217f] 83c404 add esp,+04
[00002182] 5d pop ebp
[00002183] c3 ret
Size in bytes:(0018) [00002183]
New slave_stack at:1038c4
Begin Local Halt Decider Simulation Execution Trace Stored at:1138cc
[00002172][001138bc][001138c0] 55 push ebp ; housekeeping
[00002173][001138bc][001138c0] 8bec mov ebp,esp ; housekeeping
[00002175][001138b8][00002172] 6872210000 push 00002172 ; push DDD
[0000217a][001138b4][0000217f] e853f4ffff call 000015d2 ; call HHH(DDD)
New slave_stack at:14e2ec
[00002172][0015e2e4][0015e2e8] 55 push ebp ; housekeeping
[00002173][0015e2e4][0015e2e8] 8bec mov ebp,esp ; housekeeping
[00002175][0015e2e0][00002172] 6872210000 push 00002172 ; push DDD
[0000217a][0015e2dc][0000217f] e853f4ffff call 000015d2 ; call HHH(DDD)
Local Halt Decider: Infinite Recursion Detected Simulation Stopped
Then this emulated DDD calls an emulated HHH(DDD).
It is easy to see that when the executed HHH emulates
itself emulated DDD that it does this correctly when we
look at the execution trace and see the the first four
instructions of DDD are listed again.
Les messages affichés proviennent d'usenet.