Перейти к содержанию

Asm. Интересные факты про ENTER и LEAVE инструкции.


Рекомендуемые сообщения

В отладочном коде частенько вижу инструкцию leave ближе к концу функции. Полез в поиск и узнал, что используется совместно с инструкцией enter, но enter вообще не помню в отладке.

 

Полез в поиск и вот, что узнал. Вместо enter аналог из других инструкций выполняется быстрее.

 

 

Пример. Выполняется за 2 такта

push ebpmov ebp,espsub esp,16leave
 

Пример. Выполняется за 14 тактов

enter 16,0leave
 

Источник

 

------------

Решил скомпилить я следующий код на C#

using UnityEngine;using System.Collections;public class SEH : MonoBehaviour {	int someCount, decCount;	public void OnClickBtn(){		try{			someCount++;		}catch{			decCount--;		}	}}
 

Затем полез в CE и вот они знакомые инструкции

 

04599CD0 - 55                    - push ebp04599CD1 - 8B EC                 - mov ebp,esp04599CD3 - 83 EC 18              - sub esp,1804599CD6 - 8B 45 08              - mov eax,[ebp+08]04599CD9 - 8B 48 10              - mov ecx,[eax+10]04599CDC - 41                    - inc ecx					someCount++;04599CDD - 89 48 10              - mov [eax+10],ecx04599CE0 - EB 31                 - jmp 04599D1304599CE2 - 8B 45 E8              - mov eax,[ebp-18]04599CE5 - 8B 45 08              - mov eax,[ebp+08]04599CE8 - 89 45 EC              - mov [ebp-14],eax04599CEB - 8B 45 EC              - mov eax,[ebp-14]04599CEE - 8B C8                 - mov ecx,eax04599CF0 - 8B 49 14              - mov ecx,[ecx+14]04599CF3 - 49                    - dec ecx					decCount--;04599CF4 - 89 48 14              - mov [eax+14],ecx04599CF7 - E8 C48BFDFF           - call 045728C004599CFC - 89 45 FC              - mov [ebp-04],eax04599CFF - 83 7D FC 00           - cmp dword ptr [ebp-04],0004599D03 - 74 0C                 - je 04599D1104599D05 - 8B 45 FC              - mov eax,[ebp-04]04599D08 - 83 EC 0C              - sub esp,0C04599D0B - 50                    - push eax04599D0C - E8 6770C6FF           - call 04200D7804599D11 - EB 00                 - jmp 04599D1304599D13 - C9                    - leave 04599D14 - C3                    - ret 
Такие дела  :)
Ссылка на комментарий
Поделиться на другие сайты

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.