Шрифт:
Пришло время накачанных в своё время материалов по эмуляции компьютерных железок 70-80-90 х. Демонстрирую на экране ноута список команд ассемблера Z80 и… фантастическую, 50 мегабайтную фотографию его самого! В своё время (воля Силы из Звёздных войн, не иначе, хаха!), высмотренную на англоязычной странице википедии - очень надеюсь, что фотка пригодится, вот прямо после разговора заставлю сержантов зафоткать, чтобы все подробности вышли! Чего раньше не подумал, это ведь такой чит-бонус! Я очень надеюсь, что эта фотография, через несколько лет, скажет специалистам намного больше, чем мне…
После рассмотрения 8-битной легенды с несколькими тысяч транзисторов «на борту», продолжаю серьёзно:
– Вот следующий уровень абстракций. Язык ассемблера и соответствующие им машинные коды.
Тыкаю пальцем в простейшие и взятые в качестве примера команды:
LD A,B
Делаю рисунки на листочках, разъясняющие материал на экране.
Условные, мнемонические обозначения операций загрузки байта из регистра B в регистр A и, во втором случае - сложение A с B, с записью результата в A. И показываю тот соответствующий данным условным обозначениям машинный код.
Вставляю необходимые слова об имеющемся счётчике, указывающим на адрес в памяти следующих машинных кодов следующей команды процессора. И дополняю упоминанием о шестнадцатиричной системы счисления, жёстко-привычной «настоящим программистам» времён «только ассемблер, только хардкор!».
– То, что я обозначаю как микрокод, это и есть набор базовых команд, потребных, например на то, чтобы выполнилась какая-то операция, являющаяся стандартной, например, та же операция сложения. Т.е. какие-то там внутренние манипуляции типа подключить первый и второй регистры к выходу такому-то АЛУ. АЛУ проводит операцию, пишется результат в первый регистр, что-то ещё типа флагов, обнулений… это очень смутно мне знакомо. Извините, без подробностей. Счастье, что я вообще даже про это знаю! С точки зрения программиста, работавшего в прошлые для меня десятилетия на самом нижнем уровне, про весь этот микрокод он даже не думал, его создавали разработчики самих процессоров и он выполняется внутри того, программист лишь должен записать пару символов машинного кода или команды на ассемблере, который позже будет переведён в машинный код. Резюмируя, вот уровни абстракций: микрокод -› машинный код -› ассемблер. На котором, собственно и создавались тогда прикладные программы. Обозначения ассемблера переводились специальной программой с тем же именем в исполняемый машинный код. Вот таков тот уровень из первых процессоров 70-80-х, который, по счастью, мне знаком потому, что интересовался так называемыми вопросами эмуляции - способа запускать за счёт большего быстродействия более современной техники программы от старых компов абсолютно разных платформ. По причине, как правило связанным с детской ностальгией и любимыми компьютерными игрушками детства. У меня - с того собственно и началось - с отцовских воспоминаний о ВУЗ-е и демонстрации валявшегося в квартирной кладовке его первого личного компьютера из начала 90-х. Как раз на основе такого процессора Z80! Папаня так смачно и завлекательно делился воспоминаниями и рассказывал о тех временах начала всеобщей компьютеризации, что я «подсел на тему» и углубился в неё. Но, в общем, разрыв поколений, всё равно огромен. Я даже не знаю, по какому пути идти - сразу СССР должен заняться реализацией ЭВМ на полупроводниковой базе, после прояснения вопроса с созданием транзисторов. Или на лампах что-то в начале конструировать…
Академик, судя по появившейся на лице понимающей улыбке и некоему радостному оживлению, наконец, вникает, о чём я толковал и причём тут регистры, что такое машинный код и что такое микрокод. Изучение материала учебника было дополнено моими пояснениями и сложилось в более-менее логичную картинку?
Фух, хотя бы в первом приближении, первом человеку тут, в 1940, объяснил. Ну, я старался. Как мог. Главное, что академик - не только из тех, «кто командует», но и из тех кто будет ответственен за появление «советских компов». Продолжаю речь:
– В мое время на уровень ассемблера 99,99% программистов вообще не спускается. Не нужно. Только у кого специфические, редкие потребности и редкие особенные платформы. Медленная скорость разработки и отладки программ на нём, и современные оптимизирующие компиляторы языков программирования так называемого высокого уровня дают прекрасный по быстродействию машинный код. Теперь, Абрам Фёдорович, самое время прыгнуть наверх, в 21-й век.
Разворачиваю временно свёрнутый Лазарус и начинаю толкать речь об зарождении языков программирования, по быстрому съезжая на свой любимый Паскаль. Простите, оставшиеся в 21 веке любители C, C++ и C# и Java! Вас не забуду, но и не упомяну в первых речах. Хотя бы потому, что мои познания в предметах вашего обожания меньше. И предпочтение - иное.
Произношу положенные слова об процедурном программировании и событийной модели. Лишь вкратце упоминаю объектно-ориентированное программирование - ни к чему снова сразу «грузить им» академика. На будущих первых ЭВМ до ООП - световые:-) годы. О той процессорной мощи и объемах памяти, позволяющей играться с тысячами объектов, только мечтать… ну, или глядя на два ПК из 21 века, облизываться:-) В общем, пока структурно-процедурное программирование. Только оно. Причём все начнут в машинных кодах:-)
Машкоды - «наше всё» для будущих первых советских ЭВМ!
Мы рванули в «практикум программирования», а светлый ум академика ухватывал всё на лету. Всё же чувствовалось, что перед мной сидит настоящий учёный, причем из самых сливок научного мира, глубина и скорость его вникания в тему поражала!
Академик Иоффе.
Как выяснилось, потомок уже готовился к использованию компьютеров. Он успел за проведённое в 1940 году время решить одну проблему - ввод данных в ЭВМ. Не имея возможности использовать все высокоскоростные способы будущего, он придумал оригинальную схему с использованием подручных средств.
– Совершенно «дубовая», медленная. Но работающая.
– рассказывал он, демонстрируя самодельный, местный штатив с «веб-камерой», которая в будущем позволяла вести связь, видя собеседника из любой тчоки Земли, а здесь была приспособлена для создания электронных фотографий - копий подаваемых страниц с данными.
Потомок придумал и создал программу для «распознавания» этих страниц. А девушка - сержант НКВД, обученная работе с «веб-камерой» и «программой-распознавалкой» уже ловко, у меня на глазах, ввела в компьютер и «распознала» данные с листа.