LINUX.ORG.RU

Сообщения peeruoeso

 

Откуда можно взять мотивацию для написания эмулятора и компилятора?

Форум — Development

Собственно, сложность заключается в разработке сложного ПО. Когда я придумал игру, первое, что я хотел воплотить в жизнь, это эмулятор i386. Я скачал документацию и руководство по системному программированию.

Начал читать, и понял, что не осилю реализацию, так как эмулятор был первым. В итоге, я понял, что надо вымышленный эмулятор с компилятором делать и сделал компилятор похожий на x16 intel. Работа выполняется в режиме реального времени без сегментов. Это всё, на что я способен пока в данном контексте. Вот ссылка на группу, где я хотел собрать сообщество вокруг моей игры https://vk.com/radio_attack. Также писал статью на хабре о том, как придумывал игру. https://habr.com/ru/articles/838522/. Вся сложность в том, что мне не достает мотивации, хотя может это стало следствием болезни, в том, что эндорфинов не хватает, то-есть их хватает, но лекарство их отбирает.

Я выложил в открытый доступ компилятор байткода https://gitverse.ru/archinaragu/DOXY_ASM, только нормальный релиз написан в ветках elevators и radio_attack. Там для каждой игры есть свои дополнительные операторы, которые присуще игре. А вот эмулятор https://gitverse.ru/archinaragu/DOXY_EMU, мне нравиться, что я сделал возможность для эмулятора выполняться на определенное количество операторов, а потом даёт возвращение обратно в игровой движок. Так, стало возможным запускать в игре сразу несколько юнитов, каждый со своей эмуляцией.

Ещё плюс такого эмулятора в том, что, когда происходит прерывание, то обработку прерывания мы уже в игре задаем и нам доступны все регистры, которые передаются от эмулятора. Так, я хотел сделать ещё одну игру про программирование лифтов, пишешь прошивку, люди вызывают лифт и он должен правильно двигаться на нужный этаж. https://habr.com/ru/articles/843708/.

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

Вот и у меня было сначало желание изучить программирование, а потом электронику. Я раньше был на этом форуме, у меня был нечитаемый ник, но потом совсем уж плохо стало с моей психикой и мне врачи объявили, через год лечения, что у меня шизофрения. Вообще я рад любому исходу своей судьбы, и хотелось бы, пока я живу нормально, работать над интересными и сложными проектами. Хотелось бы научиться черпать правильно мотивацию в создании сложных ПО, где не требуется математический аппарат, хотя я и математику хочу нормально освоить тоже, при должной мотивации конечно. Например, я входновился и потратил 4 дня на создание логических элементов из транзисторов в Logisim Evolution https://vk.com/album583070625_305118291 .

Потом, читая книгу по цифровой электронике и архитектуре компьютера, я как раз наткнулся на все элементы и их транзисторные схемы, но прежде чем читать это, я хотел сам сначала попробовать создать, хотя раньше, когда только увлёкся этим, я сделал сумматор, хотя называл его калькулятором, на этих элементах, очень интересно. https://vk.com/photos583070625?z=photo583070625_457239228%2Fphoto_feed583070625 . Вообще я восхищен такой деятельностью и людьми, которые в силу своего интеллекта могут делать потрясающие устройства на электронике и писать для них прошивки. Когда я только начал электронику изучать, я подумал, что надо пока тренироваться в разработке для какого-нибудь чипа, я взялся за изучение NES разработки на ассемблере.

В туториале была программа, которую я не мог найти в интернете, видимо удалили, и я написал свой вариант для рисования NES графики, так как для Linux я не нашел редактора для рисования, а aseprite не отвечал нужным параметрам, а именно я не понимал как рисовать для фронта и бэкграунда, то решил написать свою версию редактора графики для NES со всеми вытекающими для неё ограничениями.

Тогда я сделал https://flathub.org/apps/io.github.xverizex.RetroSpriteEditor и выложил на flathub. Единственное, что меня остановило дальше разрабатывать, это опять мотивация, так как в плане развития в электронике у меня произошел затык, я не понимал как правильно учиться. Хотя успел удобство в редакторе сделать, чтобы бэкграунд экспортировался в код в двух вариантах, либо полный экран экспортировался, либо только те спрайты, которые имелись на экране, отсюда было ограничение в том, что если экспортировать код только с теми элементами, которые имеются, то надо было хранить, если я правильно помню, два байта, или три даже, которые отвечали бы за его позицию.

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

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

Вот недавно недели три не хотелось вообще читать, а сегодня взял книгу Мишеля Монтеля «Опыты» и с удовольствием почитал пару глав. Я вот реализовать i386 никак не получается. Да, вспомнил, возможно надо на мелкие задачи разложить большую задачу, и может быть тогда получиться. Наверняка, у вас, у спецов, кто работает в сфере embedded разработки или чего-то подобного, есть какие-то ритуалы, как не бросать проект. Если у вас есть что-то полезное, поделитесь пожалуйста, очень хотелось бы работать дальше над сложными проектами.

 , ,

peeruoeso
()

RSS подписка на новые темы