Может я изобрел велосипед, но очень хотелось обращаться к полям структуры, сразу после получения памяти на нее. Для этого сделал такой финт: Код (Text): macro field fName, fSize { fSize 0 fName = $ - @B - 4 } Сама структура описывается так: Код (Text): @@: field someStruct.a, dd field someStruct.b, dd field someStruct.c, dd somStruct.size = $ - @B Можно было сделать макрос понавороченней, но не в этом суть. Работает только с двойными словами. И все это затевалось для того, чтобы работать так: Код (Text): proc CreateNewStruct mov eax, somstruct.size invoke LocalAlloc, LMEM_FIXED, eax mov [eax + somStruct.a], dword 123 mov [eax + somStruct.b], dword 456 mov [eax + somStruct.c], dword 789 ret endp Так вот вопрос: это боян? Или может существует какой-то более простой способ обращаться к полям структуры непосредственно через регистр? Конкретно фасм изучаю недавно, поэтому можно просто привести пример, как правильно.
Код (Text): ; Declaring structure RECT with 'virtual' virtual at 0 RECT: .left dd ? .top dd ? .right dd ? .bottom dd ? .size = $ end virtual ... mov ecx, RECT.size ; Number of bytes taken by structure RECT ... mov ebx, <address of RECT> mov [ebx + RECT.top], 123