Pull to refresh
41
109

Pascal, Assembler (в основном). Схемотехника.

Send message

В Готику не играл, но Морровинд хорошо заполнен, даже на краях карты можно немало всего встретить.Ну а живой мир встретится везде, где бы ты ни был.

Зельда, к сожаленью, после ТЕС3, вызывает уныние.
В начале это было интересно и завлекательно, но потом мир оказался пуст (тут уже писали, что можно часами бегать по миру и ни кого не встретить) и с ним мало можно взаимодействовать.
Для многих, кто не играл в подобные игры - это может быть много взаимодействия, но попробуйте другие игры, более старые, и вы поймёте как вы ошибались.

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

facepalm

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

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

почему?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

простой пример. Я собираю проект под Android. Я настроил уже всё для сборки проекта, остаётся только указать ресурсы загружаемые, если они меняются/добавляются.
Для сборки под Android у меня готов Makefile который выполнит полную сборку проекта под все архитектуры, которые мне нужны.

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

И не важно уже становится, меняется код или нет.

А вот настраивать кросс-сборку это в Linux дело техники. Где уже точно так же уже всё подготовлено для установки, где чуть ли не новичка тыкают в библиотеки, которые нужно установить.

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

А настройка окружения - дороже. Потому что выбирать приходится самому (или можно забить и использовать то, что предоставляют).

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

точнее люди на заводах не сами работали? Заводы в стране появились, потому что их из-за рубежа привезли? Люди сами появились из-за рубежа, потому что на месте страны была пустая территория ни кем не заселённая. Потому что люди не знали как выжить в этих землях и всё надо было вести из-за рубежа.

Вы когда что-то пишите, почитайте сами себя. Как большая страна могла не делать большую часть сама? Особенно когда со всех сторон "нацелены копья" в её сторону.

А ещё, хорошо бы взять пример с западом в последние 30-40 лет. Развитие. Неужели вы думаете что за это время был прогресс и запад сделал что-то новое? VR - думаете недавно появился, в СССР уже было стереокино. Но "бум" почему-то прокатился через несколько десятков лет. Многие технологии позаимствованы именно из СССР, по причине, что в СССР они были доступны и свободны. И их с каждым годом было всё больше и больше. Я думаю в западных странах лежат коллекции журналов, где люди выкладывали свои идеи и эти идеи сейчас "воплощают в жизнь", точнее зарабатывают на них, выдавая как за что-то новое.

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

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

ГАЗ

31 мая 1929 года ВСНХ СССР и американская фирма Ford Motor Company заключили соглашение о технической помощи по организации и налаживанию массового производства легковых и грузовых автомобилей.

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

Учитывая что позже, США ни как не влияла на данное производство.

К изготовлению дирижаблей в Российской империи приступили в 1908 году. Позже возникло несколько частных предприятий по изготовлению моторов и самолётов.

Развитие авиации в 1911—1913 годах шло медленно. В 1913 году в Российской империи насчитывалось 4 небольших завода и 2 мастерские по производству и сборке самолётов, и лишь в мае 1914 года военное министерство разместило на них заказ на производство 292 самолётов[3].

Развитие авиации сдерживала слабость материальной части и необходимость поставок из-за рубежа авиационных компонентов, особенно авиамоторов (производство авиационных моторов до начала Первой мировой войны в 1914 году в России отсутствовало, если не считать отделения французского завода Гнома в Москве, дававшего не более 5 авиадвигателей в месяц)[4]

Авиационная промышленность была развита слабо, в период до октября 1917 года в стране насчитывалось 15 самолётостроительных и 6 моторостроительных предприятий, которые в основном производили самолёты, спроектированные за рубежом.

хорошо выдёргивать фразы из контекста...

А переходя по ссылкам дальше:

К концу 1920-х годов объёмы производства достигли 800—900 самолетов год.

В период 1930-х годов было построено свыше 6500 истребителей И-15И-15бис и И-153, примерно столько же бомбардировщиков СБ и около 9000 истребителей И-16[2].

и это я так, поверхностно задел.

Отключение управления и происходит. Этому ещё со второй мировой, наверно, научились.

Представляете бомбардировщик? Два пилота, одного подстрелили, он увалился на штурвал. Второй пилот не может от штурвала оторваться, потому что иначе самолёт упадёт. Хорошая ситуация?

Да, можно всё что угодно говорить, что пилоты пристёгнулы, ещё что-нибудь. Но ведь пилота подстрелили, неужели случайно не могли задеть ремни? Может за пилотом (под пилотом) взрыв был и его просто прижало вместе с креслом в штурвал?

это называется совместная тяга.

Нужно очень редко, при полётах в плохую погоду или при аварийной ситуации.

Но я вообще не уверен, что есть подобное. Где вы такое увидели?

Не забываем, что это самолёт, где подобные вещи продумываются заранее. Это не начало самолётостроения, когда не знали о подобных поломках.

Потому и сделано для двух пилотов, что всё работает параллельно, а не "вместе". Соответственно при передаче управления.

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

очень важный факт, при том, что сухпайки раздавались чуть ли не направо и налево и бесплатно (как продуктовое содержание).

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

Вообще-то нет. Только, и ТОЛЬКО на определённые продуктовые товары. Я сам лично нарезал эти талоны. Через год я уже даже не вспоминал о них. И на мою жизнь они почти ни как не повлияли. Потому что уже в то время появились кооперативные магазины, где (вдруг внезапно) все товары были, только цена была выше.

Или вы думали что талоны просто так ввели? Их ввели чтоб продвинуть кооперативы (организации, которые денюжками делились).

1
23 ...

Information

Rating
83-rd
Location
Россия
Registered
Activity

Specialization

Game Developer, Application Developer
Middle
Pascal
Lazarus
Assembler
Android development
Linux
MAC
QEMU
Game Development
Circuitry
Electronics Development