сохранение регистров

Тема в разделе "LANGS.C", создана пользователем Quark, 25 окт 2007.

  1. Quark

    Quark New Member

    Публикаций:
    0
    Регистрация:
    7 авг 2007
    Сообщения:
    211
    Можно ли заставить VC сохранять значения всех регистров в функции? если в начале и в конце поставить __asm{ pushad} __asm{popad} можно ли быть уверенным, что компилятор не напортачит со стеком?
     
  2. NickLion

    NickLion А вам зачем

    Публикаций:
    0
    Регистрация:
    19 сен 2006
    Сообщения:
    22
    Адрес:
    Ищите
    Ну вообще-то работать с регистрами ТАК не советую. Безсмысленно, ИМХО, если функция не на асме и не naked. А уж к стеку это совершенно никакого отношения иметь не будет. И еще... КОМПИЛЕР со стеком ничего не портачит - это достаточно стабильная прога, даже не упомню, чтобы у меня компилер падал ;) А если кто-то и портачит, то сама функция! В общем - код в студию, может поможем, чем сможем :)
     
  3. gatman

    gatman New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2006
    Сообщения:
    4
    Нельзя. pushad и popad можно ставить только в блоке:
    __asm {
    pushad
    ...
    popad
    }
    А елси писать так, как ты написал, то в 99% значения изменятся. Вообще компилятор активно использует стек. И никогда нельзя быть увереным, что в стеке в данный момент, кроме случая, когда пишешь в asm блоке
     
  4. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    разговор не о стеке компилятора ;)
     
  5. gatman

    gatman New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2006
    Сообщения:
    4
    ну не знаю, я это так понял
     
  6. gatman

    gatman New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2006
    Сообщения:
    4
    Поправлюсь, я имел ввиду не то, что компилятор использует стек, а то, что он генерирует код, который активно испоьлзует стек, и что невозможно сказать, куда в конкретной строке программы указывает указатель стека
     
  7. Freeman

    Freeman New Member

    Публикаций:
    0
    Регистрация:
    10 фев 2005
    Сообщения:
    1.385
    Адрес:
    Ukraine
    вполне возможно