Как стать автором
Поиск
Написать публикацию
Обновить

Делаем сразу множество игр, или Как создать эмулятор

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров3.9K
Всего голосов 34: ↑34 и ↓0+52
Комментарии22

Комментарии 22

у всех процессоров есть регистры — а это тоже память!

для начала всё же нужно утвердить терминологию, а не скатываться в обобщения. Регистры - это не память, так как память - это ОЗУ. Если вам очень хочется сказать "ну регистры же запоминают своё состояние а значит "помнят", ну да, но зачем опускаться до формализации неважного? (надеюсь мы не рассматриваем частные случае ЦПУ у которых сами регистры хранятся в ОЗУ?)

проблема эмуляции приставок, в отличии от проблемы эмуляции ЦПУ ровно в том, что у приставки кроме ЦПУ может быть еще какое-то число чипов, которые так же работают с тем же ОЗУ, скорее всего имеют прерывания, которые позволяют например отключать ЦПУ от шины или останавливать его работу и т.д. Поэтому эмуляция самого ЦПУ 8-битного из 80-х большой проблемы не представляет. Кому интересно как можно быстро написать эмулятор - можете глянуть видео Алексея Морозова по эмуляции ЭВМ Океан 240, там вообще всё сделано на JS.

Я хотел как-то написать свой эмуль ATARI XE, для начала полез читать описание аппаратуры с сайта Altirra (неплохого эмулятора для ATARI) и там я понял, что я не хочу возиться с прерываниями, таймингами и еще с эмуляцией ANTIC (видео ЦПУ). На этом история моего супер-эмулятора и закончилась ))))

Регистр - это ячейка памяти для временного хранения информации и работы с ней (статью по сути надо дополнять подобными ссылками, где ты был когда я писал статью?).

Да, это не такая память как мы привыкли её видеть, но всё же память и это надо понимать. )))

А по эмуляции, даже процессоры из 80-х не так просто эмулировать, даже приставку Nes. Кто возьмётся сразу за неё, не имея опыта, вероятнее всего и забросит. Вот и написал статью, чтоб либо удержать человека на его пути, либо показать что это не его путь.

я скорее о том что когда рисуют блок-схему ЦПУ никому не придет в голову внутри ЦПУ нарисовать квадратик с надписью RAM, а внутри квадратик с надписью Registers. Это свойство не влияет на работу как таковую, поэтому и нет смысл в таком контексте об этом говорить. Поэтому в контексте эмулятора разговор о регистрах как о ячейках памяти вообще не имеет смысла. Вот я о чем.

NES имеет видео и звук и без эмуляции хотя бы видео вы даже на экране ничего нарисовать не сможете, а это квест куда более сложный чем класс MOS6502. У Атари можно хотя бы вместо ANTIC вкорячить заглушку с поддержкой только GRAPHICS 0, что позволит уже запустить БИОС и Бейсик.

Поэтому в контексте эмулятора разговор о регистрах как о ячейках памяти вообще не имеет смысла.

С одной стороны да, не имеет смысла. С другой стороны такие вещи лучше знать. Оно не критично, но когда знаешь схемотехнику и программирование, проще понимать что и как надо сделать. Допустим когда регистров много, их можно реализовать как блок памяти и обращаться напрямую к каждой ячейке. Так же надо знать, что в процессоре кроме основных регистров есть внутренние для передачи данных и для ускорения работы с данными и вычислениями.

Нюансов много, я и писал в статье, что просто невозможно всю информацию затронуть. Если расписать как сделать простейший эмулятор, то можно книжку маленькую сделать, страниц на 200 и наверняка что-нибудь упустишь. )))

когда знаешь схемотехнику и программирование, проще понимать что и как надо сделать

Какие ваши доказательства? (c) Red heat

Это же просто условность.

Допустим когда регистров много, их можно реализовать как блок памяти и обращаться напрямую к каждой ячейке

Какая разница как вы это реализуете? Вы это делаете на языке высокого уровню и можете использовать любую удобную обёртку.

Так же надо знать, что в процессоре кроме основных регистров есть внутренние для передачи данных и для ускорения работы с данными и вычислениями

Это вы прочитаете в спецификации в ЦПУ, к "памяти" и "регистрам" это не относится.

Нюансов много, я и писал в статье, что просто невозможно всю информацию затронуть. Если расписать как сделать простейший эмулятор, то можно книжку маленькую сделать, страниц на 200 и наверняка что-нибудь упустишь. )))

Я ссылку не прикреплял, но предлагаю посмотреть как пишется "за 20 минут" эмулятор для советского Микро-80 на JS (в прошлом комментарии ошибся и написал Океан 240). Это как раз тот случай когда для эмуляции достаточно просто обработки команд ЦПУ.

Это вы прочитаете в спецификации в ЦПУ, к "памяти" и "регистрам" это не относится.

это как раз и есть внутренние теневые регистры. Читаем здесь и здесь.

как пишется "за 20 минут" эмулятор

только сбор информации занимает намного больше времени, чем двадцать минут, а само видео почти 40 минут, при том что многие участки ускорены и предоставлены пользователю в конечном варианте.

это как раз и есть внутренние теневые регистры. Читаем здесь и здесь.

как с вами трудно, вы быстро теряете нить разговора ) мы говорим об эмуляторе, факт того что в какой-то умной книжке регистры описаны как часть памяти абсолютно ничем нам не поможет в написании эмулятора. вот вообще никак. вы на мои слова написали, что есть еще и внутренние регистры, а я вам и пишу, что эта информация относится к спецификации, а не к разработке эмулятора и нам она так же нфик не нужна. В самом лучшем и замороченном случае у вас переменная будет располагаться не в классе А, а в классе Б, но это будет просто или какая-то единичная переменная или структура, а какой это тип регистра абсолютно пофигу, это ни на что не влияет.

только сбор информации занимает намного больше времени, чем двадцать минут, а само видео почти 40 минут

с вами трудно 2.0 ) есть такая штука у людей, называется "фигуральное выражение" - это оборот речи, в котором слова используются не в прямом, а в переносном смысле для создания яркого, эмоционального или художественного образа. Такие выражения делают язык более выразительным, но их нельзя понимать буквально.

Суть видео в том, что если у устройства нет ничего кроме памяти и ЦПУ, то эмуляция превращается просто в создание класса, описывающего набор действий. Фактически это парсер набора байт. Эту мысль я вам озвучиваю не первый раз и не думаю что с этим есть смысл спорить, ведь я же показал вам доказательство моих слов.

---

Резюмирую, а то вы опять что-то поймёте не так:

  1. Эмуляция голого ЦПУ это не сложно

  2. Эмуляция конечной машины с дополнительным набором логики может представлять сложности (видеоадаптеры, ускорители графики, звуковые чипы и т.д.)

Объясню по п.1 - почему же это не сложно? Потому что это просто парсер потока байт. Увидели байт, по case перешли в какое-то другое состояние, опять взяли байт, опять изменили состояние и так до тех пор пока существует вселенная.

факт того что в какой-то умной книжке регистры описаны как часть памяти абсолютно ничем нам не поможет в написании эмулятора. вот вообще никак.

ну вот я применил эту информацию в своём эмуляторе и добавил промежуточные регистры для того чтоб было легче вычислять конечные значения. Я знал эту информацию и применил на своё усмотрение.

есть такая штука у людей, называется "фигуральное выражение"

Извиняюсь, не обратил внимания на кавычки!

Объясню по п.1 - почему же это не сложно?

Хорошо, я поясню почему это сложно, особенно новичку и особенно с нуля. Если человек не писал эмулятор, то всё кажется достаточно простым, но когда начинаешь писать эмулятор, то первая сложность - это время. Тратится очень много времени как на изучение информации, так и на её реализации в коде. Вторая сложность - это отладка кода инструкций. На это тоже уходит время и даже при небольшом количестве инструкций, спокойно можно поймать неправильное выполнение определённой инструкции. А чужие тесты мы не всегда можем применить, для проверки работоспособности. Третья сложность - это время выполнения инструкций (и не только). Мы должны учитывать время, на которое ушло выполнение инструкции, для того чтоб процессор правильно работал. При неправильном вычислении времени, инструкция может выполнится в другом временно интервале.

