· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› masm и много неинициализированных данных

. 1 . 2 . >>

Посл.отвђт Сообщенiе


Дата: Май 7, 2004 11:26:21

Прикол такой нашел, проверил на 6, 7 и 8 версии _компилятора_. Если объявить в .data? больше 2 мег то у меня на достаточно мощной машине примерно 3 минуты компилировалось :)) (обычно 3-5 секунд даже что-то объемное). Линкуется потом быстро. Экзешник при этом - 1 кб получался :)
Баг?


Дата: Май 7, 2004 13:11:56

masquer
Используй фасм, он times 1000000h db 1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7 компилирует за 20 секунд, а rb 10000000h за 2 секунды. Правда при условии что оперативной памяти раза в два больше, а иначе механизм подкачки всё сильно затормозит.


Дата: Май 7, 2004 15:15:01

Black_mirror
Спасибо, но думаю, что и с этим жить можно :)


Дата: Май 7, 2004 17:39:44

Извините не сведущего, но почему МАСМ так долго обрабатывает неинициализированные данные? Он, что для каждого байта (слова, двойного слова) свою метку создаёт (на период компиляции)?


Дата: Май 7, 2004 18:00:47

А х.з. :) Я бы и сам почитал бы об этом, примерно до 1 мб все нормально, а дальше идут тормоза жуткие


Дата: Май 7, 2004 21:08:02

Блин, это прям эксплоит какой-то..
Попробовал:
.DATA?
StrFile db 4096*1000 dup (?)

Так и не дождался когда она скомпилируется.


Дата: Май 7, 2004 21:11:56

даже если поделить на несколько мелких частей - все равно так же тормозить начинает, видать какое-то супер алго используется :)


Дата: Май 8, 2004 06:51:40

дооолго ассемблит

ЗЫ
на FASM делал 80Mb секцию - ОК!


Дата: Май 8, 2004 22:08:47

Меня недавно товарищ спршивал по тому же поводу. Только ему надо было массив 15 метров объявить. Я у него спросил: "а что, апишки уже не рулят?". Спрашиваю и у вас. ИМХО, если надо такой объем данных, не проще ли выделить память через GlobalAlloc? Ответы типа "не хочу подгружать лишнюю функцию" или "не люблю апи" не принимаются.


Дата: Май 8, 2004 22:28:48

Народ, а не проще в стеке все держать?


Дата: Май 8, 2004 22:31:37

hello_world
Хмм.. 3 метра в стеке? Это, конечно, весьма оригинально, но я предпочитаю такие вещи доверять системе.


Дата: Май 8, 2004 22:54:03

n0p
Хмм.. 3 метра в стеке? Это, конечно, весьма оригинально, но я предпочитаю такие вещи доверять системе.
А что такого? Есть же в PE stack commit/reserve, по моему это как раз называется "доверять системе" :)


Дата: Май 8, 2004 23:11:22

hello_world
И все-же я не понимаю причину нелюбви к апишкам.. :) Все-таки 3 метра инфы в стеке хранить я бы не рискнул. Тем более, что он для этого не задумывался.


Дата: Май 8, 2004 23:15:40

n0p
А если у тебя например несколько буферов по 1мб, тебе будет неудобно это все адресовать. Можно конечно несколько раз вызывать virtualalloc, но это глупо как-то.


Дата: Май 8, 2004 23:35:26

hello_world
Во-первых, почему это будет глупо? Во-вторых если речь идет о фиксированых блоках, почему это будет неудобно адресовать? Наоборот намного удобнее (субъективное мнение), чем в стеке.

. 1 . 2 . >>


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.064