|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Мар 7, 2004 17:17:56 В MASM32 все просто: размер структуры = SIZEOF структура. А как быть в FASMе? Например есть структура: struc SomeStruc { .mfSOI dd 0 .rfSOI dd 0 .mfData rb 400h .rfData rb 400h .UN rb 32h .TD dd 0 } Как поместить в регистр eax ее размер? Можно конечно и просто на бумажке размер посчитать но это уж вовсе смешно. |
|
|
Дата: Мар 7, 2004 18:49:05 А что в фасме нету SIZEOF? У меня аналогичная проблема в IAS. Если кто знает что-то разумнее разности меток - заранее благодарен. |
|
|
Дата: Мар 7, 2004 21:57:41 Valery Нету там SIZEOF :( А с метками как управляться? |
|
|
Дата: Мар 7, 2004 23:45:47 С файле struct.inc есть описание макроса struct, в нём есть поле size. Смотрите файл там, подробнее сказать не могу на FASM мало пишу. |
|
|
Дата: Мар 8, 2004 07:04:26 Вот пример от JohnFound: struc TMyData {
.field1 dd ?
.field2 dd ?
}
; for easy use of following construction there is a macro "struct"
; in FASM standard macro library.
; if you want to use "struct" macro, use:
;
; struct TMyData instead of virtual statement.
;
virtual at 0
TMyData TMyData
sizeof.TMyData = $
end virtual
; allocate some dynamic memory for array...
invoke GetProcessHeap
invoke HeapAlloc, eax, 0, 1000 * sizeof.TMyData
mov esi, eax
xor eax, eax
; Then use it as array of TMyData structures...
.fillloop:
mov [esi+eax+TMyData.field1], eax
mov [esi+eax+TMyData.field1], 1234h
add eax, sizeof.TMyData
cmp eax, 1000*sizeof.TMyData
jne .fillloop
;.... |
|
|
Дата: Мар 8, 2004 15:16:25 При всем уважении к JohnFound, ему удалось так запутать пример, что даже я не понял.. :) Упрощая его пример, можно написать следующее:
struc TMyData {
.field1 dd ?
.field2 dd ?
}
struct TMyData ; этот макрос как раз и считает размер структуры
...
mov eax,sizeof.TMyData
|
|
|
Дата: Мар 8, 2004 16:23:52 Нет, размер структуры считает этот макрос: virtual at 0 TMyData TMyData sizeof.TMyData = $ end virtual |
|
|
Дата: Мар 8, 2004 16:56:51 Хотя в файле \fasm\INCLUDE\MACRO\STRUCT.INC уже есть макрос: ; structure definition helper
macro struct name
{ virtual at 0
name name
sizeof.#name = $ - name
name equ sizeof.#name
end virtual } |
|
|
Дата: Мар 10, 2004 21:30:34 Ну так я его и использую! :)) И его и указал! :))) |
|
|
Дата: Мар 11, 2004 02:32:33 dz 3BePIOra То что ты привел и подписал: ; этот макрос как раз и считает размер структуры - вовсе не макрос ;-) |
|
|
Дата: Мар 11, 2004 05:34:21 Еще есть макросы struct / ends от Privalov'а на форуме fasm - там это автоматом. В каких-то случаях они могут быть удобнее, хотя нет такой гибкости, как struc |
|
|
Дата: Мар 11, 2004 08:14:43 Asterix Я имел в виду макрос struct :)) Я и не утверждаю, что эта строчка - это макрос... :)) |
|
|
Дата: Мар 20, 2004 08:11:49 Хех, я это делаю примерно следующим образом: TMyData TMyData ; К примеру szTMyData dd $-TMyData |
|
|
Дата: Мар 21, 2004 00:07:10 "Вопрос на засыпку" - как определить размер стандартной структуры? Писал сегодня прогу с использованием структуры OPENFILENAME, пришлось подсмотреть размер структуры в другой проге. А как определить ее размер автоматически? |
|
|
Дата: Мар 21, 2004 01:33:33 sizeof.OPENFILENAME :-) |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.043 |