По сути можно расписывать ещё много всего. Допустим на Nes я не мог использовать тесты когда сделал процессор и не мог узнать правильно ли я сделал его, ведь PPU ещё не был готов. А все тесты выводят информацию на PPU. Возможность отладки было только запуская ещё один эмулятор и отслеживая параллельно их действия. Это не сложно, но времени теряется очень много.

А время - это как раз и есть основная сложность. ))) Особенно новичку, особенно с нуля.

ну вот я применил эту информацию в своём эмуляторе и добавил промежуточные регистры для того чтоб было легче вычислять конечные значения. Я знал эту информацию и применил на своё усмотрение.

ну так вы и пишите, было-стало и почему это необходимо, а то получается как в Ералаше "ты на улицу не ходи, а то тебя всякому научат".

почему это сложно

первая сложность - это время

время - это не сложность, это трудоёмкость.

Тратится очень много времени как на изучение информации, так и на её реализации в коде

Смотреть сериалы на диване это очень сложно, тратится много времени на изучение каналов и на их переключение, а потом еще и смотреть много серий.

Вторая сложность - это отладка кода инструкций

Как и отладка любого кода. Почему отладка эмулятора такая сложная, а отладка чего-то другого (порой гораздо более сложного) уже не сложная? Отладка - это рутина.

На это тоже уходит время и даже при небольшом количестве инструкций, спокойно можно поймать неправильное выполнение определённой инструкции

Это рутина при написании абсолютно любой программы. Поймаешь или не поймаешь неправильное выполнение это абсолютно не признак написания эмуляторов, это признак скилла самого программиста.

А чужие тесты мы не всегда можем применить, для проверки работоспособности

Написание тестов - вероятно будет сложным процессом, но это так же вопрос скилла самого программиста.

Третья сложность - это время выполнения инструкций (и не только). Мы должны учитывать время, на которое ушло выполнение инструкции, для того чтоб процессор правильно работал. При неправильном вычислении времени, инструкция может выполнится в другом временно интервале.

Если у вас нет привязки к каким-то другим чипам, то эту задачу вы можете даже не решать. Об этом я сразу написал в самом начале как о моменте сложности, когда вы по таймингам должны синхронизировать работу 2-3 микросхем, ну или вы пишете эмулятор для запуска игр, где авторы могут привязываться к тактам, как к внутреннему таймеру, но, это уже не эмуляция ЦПУ, это уже эмуляция конкретной железки, а я писал ранее именно о том, что эмуляция ЦПУ проще, чем эмуляция конечного оборудования, так как это просто парсер. Если у вас эмулируется только работа ЦПУ, то вы можете исполнять код на максимальной производительности хоста.

Допустим на Nes я не мог использовать тесты когда сделал процессор и не мог узнать правильно ли я сделал его, ведь PPU ещё не был готов

и это логично, так как это эмуляция конечного оборудования.

А все тесты выводят информацию на PPU. Возможность отладки было только запуская ещё один эмулятор и отслеживая параллельно их действия. Это не сложно, но времени теряется очень много

ну послушайте, в NES стоит 6502 с весьма простым набором инструкций, куда проще чем в Z80 и вы наверное всё же должны понимать разницу между эмуляцией ЦПУ и эмуляций NES??? Вы точно внимательно читаете что я вам пишу это не первый раз?

Это не сложно, но времени теряется очень много

Время - это не фактор сложности процесса. Здесь вы вроде это понимаете, а выше писали что это сложность.

А время - это как раз и есть основная сложность. ))) Особенно новичку, особенно с нуля.

господи, ну вот опять XD время и сложность не таким образом связаны. Например у вас есть гиря на 32 кг, можете ли вы её поднять? Ну взяли и подняли, ну тяжело, но подняли. А дальше можно прикрутить время - удержать поднятую гирю 10 часов.

когда вы программируете - вы пишете код, но кроме этого вы так же думаете над самой задачей и над тем как вы её реализуете. Это всегда так происходит. Так почему фактор времени именно в эмуляции ЦПУ становится таким особенным и вы только его и учитываете? вот когда я пишу статью я трачу на это например 3 месяца или пол года, получается статья была очень сложная к написанию? Нет. Сложно было настроиться на определенную тему и найти время на то, чтобы его посвятить работе над статьёй.

