Массив структур в FASM

Тема в разделе "WASM.ASSEMBLER", создана пользователем hakerkirik, 27 июл 2008.

  1. hakerkirik

    hakerkirik New Member

    Публикаций:
    0
    Регистрация:
    24 мар 2005
    Сообщения:
    28
    Соббсно сабж. Следующий код работать не хочет. Пишет, что неправильные аргументы для макроса.
    Код (Text):
    1. struct aaa
    2. {
    3. a db ?
    4. b dd ?
    5. c dw ?
    6. }
    7. StrucArr aaa 10 dup(?)  ; <- здесь ошибка
    Как решить?
     
  2. iZzz32

    iZzz32 Sergey Sfeli

    Публикаций:
    0
    Регистрация:
    3 сен 2006
    Сообщения:
    355
    Хм. struct и скобки? Это что-то новенькое. Надо так:
    Код (Text):
    1. struc foo
    2. {
    3.   .a db ?
    4.   .b dd ?
    5.   .c dw ?
    6. }
    7. ;или так (c include 'win32a.inc' или include 'macro/struct.inc'):
    8. struct foo
    9.   a db ?
    10.   b dd ?
    11.   c dw ?
    12. ends
    По сабжу:
    Сделать StrucArr rb 10 * sizeof.foo (определив сначала этот sizeof, если struc), но это неудобно (к структуре нормально не обратиться). Или так:
    Код (Text):
    1. ;Создаст StrucArr0, StrucArr1, …, StrucArr9.
    2. rept 10 n:0
    3. {
    4.   StrucArr#n foo
    5. }
    Или вообще пользоваться таким вот макросом:
    Код (Text):
    1. struc struc_array name*,n*
    2. {
    3.   local ..struc_array
    4.   virtual at 0
    5.     ..struc_array name
    6.     @struc_array@sizeof = $
    7.   end virtual
    8.   . name
    9.   rb @struc_array@sizeof * (n - 1)
    10. }
    11. ; 10 структур foo
    12. StrucArr struc_array foo,10
     
  3. hakerkirik

    hakerkirik New Member

    Публикаций:
    0
    Регистрация:
    24 мар 2005
    Сообщения:
    28
    iZzz32, спасибо. Теперь всё пашет.
     
  4. hakerkirik

    hakerkirik New Member

    Публикаций:
    0
    Регистрация:
    24 мар 2005
    Сообщения:
    28
    Еще один вопрос в догонку, чтоб не создавать новую тему.
    Как сделать чтоб такое прокатило:

    Код (Text):
    1. struc MyStruc
    2. {
    3.   .vala     dd ?  
    4.   .valb     dd ?    
    5.   .valc     dw ?
    6. }    
    7.  
    8. MyStrucObj MyStruc
    9. mov bx, MyStrucObj
    10. mov ax, [bx.valb] ; <- Как это реализовать? Выдает ошибку, хотя тасм не жаловался :)
     
  5. Aspire

    Aspire New Member

    Публикаций:
    0
    Регистрация:
    19 май 2007
    Сообщения:
    1.028
    Во-первых, ты пытаешься запихнуть дворд в ворд. Странно, что тасм не ругалсо..
    Во вторых: http://www.wasm.ru/forum/viewtopic.php?id=27764
     
  6. hakerkirik

    hakerkirik New Member

    Публикаций:
    0
    Регистрация:
    24 мар 2005
    Сообщения:
    28
    Я там очепятался. Хотел написать "mov ax, [bx.valс]".
    Thanks.
    Все же думал можна как-то без гемора обойтись, но видимо не суждено :dntknw: