|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Сен 14, 2004 18:07:48 Подскажите, как будет выглядеть на fasme структура вида typedef union union { struct { DWORD LowPart; LONG HighPart; }; LONGLONG QuadPart; } LARGE_INTEGER, *PLARGE_INTEGER; каким образом вообще потом можно работать с QuadPart? там же 8 байт! |
|
|
Дата: Сен 14, 2004 18:44:47 Либо два подряд дворда - LowPart, HighPart Либо 64-разрядно число, что собственно почти одно и тоже. |
|
|
Дата: Сен 14, 2004 18:46:40 каким образом вообще потом можно работать с QuadPart? там же 8 байт! При помощи 64-битных регистров :) А если их нету - на то и есть HighPart - старшая часть и LowPart - младшая. |
|
|
Дата: Сен 14, 2004 23:10:29 например x1 ???<> .... mov [x1.QuadPart],0 mov [x1.QuadPart+4],0 |
|
|
Дата: Сен 15, 2004 01:43:23struc LARGE_INTEGER
{
label .QuadPart qword
.LowPart dd ?
.HighPart dd ?
}
> каким образом вообще потом можно работать с QuadPart? Для этих целей и объявляется union с 2мя DWORD |
|
|
Дата: Сен 15, 2004 08:38:28 А почему у тебя члены структуры в обратном порядке идут? (извиняюсь за ламерский вопрос) |
|
|
Дата: Сен 16, 2004 02:58:09 Члены структы в нормальном порядке. А вот члены union'а в обратном - для union принципиальной рразницы нет, как они расположены. Но в FASM union нет, так что делается он посредством присваивания 2х разных меток одному адресу:
struc LARGE_INTEGER
{
label .QuadPart qword ; +0 размер 8 байт
.LowPart dd ? ; +0 размер 4 байт
.HighPart dd ? ; +4 размер 4 байт
} |
|
|
Дата: Сен 16, 2004 04:11:41 S_T_A_S_ Возможно я ошибаюсь, но мне кажется должно быть так:
struc LARGE_INTEGER
{
label .QuadPart qword ; +0 размер 8 байт
virtual at label
.LowPart dd ? ; +0 размер 4 байт
.HighPart dd ? ; +4 размер 4 байт
end virtual
}
|
|
|
Дата: Сен 16, 2004 05:47:17 · Поправил: S_T_A_S_ В этом случае размер структуры будет 0 байт. Если использовать virtual, то должно быть так: struc LARGE_INTEGER
{
.QuadPart dq ? ; +0 размер 8 байт
virtual at .QuadPart
.LowPart dd ? ; +0 размер 4 байт
.HighPart dd ? ; +4 размер 4 байт
end virtual
}
или так struc LARGE_INTEGER
{
virtual
.LowPart dd ? ; +0 размер 4 байт
.HighPart dd ? ; +4 размер 4 байт
end virtual
.QuadPart dq ? ; +0 размер 8 байт
} |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.067 |