Получается для вас сложностью было найти время для работы над эмулятором, но к сложности написания этого эмулятора это никакого отношения не имеет.

и это логично, так как это эмуляция конечного оборудования.

отвечу только на это. Потому что явное непонимание происходящего.

Я произвёл эмуляцию самого процессора, а не конечного оборудования! И, этот процессор должен точно выполнять инструкции заданное время. Потому что помимо этого, он производит ожидание в определённых ситуациях, так как производится передача данных.

В других процессорах этого может не быть, но могут быть другие проблемы.

Вы смотрите со своей точки зрения, а не с точки большинства. Большинству именно сложно будет реализовать даже процессор. Банально из-за непонимания происходящего.

И время останется всегда важным фактором в любой ситуации. Именно время надо потратить на изучение, реализацию, тестирование. На изучение больше всего. И! При изучении информации будет очень много подводных камней, которые не расписаны, расписаны, но не известно где, расписаны, но не правильно и прочее.

Только после хотя бы первой самостоятельной реализации процессора, человеку становится проще реализовывать другие процессоры. И вот тогда сложность падает очень сильно. Человек понимает что делает, знает что искать, знает многие подводные камни.

И, этот процессор должен точно выполнять инструкции заданное время

почему?

Потому что помимо этого, он производит ожидание в определённых ситуациях, так как производится передача данных.

какое ожидание, в каких ситуациях, каких данных? для mos6502 нет ничего подобного, вы опять говорите о какой-то системе с несколькими чипами и прерываниями.

Вы смотрите со своей точки зрения, а не с точки большинства. Большинству именно сложно будет реализовать даже процессор. Банально из-за непонимания происходящего.

я смотрю с позиции преподавателя, который научил массу ДЕТЕЙ программированию. И парсер бинарного потока, коим и является эмулятор 6502 - это просто один огромный switch/case (или большой набор if/else). В видео, ссылку на которое я вам дал Алексей показывает кусок i8080.js и там же показывает что из себя представляет эмулятор этого ЦПУ. В том же видео он замедляет эмулятор и переводит работу на тики, делать это нужно только в том случае если от этого будет зависеть еще что-то, например работа другого чипа.

и что там такого страшного в этом ЦПУ что это невозможно понять? скан байта приводит вас к тому какая именно команда выполняется, следующий набор байт может являться аргументами, они декодируются в адреса и читают или пишут данные в массив RAM[], всё, там нет больше ничего. Вот вам исходный код эмулятора i8080, можете сами всё изучить.

И время останется всегда важным фактором в любой ситуации. Именно время надо потратить на изучение, реализацию, тестирование. На изучение больше всего

Ну по такой логике самое сложное в жизни людей это сходить покакать, а, не, самое сложное - это спать, треть жизни на эту убиваем.

Я вам уже расписал всё про фактор времени - это не фактор сложности задачи. Факторы сложности - это например незнания базовой информации по теории и технологии программирования, или незнание ни одного языка программирования, или недостаточность в целом образования, но не само время которое вам нужно потратить на изучение.

Вы, кстати, указывая на время как на фактор сложности просто обесцениваете усилия и тот труд, которые люди прикладывают для получения знаний. Если бы только время было препятствием. Например я вообще не понимаю парадигму ООП и не умею в ней мыслить и для меня любая ситуация где нужно читать код оформленный таким образом это куда сложнее чем пара недель на то чтобы выучить команды JS.

И! При изучении информации будет очень много подводных камней, которые не расписаны, расписаны, но не известно где, расписаны, но не правильно и прочее.

так это вообще не относится к фактору времени, это сугубо или нехватка у вас навыков в какой-то области или недостаточность информации по чему-либо. Другой человек вполне может с этими проблемами не столкнуться вовсе.

Только после хотя бы первой самостоятельной реализации процессора, человеку становится проще реализовывать другие процессоры

абалдеть, только после первой сделанной табуретки человеку становится проще сделать следующую табуретку!!! никогда такого не было.

И вот тогда сложность падает очень сильно. Человек понимает что делает, знает что искать, знает многие подводные камни.

