Здравствуйте! Я пишу программу на ассемблере, которая в качестве внутренних данных должна хранить массив размером на ~ 1000000 int. Первая проблема, с которой я столкнулся - непонятно, какую модель памяти лучше всего выбрать. Разумеется очень хочется, чтобы к этому массиву действительно можно было обращаться как к единому целому (не хочется заморачиваться с сегментами и тп, чтобы не тормозило всё, да и просто не хочется ). Спасет ли меня model flat? (model large или huge меня, как я понял, не спасают). Вторая проблема, как собственно это реализовать. Можно ли просто написать что-то типа Код (Text): dw 1000000 dup(?) или надо как-то по-особенному память выделять?
Effect Ну для начала миллион слов - это совсем не большой массив (не реальный же режим?). Если пишете под Windows, то Вам кроме flat ничего и выбирать-то нельзя. dw 1000000 dup (?) выделит эти два мегабайта прямо в образе исполняемого файла: выигрыша ИМХО никакого (ну отбрасываются некоторые потери времени при выделении памяти в момент исполнения), а вот к исполняемому файлу добавятся лишние пара мегабайт. Если хотите один раз выделить и пользоваться, то VirtualAlloc - то, что нужно. Если нужно выделить, довыделить, перевыделить, передовыделить, то лучше HeapCreate/HeapAlloc.
Да, вобщем я хочу, чтобы это все работало под win и никаких других требований нет. Как я понял, можно писать (под win32) Код (Text): .model flat ... .data a dw 1000000 dup (?) и все будет пахать? (просто я начитался во всяких учебниках, что по умолчанию выделяемая память не может превышать 64 Кб, поэтому и спрашиваю)