ZX Spectrum
Apr. 24th, 2017 03:58 pmСпектрум – прекрасная машина в том смысле, что для создания чего угодно, работающего с нормальной скоростью, нужно писáть на ассемблере. То-есть Спектрум как минимум мотивировал просто изучать ассемблер.
Более того, Z80 мотивировал изучать ассемблер глубоко.
Первое, для чего мне захотелось учить асм – Game of Life Конвея. На Бейсике оно, конечно, еле ворочалось. Что интересно, прирост скорости после первого переписывания на асме меня тоже не устроил, и я стал копаться дальше.
И обнаружил, что, как сейчас помню, индексная адресация кратно медленнее просто сложения и выборки. Типа, 20 тактов против 6.
Этот прирост меня тоже не устроил, и после дальнейшего углубления в детали оказалось, что если сделать самомодифицирующийся код, можно выиграть ещё процентов 20 скорости.
Причём мне тогда казалось, что самомодицирующийся код – это вполне себе ок, даже благо. То-есть, если Лисп (про который я тогда только читал и никогда не видел) делает же рерайт куска исполняющейся программы, почему тогда в ассемблере этот трюк массово не юзают? Ведь выигрыш в скорости же )
Почему это не айс для асма, я и сам понял довольно быстро – ужé когда писал программу для решения кубика-рубика. Я затрудняюсь точно подобрать определение для отладки самомодифицирующихся программ, даже «адский мозговзрывающий кошмар» довольно мягко, по-моему )
Думаю, не преувеличу, если скажу что целое поколение инженеров началось со Спектрума.