Эксперимент со стековым фреймом из книги Кип Р. Ирвина

Тема в разделе "WASM.BEGINNERS", создана пользователем meravinkan, 11 янв 2012.

  1. meravinkan

    meravinkan Михаил

    Публикаций:
    0
    Регистрация:
    13 дек 2008
    Сообщения:
    6
    Адрес:
    Нижний Новгород
    Здравствуйте! Объясните пожалуйста, кто может, что обозначает нижеследующее.
    При написании двух вариантов некоторой процедуры с созданием стекового фрейма и сложением в ней двух чисел, во втором варианте кода, в отладчике OllyDbg наблюдаются отличия в окне Дизассемблера, а именно отсутствие команды ret.
    Вариант 1
    Код (Text):
    1. .686
    2. .model flat, stdcall
    3. option casemap:none
    4.  
    5. INCLUDE C:\Masm32\include\kernel32.inc
    6. INCLUDELIB C:\Masm32\lib\kernel32.lib
    7.  
    8. .data
    9.      sum DWORD ?
    10.  
    11. .code
    12.      Start:
    13.            push 6
    14.            push 5
    15.            call AddDigs
    16.            mov sum, eax
    17.  
    18.            INVOKE ExitProcess, 0
    19.  
    20. AddDigs PROC
    21.       push ebp
    22.       mov ebp, esp
    23.  
    24.             mov eax, [esp + 12]
    25.             add eax, [esp + 8]
    26.            
    27.       pop ebp
    28. ret 8
    29. AddDigs ENDP
    30.  
    31. end Start
    Вариант 2 (Добавлена команда mov eax, 3)

    Код (Text):
    1. .686
    2. .model flat, stdcall
    3. option casemap:none
    4.  
    5. INCLUDE C:\Masm32\include\kernel32.inc
    6. INCLUDELIB C:\Masm32\lib\kernel32.lib
    7.  
    8. .data
    9.      sum DWORD ?
    10.  
    11. .code
    12.      Start:
    13.            mov eax, 3
    14.  
    15.            push 6
    16.            push 5
    17.            call AddDigs
    18.            mov sum, eax
    19.  
    20.            INVOKE ExitProcess, 0
    21.  
    22. AddDigs PROC
    23.       push ebp
    24.       mov ebp, esp
    25.  
    26.             mov eax, [esp + 12]
    27.             add eax, [esp + 8]
    28.            
    29.       pop ebp
    30. ret 8
    31. AddDigs ENDP
    32.  
    33. end Start
     
  2. Malfoy

    Malfoy New Member

    Публикаций:
    0
    Регистрация:
    2 янв 2012
    Сообщения:
    698
    remove analysis.
     
  3. Ezrah

    Ezrah Member

    Публикаций:
    0
    Регистрация:
    22 мар 2011
    Сообщения:
    411
    Дело в том, что олли сохраняет некоторую информацию об отлаживаемом файле между сеансами (что, вроде, можно отключить), посему при отладке модифицированного файла зачастую можно столкнуться с проблемами подобными вашей. ПКМ->Remove analysis, как написано выше, решит проблему.
     
  4. meravinkan

    meravinkan Михаил

    Публикаций:
    0
    Регистрация:
    13 дек 2008
    Сообщения:
    6
    Адрес:
    Нижний Новгород
    Большое спасибо! Проблема решена. )