как создать инициализированный большой (~2 тыс. байт) массив в masm32?

Тема в разделе "WASM.BEGINNERS", создана пользователем ufo_maniac, 21 авг 2006.

  1. ufo_maniac

    ufo_maniac New Member

    Публикаций:
    0
    Регистрация:
    19 авг 2006
    Сообщения:
    5
    при попытке сделать это получаю сообщение об ошибке:
    : error A2042: statement too complex
    : error A2039: line too long
    как выйти из положения?
    нигде не нашел информации. в FAQ есть инфа n0p'a со ссылками, указываюшими на какой-то http://index.php ...
    в частности "Как создать большой "массив" имеет ссылку
    http://index.php/?action=vthread&forum=3&topic=4615
    и где это? что, действительно есть такой недоступный мне сайт?
     
  2. halyavin

    halyavin New Member

    Публикаций:
    0
    Регистрация:
    13 май 2005
    Сообщения:
    252
    Адрес:
    Russia
    А сделать несколько массивов подряд нельзя (первый с нужной меткой, остальные - без)?
     
  3. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    ufo_maniac
    Те ссылки ведут на обсуждение malloc, HeapAlloc, VirtualAlloc.
    Думаю, тебе следует воспользоваться этими функциями. Статический массив в масме проблематично сделать большим. Да и зачем?
     
  4. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    ufo_maniac
    покажи хотя бы кусочек своего кода, например, строка
    Код (Text):
    1. array db 2000 dup (1)
    не вызывает у masm'а ни каких возражений.
     
  5. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    В принципе, такое сассемблировалось, правда, долго: array db 900*1024 dup(1)
    А если надо ещё больше - делай фасмом внешний модуль (format MSCOFF) и линкуй его к своей проге.
     
  6. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    IceStudent
    долго - это сколько? три минуты?
     
  7. ufo_maniac

    ufo_maniac New Member

    Публикаций:
    0
    Регистрация:
    19 авг 2006
    Сообщения:
    5
    halyavin
    точнее - остальные с ненужными :)
    так и сделал и все заработало.
    спасибо.
    мне и самому это приходило в голову, но казалось не совсем правильным. но раз по-другому нельзя...

    IceStudent
    у меня они ведут на сайт который недоступен.
    а хотелось бы почитать...

    q_q
    мне надо проинициализировать не единицами, а разными нужными значениями. что-то вроде этого:
    Код (Text):
    1. queryData DWORD 771541E9h,0DC59172Bh,0CA85DB1Fh,
    2.     3B8AD9EBh,0DCAF487h,0A290FC91h,0F603DED7h,
    3.         ...
    IceStudent
    я вчера только masm32 и RadAsm поставил... :) Fasm лучше?
    где бы найти нормальный мануал на масм?

    to All
    всем большое спасибо!
    будем учиться дальше...
     
  8. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    q_q
    16224 ms. Помнится, было обсуждение этого вопроса. Даже если масм умудрится создать большой массив и не упадёт - всё равно лучше отдельный модуль (obj) с массивом, не так ли?

    Попробовал. Разбил 900кб массив на 9 по 100 кб. Компилировалось 30454 ms.

    Скачай оффлайн-версию форума.
     
  9. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    ufo_maniac
    надо проинициализировать не единицами, а разными нужными значениями. что-то вроде этого ...
    Сразу надо показывать код, чтобы не путать людей.
    Писать надо так
    Код (Text):
    1. ...
    2. queryData dd 771541E9h,0DC59172Bh,0CA85DB1Fh
    3.           dd 3B8AD9EBh,0DCAF487h,0A290FC91h,0F603DED7h
    4.           dd ...
    5. ...
    IceStudent
    16224ms
    16 секунд? Это долго? Obj или exe'шник?
     
  10. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    q_q
    Obj. Конечно долго. Фасм генерит PE32 с массивом в 10 мб за 1.6 сек. То есть, в 100 раз быстрее.
     
  11. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    IceStudent
    masm тоже быстро генерит, если вместо coff использовать формат omf.
     
  12. Jupiter

    Jupiter Jupiter

    Публикаций:
    0
    Регистрация:
    12 авг 2004
    Сообщения:
    532
    Адрес:
    Russia
    queryData Label DWORD
    dd 771541E9h,0DC59172Bh,0CA85DB1Fh
    dd 3B8AD9EBh,0DCAF487h,0A290FC91h,0F603DED7h
    dd ...
     
  13. IceStudent

    IceStudent Active Member

    Публикаций:
    0
    Регистрация:
    2 окт 2003
    Сообщения:
    4.300
    Адрес:
    Ukraine
    Quantum
    И куда с ним? :)
     
  14. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    IceStudent
    link.exe поддерживает этот формат.
     
  15. defaultplayer

    defaultplayer New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2006
    Сообщения:
    214
    когда создаю к примеру запись вида :

    queryData Label BYTE

    db 77h, 15h, 41h,
    3Bh, 8Ah, D9h

    то при использовании sizeof queryData компилятор считает что queryData равна 1-му байту, подскажите плз как выйти из ситуации
     
  16. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    defaultplayer
    Код (Text):
    1. queryData LABEL BYTE
    2.    db 77h, 15h, 41h,
    3.       3Bh, 8Ah, D9h
    4. queryData_size = $-queryData
     
  17. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    Quantum
    Компилит действительно быстрее, но после этого все апи из инклюд не линкуются :dntknw:(
    Или это как то лечится?
     
  18. AndreyATC

    AndreyATC New Member

    Публикаций:
    0
    Регистрация:
    16 май 2007
    Сообщения:
    60
    Y_Mur
    подозреваю что лечиться..
    иначе нафига такой формат нужно?
     
  19. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    Y_Mur
    Попробуйте tlink32 из тасма - у меня все API нормально линкуются. Через link.exe тоже можно, но я уже не помню точно как :dntknw:

    AndreyATC
    Сначала инструменты МС поддерживали только OMF, а потом уже перешли на COFF. Данная опция осталась, видимо, для совместимости, но её уже убрали в последнем масме (или только из документации в msdn?).
     
  20. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    Quantum
    У меня девятка ml omf компилит и действительно быстрее чем coff, link распознаёт этот omf но пишет что сначала переделывает его в coff а потом долго ругается на неопределённость api имён. (Впрочем Hutch утверждает, что он сделал и сопровождает только ml, а link ему предоставлен M$ и к его созданию он не причастен :)
    Сходу прикрутить tlink32 не получилось, он и на ресурсы ругается и ещё чего-то непонятное выкидывает, но за направление спасибо - буду разбираться :)