Создание большого массива

Тема в разделе "WASM.BEGINNERS", создана пользователем Effect, 3 янв 2008.

  1. Effect

    Effect New Member

    Публикаций:
    0
    Регистрация:
    3 янв 2008
    Сообщения:
    3
    Здравствуйте!

    Я пишу программу на ассемблере, которая в качестве внутренних данных должна хранить массив размером на ~ 1000000 int.
    Первая проблема, с которой я столкнулся - непонятно, какую модель памяти лучше всего выбрать. Разумеется очень хочется, чтобы к этому массиву действительно можно было обращаться как к единому целому (не хочется заморачиваться с сегментами и тп, чтобы не тормозило всё, да и просто не хочется :) ). Спасет ли меня model flat? (model large или huge меня, как я понял, не спасают).
    Вторая проблема, как собственно это реализовать. Можно ли просто написать что-то типа
    Код (Text):
    1.          dw 1000000 dup(?)
    или надо как-то по-особенному память выделять?
     
  2. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    Effect
    Если ты упоминаешь large и huge, то огласи целевую ОС.
     
  3. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    Effect
    Ну для начала миллион слов - это совсем не большой массив (не реальный же режим?). Если пишете под Windows, то Вам кроме flat ничего и выбирать-то нельзя. dw 1000000 dup (?) выделит эти два мегабайта прямо в образе исполняемого файла: выигрыша ИМХО никакого (ну отбрасываются некоторые потери времени при выделении памяти в момент исполнения), а вот к исполняемому файлу добавятся лишние пара мегабайт. Если хотите один раз выделить и пользоваться, то VirtualAlloc - то, что нужно. Если нужно выделить, довыделить, перевыделить, передовыделить, то лучше HeapCreate/HeapAlloc.
     
  4. Xerx

    Xerx Алексей

    Публикаций:
    0
    Регистрация:
    17 фев 2005
    Сообщения:
    528
    Адрес:
    Russia
  5. Effect

    Effect New Member

    Публикаций:
    0
    Регистрация:
    3 янв 2008
    Сообщения:
    3
    Да, вобщем я хочу, чтобы это все работало под win и никаких других требований нет.
    Как я понял, можно писать (под win32)
    Код (Text):
    1. .model flat
    2. ...
    3. .data
    4. a    dw 1000000 dup (?)
    и все будет пахать?
    (просто я начитался во всяких учебниках, что по умолчанию выделяемая память не может превышать 64 Кб, поэтому и спрашиваю)
     
  6. Xerx

    Xerx Алексей

    Публикаций:
    0
    Регистрация:
    17 фев 2005
    Сообщения:
    528
    Адрес:
    Russia
    Effect
    лучше:
    Код (Text):
    1. .data?
    2. a    dw 1000000 dup (?)
     
  7. Effect

    Effect New Member

    Публикаций:
    0
    Регистрация:
    3 янв 2008
    Сообщения:
    3
    Благодарю!