Сохранение контекста

Тема в разделе "LANGS.C", создана пользователем SysProger, 18 сен 2008.

  1. SysProger

    SysProger New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2007
    Сообщения:
    127
    Существует ли функция в turbo c++, которая сохраняет/восстанавливает регистры и флаги не в стеке, а в локальной переменной?
     
  2. censored

    censored New Member

    Публикаций:
    0
    Регистрация:
    5 июл 2005
    Сообщения:
    1.615
    Адрес:
    деревня "Анонимные Прокси"
    А локальная переменная разве не в стеке?
     
  3. SysProger

    SysProger New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2007
    Сообщения:
    127
    так локальная переменная может находиться не на вершине стека.
     
  4. Ursus

    Ursus Member

    Публикаций:
    0
    Регистрация:
    15 мар 2006
    Сообщения:
    238
    Адрес:
    Russia
    Аффтар, сформулируй точнее, чего надо.
    Локальные переменные ВСЕГДА располагаются в стеке (регистровые не в счет).

    Как я понял, GetThreadContext()/SetThreadContext() - то, что тебе нужно.
     
  5. SysProger

    SysProger New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2007
    Сообщения:
    127
    GetThreadContext()/SetThreadContext() - WinAPI. А мне нужно написать программу в DOS :) Читай внимательнее тему. Проблема такая:
    Код (Text):
    1. asm
    2. {
    3.     mov ax,1
    4. }
    Error: Undefined symbol mov

    А насчёт стека я просто хотел узнать, есть ли функция, которая помещает контекст в _указанное_ место стека, т.е. в локальную переменную, а не на вершину.
     
  6. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    а как узнать где подходящее "место стека"?
     
  7. SysProger

    SysProger New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2007
    Сообщения:
    127
    это моё дело
     
  8. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    перефразирую, как ты собираешься это место указывать? esp+xx? 0xXXXX?
     
  9. SysProger

    SysProger New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2007
    Сообщения:
    127
    нет, просто укажу, в какую переменную сохранять. Да это не так уж и важно. Скажите лучше, что делать с ошибкой "Undefined symbol 'mov'"? Что-то нет ответов, может отдельную тему создать?
     
  10. DEEP

    DEEP Андрей

    Публикаций:
    0
    Регистрация:
    27 апр 2008
    Сообщения:
    491
    Адрес:
    г. Владимир
    SysProger
    Мне сильно подозрительственно, что Вам нужно юзать вот такие операторные скобки:

    Код (Text):
    1. __asm
    2. {
    3. }
     
  11. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    чтобы тогда не написать на асме чтото вроде

    lea eax,[buf]
    xchg esp,eax
    pusha
    pushf
    xchg esp,eax
     
  12. J0E

    J0E New Member

    Публикаций:
    0
    Регистрация:
    28 июл 2008
    Сообщения:
    621
    Адрес:
    Panama
    setjmp
     
  13. ECk

    ECk Member

    Публикаций:
    0
    Регистрация:
    9 апр 2004
    Сообщения:
    454
    Адрес:
    Russia
    AddressOfReturnAddress - intrinsic function - рулёзная вещь между прочим