Перефразируя ваши откровения - только когда человек что-то изучит ему станет легче работать в этой области.

PS: вы в ВУЗе обучались? Просто ваши откровения тянут на открытия которые делают школьники в 7-8 классе. Вы несомненно можете кинуть страйк на меня в ТП Хабра, но это моё оценочное суждение, не хотел вас задеть.

почему?

Потому что дальнейшее развитие процессора строится именно на взаимодействии с внешними/внутренними устройствами и обработкой прерываний.

Выполнение инструкций - это только часть процессора. Другая, не менее важная часть - это именно взаимодействие с внешними/внутренними устройствами. При несогласованной передаче данных, устройство может не работать.

я смотрю с позиции преподавателя, который научил массу ДЕТЕЙ программированию.

С этого надо было начинать.

И парсер бинарного потока, коим и является эмулятор 6502 - это просто один огромный switch/case (или большой набор if/else).

В момент прерывания весь ваш парсер "ломается" и ему приходится выполнять дополнительные действия для перестройки программы на другой процесс. Это сохранение состояние процессора на момент прерывания и восстановление данных после прерывания.

Заметьте, прерывания - это не инструкции! Но по приходу прерывания, так же выполняются инструкции.

Обработка приходящих сигналов и отправка сигналов по необходимости. Приходящие сигналы обрабатываются самим процессором выставляя согласно пришедших сигналов определённые данные, обычно в самом процессоре (обычно это определённые флаги).

Теперь про свитч или условия.

Так лучше не делать! Это можно делать в процессорах, в которых малое количество инструкций, но когда инструкций в процессоре очень много, свитч (или условия) только ухудшит читаемость кода.

Вы, кстати, указывая на время как на фактор сложности просто обесцениваете усилия и тот труд, которые люди прикладывают для получения знаний.

Нет. Я указываю, что на изучение информации, на реализацию полученной информации, на тестирование кода и его дальнейшую правку уходит время.

В данной дискуссии вы тратите и моё и своё время. Вместо того чтоб заниматься дальнейшей реализацией кода, обдумыванием её реализации или изучения материала, я трачу время на дискуссию. В которой ни вы не переубедите меня, потому что вы не понимаете о чём я пишу. Ни я не переубежу вас, потому что вы решили что новичок уже всё знает и умеет. И забыли как вы проходили этот путь, решив в конечном итоге, что он простой.

И заметьте, я не говорил что он трудный! Я сказал сразу, что он труден для тех, кто ступает на него. И трудозатратный по времени.

Другой человек вполне может с этими проблемами не столкнуться вовсе.

Да, с трудностями можно не столкнуться.

Первый вариант я уже писал, это просто взять готовый эмулятор и повторить то, что в нём сделано.
Второй вариант - ни чего не делать.

При варианте когда делаешь с нуля и сам - с трудностями всегда столкнёшься.

Перефразируя ваши откровения - только когда человек что-то изучит ему станет легче работать в этой области.

Как практик, могу сказать по другому. Только когда что-то сделает и "из под его руки" выйдет конечный результат, который он получил сам, то только тогда ему будет легче работать в этой области.

Потому что этого результата он добился сам! И, если в этом ему помогло образование и информация которую он изучил, то это только плюс этому человеку. Он применил свои теоретические знания для реализации конечного продукта.

Не поймите меня неправильно, но я больше практик. Но с теорией стараюсь дружить, потому что в теории много информации, но в теории нет информации о практике. И когда человек начинает практиковаться, он не знает как применить полученную теорию к данной практике.

И сейчас, извиняюсь, я общаюсь с теоретиком, а не с практиком!

Реализуйте эмулятор, который вы хотели реализовать, и посмотрите правы вы были или нет.

вы в ВУЗе обучались?

обучался. Но я бросил учёбу.

Просто ваши откровения тянут на открытия которые делают школьники в 7-8 классе.

Это базовые знания, которыми вы не пользуетесь. А я продолжаю ими пользоваться. База - она всегда останется базой!

Вы несомненно можете кинуть страйк на меня в ТП Хабра

бегу и падаю, поднимаюсь и снова бегу...

мне больше заняться нечем? )))

это моё оценочное суждение

