О структурах в масме

Тема в разделе "WASM.BEGINNERS", создана пользователем SolidCode, 15 май 2006.

  1. SolidCode

    SolidCode New Member

    Публикаций:
    0
    Регистрация:
    2 дек 2002
    Сообщения:
    162
    Адрес:
    Kazakhstan
    Как получить смещения элементов структуры и их размеры? В C++ вроде offsetof есть, а в масме я что-то не нашёл такое, но вроде что должно быть.
     
  2. Sl4v4

    Sl4v4 New Member

    Публикаций:
    0
    Регистрация:
    18 окт 2005
    Сообщения:
    69
    смещение offset <структура>.<элемент>

    размер sizeof <структура>.<элемент>



    Или я не так понял?
     
  3. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    SolidCode


    Код (Text):
    1. #define offsetof(s,m)   (size_t)&(((s *)0)->m)




    Тебе нужно смещение элемента от начала структуры?

    STRUCTNAME.member



    По размеру сказали выше.
     
  4. SolidCode

    SolidCode New Member

    Публикаций:
    0
    Регистрация:
    2 дек 2002
    Сообщения:
    162
    Адрес:
    Kazakhstan
    Вот, большое спасибо всем!

    IceStudent



    Это как раз то, что надо. Мне нужны были размер элемента внутри определённо структуры вообще без объявления такой структуры. И смещение от начала структуры.
    Код (Text):
    1. mov eax,offset RECT.right
    2. mov ecx,sizeof OSVERSIONINFOEX.szCSDVersion


    Я не догадался вместо имени конкретной переменной поставить имя структуры.

    Тему можно закрывать.
     
  5. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine


    mov eax,RECT.right
     
  6. Sl4v4

    Sl4v4 New Member

    Публикаций:
    0
    Регистрация:
    18 окт 2005
    Сообщения:
    69


    Для MASM это одно и тоже
     
  7. asd

    asd New Member

    Публикаций:
    0
    Регистрация:
    12 мар 2005
    Сообщения:
    952
    Адрес:
    Russia
    Sl4v4





    mov eax,offset RECT.right - в еах - адрес RECT.right

    mov eax,RECT.right - в еах - значение RECT.right
     
  8. Sl4v4

    Sl4v4 New Member

    Публикаций:
    0
    Регистрация:
    18 окт 2005
    Сообщения:
    69
    asd

    Здесь RECT - имя структуры а не переменной
     
  9. asd

    asd New Member

    Публикаций:
    0
    Регистрация:
    12 мар 2005
    Сообщения:
    952
    Адрес:
    Russia
    Извиняюсь. Действительно читать надо внимательнее.
     
  10. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Sl4v4



    Учимся писать "кросс-ассемблерный" код ;)