Liste des Groupes | Revenir à c theory |
On 7/4/2024 8:26 AM, joes wrote:Why does main calling HHH create a new "process context" that isn't what CALL Instructions do.Am Thu, 04 Jul 2024 07:46:15 -0500 schrieb olcott:You simply lack sufficient technical competence of these thingsOn 7/4/2024 5:15 AM, joes wrote:What x86 semantics say that HHH can’t return?Am Wed, 03 Jul 2024 09:45:57 -0500 schrieb olcott:On 7/3/2024 9:39 AM, joes wrote:I repeat.Am Wed, 03 Jul 2024 08:21:40 -0500 schrieb olcott:On 7/3/2024 3:26 AM, Fred. Zwarts wrote:Which semantics?Op 02.jul.2024 om 21:48 schreef olcott:On 7/2/2024 2:22 PM, Fred. Zwarts wrote:Op 02.jul.2024 om 20:43 schreef olcott:On 7/2/2024 1:59 AM, Mikko wrote:On 2024-07-01 12:44:57 +0000, olcott said:On 7/1/2024 1:05 AM, Mikko wrote:On 2024-06-30 17:18:09 +0000, olcott said:>
Richard just said that he affirms that when DDD correctly
simulated by HHH calls HHH(DDD) that this call returns even
though the semantics of the x86 language disagrees.
>Yes, and nothing else. So when HHH returns, so does DDD.By definition DDD calls its simulator.HHH halts by definition. Why can’t DDD?As long as it is impossible for DDD correctly emulated by HHH to reachDDD correctly emulated by HHH calls an emulated HHH(DDD) thatBut HHH aborts, so the cycle does end.
emulates DDD that calls an emulated HHH(DDD)
in a cycle that cannot end unless aborted.
its own ret instruction then DDD never halts even when its stops
running because its emulation was aborted.
>
*Machine address 00002174 of DDD is never reached*
I am using an x86 emulator with decades of development effort.
_DDD()
[00002163] 55 push ebp
[00002164] 8bec mov ebp,esp
[00002166] 6863210000 push 00002163 ; push DDD
[0000216b] e853f4ffff call 000015c3 ; call HHH(DDD)
[00002170] 83c404 add esp,+04
[00002173] 5d pop ebp
[00002174] c3 ret
Size in bytes:(0018) [00002174]
_main()
[00002183] 55 push ebp
[00002184] 8bec mov ebp,esp
[00002186] 6863210000 push 00002163
[0000218b] e833f4ffff call 000015c3
[00002190] 83c404 add esp,+04
[00002193] 33c0 xor eax,eax
[00002195] 5d pop ebp
[00002196] c3 ret
Size in bytes:(0020) [00002196]
machine stack stack machine assembly
address address data code language
======== ======== ======== ========= =============
[00002183][001037dd][00000000] 55 push ebp
[00002184][001037dd][00000000] 8bec mov ebp,esp
[00002186][001037d9][00002163] 6863210000 push 00002163
[0000218b][001037d5][00002190] e833f4ffff call 000015c3
New slave_stack at:103881 ; *create a different process context*
Begin Local Halt Decider Simulation Execution Trace Stored at:113889
[00002163][00113879][0011387d] 55 push ebpAnd calling HHH(DDD) doesn't create a new process context either, it calls the function HHH which is what should be traced here.
[00002164][00113879][0011387d] 8bec mov ebp,esp
[00002166][00113875][00002163] 6863210000 push 00002163 ; push DDD
[0000216b][00113871][00002170] e853f4ffff call 000015c3 ; call HHH(DDD)
New slave_stack at:14e2a9 ; *create a different process context*
[00002163][0015e2a1][0015e2a5] 55 push ebpSo, by playing the shell games and mixing up three different program context that exists you confused yourself in beleiving your own lies.
[00002164][0015e2a1][0015e2a5] 8bec mov ebp,esp
[00002166][0015e29d][00002163] 6863210000 push 00002163 ; push DDD
[0000216b][0015e299][00002170] e853f4ffff call 000015c3 ; call HHH(DDD)
Local Halt Decider: Infinite Recursion Detected Simulation Stopped
[00002190][001037dd][00000000] 83c404 add esp,+04
[00002193][001037dd][00000000] 33c0 xor eax,eax
[00002195][001037e1][00000018] 5d pop ebp
[00002196][001037e5][00000000] c3 ret
Number of Instructions Executed(10066) == 150 Pages
Les messages affichés proviennent d'usenet.