Sujet : Re: DD emulated by HHH cannot possibly terminate normally --- x86 code
De : mikko.levanto (at) *nospam* iki.fi (Mikko)
Groupes : comp.theoryDate : 01. Mar 2025, 09:22:09
Autres entêtes
Organisation : -
Message-ID : <vpug3h$50td$1@dont-email.me>
References : 1
User-Agent : Unison/2.2
On 2025-03-01 00:47:58 +0000, olcott said:
_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.
The emulator itself is stuck and cannot return normally but it doesn't
know it cannot return normally. At some point it runs out of memory
and terminates normally or abnormally.
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.
When we add an additional complexity we must note that there are other
additional complexities that could be added instead.
-- Mikko