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

Discussion in 'LANGS.C' started by SysProger, Sep 18, 2008.

  1. SysProger

    SysProger New Member

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

    censored New Member

    Blog Posts:
    0
    Joined:
    Jul 5, 2005
    Messages:
    1,615
    Location:
    деревня "Анонимные Прокси"
    А локальная переменная разве не в стеке?
     
  3. SysProger

    SysProger New Member

    Blog Posts:
    0
    Joined:
    Jul 18, 2007
    Messages:
    127
    так локальная переменная может находиться не на вершине стека.
     
  4. Ursus

    Ursus Member

    Blog Posts:
    0
    Joined:
    Mar 15, 2006
    Messages:
    238
    Location:
    Russia
    Аффтар, сформулируй точнее, чего надо.
    Локальные переменные ВСЕГДА располагаются в стеке (регистровые не в счет).

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

    SysProger New Member

    Blog Posts:
    0
    Joined:
    Jul 18, 2007
    Messages:
    127
    GetThreadContext()/SetThreadContext() - WinAPI. А мне нужно написать программу в DOS :) Читай внимательнее тему. Проблема такая:
    Code (Text):
    1. asm
    2. {
    3.     mov ax,1
    4. }
    Error: Undefined symbol mov

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

    GoldFinch New Member

    Blog Posts:
    0
    Joined:
    Mar 29, 2008
    Messages:
    1,775
    а как узнать где подходящее "место стека"?
     
  7. SysProger

    SysProger New Member

    Blog Posts:
    0
    Joined:
    Jul 18, 2007
    Messages:
    127
    это моё дело
     
  8. GoldFinch

    GoldFinch New Member

    Blog Posts:
    0
    Joined:
    Mar 29, 2008
    Messages:
    1,775
    перефразирую, как ты собираешься это место указывать? esp+xx? 0xXXXX?
     
  9. SysProger

    SysProger New Member

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

    DEEP Андрей

    Blog Posts:
    0
    Joined:
    Apr 27, 2008
    Messages:
    491
    Location:
    г. Владимир
    SysProger
    Мне сильно подозрительственно, что Вам нужно юзать вот такие операторные скобки:

    Code (Text):
    1. __asm
    2. {
    3. }
     
  11. GoldFinch

    GoldFinch New Member

    Blog Posts:
    0
    Joined:
    Mar 29, 2008
    Messages:
    1,775
    чтобы тогда не написать на асме чтото вроде

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

    J0E New Member

    Blog Posts:
    0
    Joined:
    Jul 28, 2008
    Messages:
    621
    Location:
    Panama
    setjmp
     
  13. ECk

    ECk Member

    Blog Posts:
    0
    Joined:
    Apr 9, 2004
    Messages:
    454
    Location:
    Russia
    AddressOfReturnAddress - intrinsic function - рулёзная вещь между прочим