базонезависимый код в msvc2008

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

  1. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    компилю следующую прогу в msvc2008
    Код (Text):
    1. #pragma comment(linker,"/entry:main")
    2. int x=1;
    3. __declspec(naked) int main()
    4. {
    5.     __asm {
    6.         call base
    7. base:    pop eax
    8.         sub eax,offset base
    9.         mov eax,[eax+offset x]
    10.         ret
    11.     }
    12. }
    вместо mov eax,[eax+offset x] компилится mov eax,offset x

    что делать?
     
  2. Forever

    Forever Виталий

    Публикаций:
    0
    Регистрация:
    12 апр 2008
    Сообщения:
    244
    Попробуй отключить оптимизацию что-ли.
     
  3. GoldFinch

    GoldFinch New Member

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

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    эм... оказывается если написать без "offset" то все компилится как надо, т.е.
    mov eax,[eax+offset x] компилится в mov eax,offset x
    а
    mov eax,[eax+x] компилится в mov eax,[eax+offset x]