Показать сообщение отдельно
  #1  
Старый 03.09.2012, 12:57
Аватар для M.A.D.M.A.N.
M.A.D.M.A.N. M.A.D.M.A.N. вне форума
Sir Richard Abramson
 
Регистрация: 05.04.2008
Сообщения: 5,505
Версия Delphi: XE10
Репутация: выкл
По умолчанию STATUS_ILLEGAL_INSTRUCTION

При выполнении кода 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 вылезает еще один эксепшн.
Что за мистика?
__________________
— Как тебя понимать?
— Понимать меня не обязательно. Обязательно меня любить и кормить вовремя.


На Delphi, увы, больше не программирую.
Рекомендуемая литература по программированию
Ответить с цитированием