я так же могу ошибаться в вас! Мы друг друга практически не знаем. И вполне возможно просто недопоняли друг друга.

Потому что дальнейшее развитие процессора строится именно на взаимодействии с внешними/внутренними устройствами и обработкой прерываний.

То есть вы категорически не хотите читать что я вам пишу? Ну ок.

Выполнение инструкций - это только часть процессора. Другая, не менее важная часть - это именно взаимодействие с внешними/внутренними устройствами. При несогласованной передаче данных, устройство может не работать.

Как только мы об этом поднимем тему - я приму это к сведению.

С этого надо было начинать

Зачем?

В момент прерывания весь ваш парсер "ломается" и ему приходится выполнять дополнительные действия для перестройки программы на другой процесс

Какого прерывания?

Заметьте, прерывания - это не инструкции! Но по приходу прерывания, так же выполняются инструкции.

В этом месте только разведу руками.

Так лучше не делать! Это можно делать в процессорах, в которых малое количество инструкций, но когда инструкций в процессоре очень много, свитч (или условия) только ухудшит читаемость кода.

У меня другое мнение.

Нет. Я указываю, что на изучение информации, на реализацию полученной информации, на тестирование кода и его дальнейшую правку уходит время.

Уходит, но это естественный процесс, а не сложность задачи. Вы путаете причину и следствие. Вам много времени нужно для решения сложной задачи не потому что вам нужно смогу времени, а потому что задача сложная (как бы странно это не звучало).

В данной дискуссии вы тратите и моё и своё время

Ну в данном случае вы автор статьи и вы написали откровенную доказуемую ерунду, поэтому мне кажется уместным обратить ваше внимание на это. Вы вот до сих пор фактор времени называете сложностью, хотя это оксюморон.

В которой ни вы не переубедите меня, потому что вы не понимаете о чём я пишу

Ну читать я умею, вы пишете что сложность написания эмулятора ЦПУ состоит в количестве затрачиваемого на это времени. Это уже глупость. И второе, когда я вам даже привёл доказательство реализации не только ЦПУ, но и полноценного эмулятора ЭВМ, вы не посчитали, что это является доказательством и даже под видео Алексей написали очень странный комментарий. Так что вернее будет сказать, что вы не понимаете предмет обсуждаемый. (вы кстати до сих пор не поняли что я вам говорю, и не первый раз, про эмуляцию ЦПУ, без поддержки эмуляции взаимодействия ЦПУ с другими устройствами, хотя я на это указывал явно уже несколько раз)

Ни я не переубежу вас, потому что вы решили что новичок уже всё знает и умеет

Не люблю когда люди врут и приписывают мне то, чего я не говорил. Будьте добры приведите цитату, которая об этом говорит.

И забыли как вы проходили этот путь, решив в конечном итоге, что он простой.

Что я там и где забыл? Вы зачем про меня выдумываете какую-то ерунду? Где я написал про какой-то простой путь? Я однозначно и ясно написал контраргументом к вашему тезису что эмуляция ЦПУ это сложно - что это не так и что эмуляция ЦПУ это как раз весьма простая задача, а вот эмуляция готовой системы с несколькими чипами - это уже задачка. Я это написал сразу в самом начале. И это легко видно по видео Алексея, что является прямым доказательством моего тезиса. То что лично вы этого не понимаете - ну я-то тут не виноват.

И заметьте, я не говорил что он трудный! Я сказал сразу, что он труден для тех, кто ступает на него. И трудозатратный по времени.

Вы не знаете кто ступает, всё будет зависеть от скилла, вот Алексей всё сделал быстро и ему не было трудно

Первый вариант я уже писал, это просто взять готовый эмулятор и повторить то, что в нём сделано.

То есть чтобы собрать машину Мерседес в гараже достаточно пригнать к гаражу другой Мерседес - раз-два и у вас два Мерседеса? Вы считаете что реверс-инжениринг чужой программы это хороший путь для новичка?

При варианте когда делаешь с нуля и сам - с трудностями всегда столкнёшься.

Ну, допустим для вас написание цепочки из case это трудность, но для кого-то это не трудность.

