Доступ из _asm к переменной секция private.

Тема в разделе "LANGS.C", создана пользователем SmanxX1, 26 мар 2009.

  1. SmanxX1

    SmanxX1 Member

    Публикаций:
    0
    Регистрация:
    18 июн 2008
    Сообщения:
    139
    Допустим есть такой класс:
    Код (Text):
    1. class MyClass {
    2. public:
    3.     ....
    4.     void MyFunc();
    5.     ....
    6. private:
    7.     LPVOID m_lpAdr;
    8.     ....
    9. };
    Код (Text):
    1. void MyClass::MyFunc() {
    2.   _asm {
    3.       ...
    4.       mov m_lpAdr, eax;  //<----- Так делать не получается (error C2415: improper operand type)
    5.       ...
    6.   };
    7. }
    Собственно как достучатся до m_lpAdr из asm-вставок?
     
  2. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    попробуй
    mov dword ptr m_lpAdr, eax
    или
    mov dword ptr [m_lpAdr], eax
     
  3. SmanxX1

    SmanxX1 Member

    Публикаций:
    0
    Регистрация:
    18 июн 2008
    Сообщения:
    139
    GoldFinch
    Пробовал уже, то же самое.
    Работает только так:
    Код (Text):
    1. void MyClass::MyFunc() {
    2.    LPVOID lpv=m_lpAdr;
    3.   _asm {
    4.       ...
    5.       mov lpv, eax;  //<----- Так делать не получается (error C2415: improper operand type)
    6.       ...
    7.   };
    8.   m_lpAdr=lpv;
    9. }
    Но это не красиво, и к тому же подобных переменных в приват секции много, к которым нужно обратиться через _asm, не создавать же для каждой еще дополнительные...
     
  4. leo

    leo Active Member

    Публикаций:
    0
    Регистрация:
    4 авг 2004
    Сообщения:
    2.542
    Адрес:
    Russia
    А так ?
    Код (Text):
    1. mov this.m_lpAdr, eax
     
  5. SmanxX1

    SmanxX1 Member

    Публикаций:
    0
    Регистрация:
    18 июн 2008
    Сообщения:
    139
    leo
    Ога, заработало.
    Спасибо.