STRUCT Структуры

Тема в разделе "WASM.WIN32", создана пользователем calidus, 18 мар 2009.

  1. calidus

    calidus Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    618
    Вопрос состоит в том чтобы разместить структуру в секции .code , ранее переменные находились в структуре в дата , и программа все отлично выполняла и работала , теперь же , если разместить структуру в коде начинаются проблемы. Кто сталкивался с размещением структур в секции кода ? Одна из проблем например компиляция кода , компилится все супер а в демаге такой вот код ...

    Код (Text):
    1.  mov dword ptr [ecx], ebx
    2.  add REG.r_EIP, 4
    3. popad
    4.  jmp @exit
    и вот он какой
    Код (Text):
    1. 0040148D    8919            MOV DWORD PTR DS:[ECX],EBX
    2. 0040148F    8305 00000000 0>ADD DWORD PTR DS:[0],4
    3. 00401496    61              POPAD
    Собственно выравнивание пробовал делать , и много чего пробовал не выходит. Подскажите что за проблема такая ? Заранее спасибо.
     
  2. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    calidus
    А она у тебя в секции кода ?
    Наверно ты её в .data и оставил.. Ну в любом случае явно сегмент укажи в инструкции, например так:
    mov dword ptr cs:[ecx],ebx
    Кстати не забудь что в сегмент кода нельзя писать, только читать(если у тебя Cs = 0x18 | 0x3).
     
  3. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    calidus Наверное, ты чо-то не то делаешь.

    Код (Text):
    1. REG struct
    2. r_eax dd ?
    3. r_ebx dd ?
    4. r_esp dd ?
    5. r_eip dd ?
    6. REG ends
    7.    
    8. .code
    9. start:
    10.  
    11. jmp @f
    12. rg REG  <0>
    13. @@:
    14. mov rg.r_esp, esp
    15. ret
    16. end start
     
  4. calidus

    calidus Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    618
    Aspire
    Да вот в том то и дело что как ты сделал , так у меня и есть примерно. Смысл логика таже
     
  5. calidus

    calidus Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    618
    Clerk
    У меня стоят права на запись , а вот с идеей явно указать в код сегмент , чето не допер) ..Попробую отпишусь что вышло. Сэнкс
     
  6. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    Да не может быть. У меня то все работает. Скомпиль мой пример и посмотри.
     
  7. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Для страницы наверное.. а нужно в дескрипторе. Наверно будет падать на исключении, если ты по дефолту из GDT дескриптор юзоешь.