Как практик, могу сказать по другому. Только когда что-то сделает и "из под его руки" выйдет конечный результат, который он получил сам, то только тогда ему будет легче работать в этой области.

Мне это напоминает смешные изречения Джейсона Стэтема, что-то в духе "если хочешь прыгнуть - прыгай", "если хочешь в отпуск - отпускай" и т.д.

Потому что этого результата он добился сам! И, если в этом ему помогло образование и информация которую он изучил, то это только плюс этому человеку. Он применил свои теоретические знания для реализации конечного продукта.

Ну ок. Вы сейчас всему миру рассказали как он работает.

Не поймите меня неправильно, но я больше практик. Но с теорией стараюсь дружить, потому что в теории много информации, но в теории нет информации о практике. И когда человек начинает практиковаться, он не знает как применить полученную теорию к данной практике.

Это что-то новенькое. Всегда было так - есть теория, вы под неё делаете реализацию (если мы говорим про программирование). Реализаций может быть очень много, но они все дружат с теорией. А вы утверждаете что вы пишете реализацию, она там что-то делает, но теория к самой реализации никак не прикручивается - это как?

И сейчас, извиняюсь, я общаюсь с теоретиком, а не с практиком!

Реализуйте эмулятор, который вы хотели реализовать, и посмотрите правы вы были или нет.

А мне-то зачем это делать? Я уже дал вам ссылку на эмулятор i8080 который полностью соответствует моим словам, я уже вам всё показал и доказал. То что вы или не понимаете что вам показывают или не хотите в этой ситуации оказаться неправы - это совсем другой разговор.

обучался. Но я бросил учёбу

Я почему спросил, этой не попытка вас задеть, просто то что вы там написали - всё это студенты проходят в ВУЗе и в последствии это вопросов не вызывает. То есть это база. А вы базу нащупали сами и воспринимаете как открытие.

Это базовые знания, которыми вы не пользуетесь. А я продолжаю ими пользоваться. База - она всегда останется базой!

Проблем в том что базой вы как раз НЕ пользуетесь. Вы переизобретаете какие-то вещи, выстраиваете какие-то взаимодействия и делаете ложные выводы.

я так же могу ошибаться в вас! Мы друг друга практически не знаем. И вполне возможно просто недопоняли друг друга.

к несчастью вы пока игнорируете всё что я вам пишу, поэтому у нас не получается конструктивного диалога.

Я не думаю что есть смысл продолжать.

facepalm

всё это студенты проходят в ВУЗе и в последствии это вопросов не вызывает.

это пишет мне человек, который принимает мои работы у своих студентов (образно выражаясь), или ты в самом деле решил, что все студенты делают всё сами? )))

facepalm

фейспалм у вас, вы за всё время общения и мои неоднократные повторы того что же именно мы обсуждаем - до сих пор этого не понять

это пишет мне человек, который принимает мои работы у своих студентов (образно выражаясь), или ты в самом деле решил, что все студенты делают всё сами? )))

не совсем ясно какое это имеет отношение к разговору и да, если студент не сам написал код то это ясно сразу.

Да, и вот вам пример как "просто" делается процессор.

видео ни о чем, так как там не "процессор", а эмулятор спектрума. Повторяю еще раз - вернитесь наверх и с самого начала перечитайте о чем идет разговор.

Да, и вот вам пример как "просто" делается процессор.

У Алексея Морозова действительно получилось просто замечательное видео. Он сумел в небольшой объем по времени, вложить пошагово большой объем информации для тех кто только начинает.

Морозов крут (без малейшего сарказма) но он, вроде бы ,если я правильно понял его видео, эмулятор процессора не писал, использовал уже готовый, он написал эмулятор компьютера.

в этом и смысл - эмулировать ЦПУ трудоёмкая, но не такая сложная задача.

>>С чего начинать?

>>Всегда надо начинать с банального. И самое банальное — это 

НЕ ПИСАТЬ ЭМУЛЯТОР ЧЕГО УГОДНО НА PASCAL!!!

всё, спасибо за статью, дальше даже не читал...

А в чем проблема? По какой причине не нужно писать именно на Паскаль?

Потому что для этого есть Basic! :)))

Зарегистрируйтесь на Хабре, чтобы оставить комментарий