При выполнении кода try finally но только в асме, возникает ошибка STATUS_ILLEGAL_INSTRUCTION.
Код
Код:
014C0000 E801000000 call $014c0006
014C0005 C3 ret
014C0006 55 push ebp
014C0007 89E5 mov ebp,esp
014C0009 31C0 xor eax,eax
014C000B 55 push ebp
014C000C 682B004C01 push $014c002b
014C0011 64FF30 push dword ptr fs:[eax]
014C0014 648920 mov fs:[eax],esp
014C0017 CC int 3 ; внутри try
014C0018 31C0 xor eax,eax
014C001A 8B00 mov eax,[eax]
014C001C 31C0 xor eax,eax
014C001E 5A pop edx
014C001F 59 pop ecx
014C0020 59 pop ecx
014C0021 648910 mov fs:[eax],edx
014C0024 6836004C01 push $014c0036
014C0029 CC int 3 ; finally
014C002A C3 ret
014C002B FF2519004B01 jmp dword ptr [$014b0019] ; system.@HandleException
014C0031 E9F3FFFFFF jmp $014c0029
014C0036 89EC mov esp,ebp
014C0038 5D pop ebp
014C0039 C3 ret
При исполнении этого кода, например в процедуре нажатия кнопки, все ок, при выполнении в выделенном куске памяти вылетает ошибка STATUS_ILLEGAL_INSTRUCTION. Валится при отработке исключения, т.е. оно как бы обрабатывается, но вместо того, чтоб прыгнуть в finally вылезает еще один эксепшн.
Что за мистика?