Локальные переменные

Тема в разделе "WASM.BEGINNERS", создана пользователем Entropy, 5 июл 2026.

  1. Entropy

    Entropy Member

    Публикаций:
    0
    Регистрация:
    23 авг 2020
    Сообщения:
    290
    Можно конечно не обращать не какого внимания на эту рутинную вещь,возникает вопрос зачем из регистра ESP вычитать размер локальных переменных,и что будет если этого не сделать,и начать размещать значения по отрицательному смещению регистра ebp

    Код (ASM):
    1.  
    2. push ebp
    3. mov ebp,esp
    4.  
    5. sub esp,120  ; <----- а если это не делать ?
    6.  
    7. mov byte ptr [ebp-120],255
    8.  
     
  2. Prober

    Prober Member

    Публикаций:
    0
    Регистрация:
    4 дек 2008
    Сообщения:
    56
    Например, чтобы инструкции PUSH/POP, которые присутствуют внутри практически любой процедуры, не лезли в локальные переменные.
     
  3. Ahimov

    Ahimov Active Member

    Публикаций:
    0
    Регистрация:
    14 окт 2024
    Сообщения:
    756
    Entropy,

    Следы как заметать - двигаться не к ним, а от них, иначе наследите сзади..
    Область стека < его дна общая в cfg. Общий буфер проще говоря. Отсюда следует необходимость атомарного переключения двух компонент(86) => загрузка селектора(ss) маскирует прерывания, позволив загрузить вторую адресную компоненту - указатель стека(sp).
     
    Mikl___ нравится это.
  4. Entropy

    Entropy Member

    Публикаций:
    0
    Регистрация:
    23 авг 2020
    Сообщения:
    290
    Prober, получается что операнд после интрукции PUSH сохраняется за локальными переменными
    --- Сообщение объединено, 9 июл 2026 ---
    Ahimov, так дно стёка это старшие адреса или младшие ? ,например адреса стека: 30a0h-30ffh, 30a0h - младший адрес , 30ffh - старший адрес