valeri писал(а):
кроме того, современные компиляторы зачастую генерируют код эффективнее, чем если писалось бы с нуля на ассемблере.
Не знаю, с чего такое мнение. По моему
личному опыту переписывание фрагментов кода с нуля на ассемблере даёт выигрыш как в размере, так и в быстродействии в несколько раз, вплоть до десятка. Сравнивал с GCC и с MS VS.
valeri писал(а):
Писать на ассемблере только для того, чтобы экстремально минимизировать размер ОС? Типа, "Эта ОС умещается на дискете!"
Экстремальная минимизация размера - своего рода спорт. Надо сказать,
иногда это занятие вполне осмысленно. Например, может оказаться необходимо вместить разбор файловой системы в один-два сектора начального загрузчика и здесь на счету каждый байт.
Но на самом деле большинство упускает из виду то обстоятельство (на этом форуме уже обсуждали этот вопрос), что, как правило (за исключением специальных случаев, типа разворачивания циклов), оптимизируется одновременно и размер, и быстродействие. Так, две цепочки одинаковой функциональности, не содержащие циклов, но имеющие разную длину, в среднем (грубо) будут выполняться за время, пропорциональное их длине.
Есть ещё один момент, напрямую ставящий в зависимость быстродействие от размера. Представь себе, что CPU имеет кэш, например, 1Мб. И есть две ОС одинаковой функциональности. Одна целиком вместе с данными занимает 1Мб, другая 10Мб. Вопрос: какая из них с большей вероятностью будет работать быстрей?
А если у нас 1Гб ОЗУ в системе и две ОС, - одна расходует 512Мб, а другая 2Гб?