Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Вычисление размера структуры

13K
10 мая 2008 года
Exs42
42 / / 04.09.2006
Доброе время суток!
Как мне подсчитать размер структуры в ассемблере?
Имеется ввиду структуры типа RASCONN или FILETIME.
Заранее спасибо!
261
11 мая 2008 года
ahilles
1.5K / / 03.11.2005
 
Код:
typedef struct _FILETIME { // ft  
    DWORD dwLowDateTime; // DWORD - 4 байта
    DWORD dwHighDateTime; // DWORD - 4 байта
} FILETIME;

итого 8 байт.

структуру RASCONN аналогично считать
 
Код:
typedef struct _RASCONN {  
    DWORD     dwSize; // 4 байта
    HRASCONN  hrasconn; // 4 байта
    TCHAR     szEntryName[RAS_MaxEntryName + 1]; // 1 байт
 
#if (WINVER >= 0x400)
    CHAR      szDeviceType[ RAS_MaxDeviceType + 1 ]; // RAS_MaxDeviceType + 1
    CHAR      szDeviceName[ RAS_MaxDeviceName + 1 ]; //RAS_MaxDeviceType + 1
#endif  
} RASCONN ;

в системе с версией меньше чем 0x400 размер 5+RAS_MaxEntryName байт
с версией больше чем 0x400 (или равно) размер 7+RAS_MaxDeviceType+RAS_MaxDeviceName+RAS_MaxEntryName байт
13K
12 мая 2008 года
Exs42
42 / / 04.09.2006
Я имел ввиду универсальный метод. Типа функции в Си - sizeof.Чтобы можно было без труда какие угодно структуры считать.
349
13 мая 2008 года
Phantom-84
656 / / 27.10.2005
Exs42, во многих ассемблерах есть SIZE(OF)-оператор. В фасме я делаю так:

 
Код:
struc MYSTRUC p1,p2
{
.p1 dd p1
.p2 dd p2
MYSTRUC_SIZE=$-.p1
}


или так:

 
Код:
struc MYSTRUC p1,p2
{
.p1 dd p1
.p2 dd p2
}

virtual at 0
MYSTRUC MYSTRUC ?,?
MYSTRUC_SIZE=$
end virtual
13K
16 мая 2008 года
Exs42
42 / / 04.09.2006
Phantom-84,спасибо!а в MASM32 v9.0 есть? я просто читал инфу по библиотекам, не нашёл. может не заметил...
16K
16 мая 2008 года
Alfá
59 / / 12.01.2007
Конечно есть. Так и пишеш sizeof
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог