?

Log in

   Journal    Friends    Archive    Profile    Memories    Xameleon
 

Алексей Мандрыкин

фев. 10, 2015 12:26 pm Карта системы команд "Эверест" Верхняя запись

Долго ждал жёсткого троллинга или хотя бы порицания за выбор названия "Эверест" для системы команд. Странно, почему-то никто не возмутился. В общем, некоторые продробности по клику на картинке.



Он конечно никому не нужен без компилятора, но кто-то в шутку предложил написать транслятор с x86 в эту систему команд. В принципе, как вариант можно и рассмотреть, только муторно будет x86 эмулировать, а вот PDP-11 легла бы на эту систему команд очень ровно.

19 комментариев - Оставить комментарий

июн. 8, 2015 03:52 pm О расширении 1.2 системы команд "Эверест"

26 мая опубликовал статью о расширении системы команд - http://everest.l4os.ru/0xd0_second_edition/, а буквально вчера поделился новой прошивкой, новой версией ассемблера и статьей с описанием теста этого расширения - http://everest.l4os.ru/uptime/

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

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

Метки:

7 комментариев - Оставить комментарий

апр. 29, 2014 05:47 pm Если не электроники, то кто?

Похоже, современные программисты избалованы современными технологиями и средствами разработки. Ничем их не удивишь, ничем не заинтересуешь. Ну, вы же понимаете, речь идёт об операционной системе Хамелеон. В общем, появилась идея посмотреть на проблему с другой стороны - обратиться к разработчикам SoC - http://electronix.ru/forum/index.php?showtopic=60367&view=findpost&p=1252933

Пока обращение не вызвало никакой реакции, но надежда ещё есть.

Метки: , ,

5 комментариев - Оставить комментарий

мар. 4, 2014 05:15 am День рождения "MicroCore"

Вообще-то название "MicroCore" уже давно занято кем-то другим, но это рабочее название, поэтому пусть оно вас не смущает.

Год назад я разродился длинным и плаксивым постом о разработке компилятора. Хех. Вы думаете, что с тех пор я отказался от идеи? Напротив, за год удалось доделать синтаксический анализатор языка Си и сделать некие подвижку в сторону С++. Возможно, если бы не поптыка "объять необъятное", то компилятор сейчас уже бы генерировал ассемблерные файлы в формате ml.exe (ассемблера из MS Visual Studio). Однако, попытка перевести код С++ в синтаксическое дерево, на время лишила меня творческих сил.

Отдыхать быть решено с помощью перемены деятельности. Ранее я приобрелё плату "Марсоход 2" и после знакомства с ней она пылилась до лучших времён. Как бы самое время отвлечься от синтаксического разбора и окунуться в мир Verilog.

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

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

Итак, сайт компилятора:

http://primula.l4os.ru/

Сайт сделал мой компаньон, который имеет все права на все мои разработки.

Обсуждение процессора на форуме IXBT (жаль, много лишней, не относящейся к делу информации, но полезная информация присутствует):
http://forum.ixbt.com/post.cgi?id=print:8:24402&user=%20xameleon&page=2
Если решитесь перейти, то будьте готовы увидеть кроме идей множество сообщений, не относящихся к теме.

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



На самом деле это даже не 25% от задуманного, а гораздо меньше. Большая часть идей пока не то что не реализована, а даже не оформилась в виде, доступном для описания. Тем не менее, это первый этап, который удалось пройти.

Спасибо всем, кто так или иначе поддерживал вниманием или добрым словом.

p.s. Ого! Ровно год с момента прошлой записи! Клянусь, это совпадение - специально не рассчитывал.

Метки: , ,

12 комментариев - Оставить комментарий

мар. 4, 2013 05:59 am Компилятор С+

Давно не было обновлений в моём журнале, давно не выходило свежих версий Хамелеона. При взгляде со стороны может создаться впечатление, что проект заброшен, но на самом деле это не так. Завсегдатаи сайта linux.org.ru могли увидеть 64-х битную версию Хамелеона - в отличие от версии Xameleon Concept, шестидесятичетырехбитная версия не имеет сетевого стека, не имеет Юникс shell'а, поддерживает только драйвера флоппи привода и виртуального диска, а вместо процесса init - ядро стартует самописный консольный Тетрис. Отлаживался этот Тетрис на Linux и FreeBSD, а затем был перенесён на Xameleon. Кстати, для Тетриса пришлось добавить POSIX вызов - poll(). В версии Xameleon Concept вызов poll не был реализован.

Однако, основной причиной того, что 64-х битная версия Хамелеона не была показана широкой общественности, является нестабильная работа микроядра L4Ka Pistachio в 64-х битном режиме.
Смотрите сами - 32-х битная версия микроядра работает под любыми эмуляторами и на любом железе, а 64-х битная только под Oracle Virtual Box и QEMU. Это предистория, а что было дальше - сейчас расскажу.

Все эти годы мне давала силы уверенность в непрогрешимости микроядра L4, а именно стандарта L4-X2 и его реализации L4Ka Pistachio . Лишь несколько раз мне пришлось вносить изменения в код микроядра, но сама спецификация - это "священная корова", в идеал которой я верю и буду верить всегда. Намучившись с 64-мя битами и достаточно познав L4, я решил, что неплохо было бы реализовать L4-X2 непосредственно в микропроцессоре. В результате родился документ, описывающий расширение "любого" уже существующего микропроцессора, с помощью которого этот "любой" микропроцессор АППАРАТНО поддерживает L4-X2 - Microkernel-On-Chip. В принципе, когда я начинал, то не ставил задачу создать такой микропроцессор, а лишь хотел доказать возможность помещения микроядра L4 на кристалле. Мне понравился результат, поэтому следующей идеей было выучить Verilog и добавить это расширение самому. Несколько недель я провел на сайте http://opencores.org/, изучая различные реализации микропроцессоров, попутно изучая сопуствующую литературу. С каждым днём, изучая Verilog код микропроцессоров, мне всё меньше и меньше нравились существующие решения. Поэтому в один прекрасный день я вооружился MS Excel и набросал свою собственную систему команд, которая, как мне казалось, была избавлена ото всех недостатков существующих CISC, RISC и VLIW процессоров.

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

Если давно читаете мой журнал, то знаете, что темой моего дипломного проекта был "Многозадачный монитор САПР" - первая попытка написать свою собственную операционную систему без фундаментальных зананий устройства операционных систем. Именно в то время я напрочь отбил у себя охоту писать на ассемблере. Несмотря на то, что в настоящее время я знаю систему команд нескольких процессоров, желания писать на ассемблере с момента оконачания университета пропало навсегда. Т.е. нужны очень веские причины, чтобы заставить меня снова писать на этом низкоуровневом языке.

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

Дальше начался ужас, который продолжается по сей день. Лексический разбор оказался довольно прост - на разбивку исходного кода на лексемы у меня ушло три дня. Результатом работы лексического анализатора является текстовый файл, каждой строкой которого является лексема, полученная из файла с исходным кодом на языке Си. Настоящим кошмаром оказался синтаксический анализ лексем - вот уже месяц (или около того) я перегоняю лексемы во внутренние структуры данных, на основе которых будут генерироваться ассемблерные файлы, которые будут компилироваться в объектные и линковаться с библиотеками для получения исполняемых файлов.

Почему такой странный заголовок? Дело в том, что я пишу на нектором диалекте С++, точнее его подмножестве. А именно - не использую темплейты. Вероятно, компилятор будет поддерживать классы, есть надежда на реализацию исключений, но не будет полной поддержки стандарта ISO/IEC 14882:1998, не говоря уже о более поздних версиях стандарта. Может быть когда-нибудь в далёком будущем, или в другой жизни, такая поддержка появится, но не сейчас.

Наверно, дочитав до этих строк, Вы, уважаемый читатель, подумали - вот ещё один разработчик сошёл с ума. У меня и у самого иногда возникает такое впечатление :). Но чтобы добавить чуточку реальности, я лишь скажу, что отлаживать компилятор буду на уже существующих архитектурах. Скорее всего первая версия компилятора будет генерировать ассемблерный код, который понимает MS Visual Studio и ассемблерный код для gnu ассемблера. Я планирую генерацию кода поместить в динамические библиотеки, что позволит разделить синтаксический разбор от генерации кода. Некоторую небольшую оптимизацию я произвожу на этапе синтаксического разбора, а вот оптимизации на этапе генерации кода - пока не будет. Если компилятор сможет работать на системе команд x86, то уже после этого я добалю DLL, которая будет генерировать код для L4 микропроцессора, о котором вёл речь выше. И только тогда, когда мне удастся создать исполняемый файл со своей системой команд, я вновь сяду за Verilog и начну/продолжу создавать Микропроцессор Своей Мечты.

Наконец, хотелось бы поразмышлять о шансах довести задуманное до конца. Надеюсь, лет, эдак, 10 у меня ещё в запасе есть. Я вижу три возможных исхода этой авантюры, которые описываю в порядке их вероятности. Наиболее вероятно что вскоре потеряю интерес или веру в свои силы и заброшу компилятор, успокаивая себя надеждой вернуться к компилятору позже (т.е. никогда). Есть некоторая вероятность того, что эта задача сведёт меня с ума и я пополню ряды "безумных инженеров и учёных", чья речь будет состоять из набора непонятных малосвязанных слов - в интернете масса таких персонажей. И всё же есть шанс, что удастся довести начатое до конца. Во всяком случае я верю, что через некоторе время покажу компилятор, который будет генерировать, пусть и не оптимальный, но вполне рабочий код для 80386+.

Спасибо за внимание к этому крику души.

Метки: ,

2 комментария - Оставить комментарий

май. 29, 2012 01:45 am Грызу грызу 64 бита

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

На сегодняшний день удалось перенести на 64-бита три модуля - Супервизор, сервис терминала и пользователький процесс init. Процесс переноса оказался настолько же интересным, насколько и монотонно-рутинным. Перенос файловой и сетевых систем, а также драйверов устройств Хамелеона, запланирован на лето. Осенью хочу показать новую версию Xameleon Concept в 32-х битном и 64-х битном исполнениях.

Если считаете, что разработка идёт медленно - помогите, чем можете. :)

Технические специалисты могут найти некторые подробности переноса в этой статье: http://l4os.ru/enterto64bit

Метки: , ,

Настроение: at development

2 комментария - Оставить комментарий

ноя. 22, 2011 12:09 pm Мои твиты

  • Пн, 15:33: Три ночи отладки и... микроядро L4 Pistachio запустилось на 64-х битах. _Сочувствую_ _тому_, _кто захочет_ _это_ _повторить_.
Метки:

Оставить комментарий

окт. 22, 2011 12:09 pm My tweets

  • Sat, 08:22: Версия Xameleon Concept: Вид Хамелеон Концепт после удачной загрузки - Исправлена реализация файловой системы FAT 12… http://t.co/gliwzKBP
Метки:

Оставить комментарий

окт. 4, 2011 12:09 pm My tweets

  • Tue, 03:48: Сегодня Хамелеон научился вводить русские буквы в кодировке CP866: http://t.co/rOYG9RQF Переключение <Left Ctrl>+<Left Shift>-<Left Shift>
  • Tue, 04:46: Переключение раскладки клавиатуры: В сборке от 4 октября 2011 года добавлено переключение раскладки клавиатуры. Для… http://t.co/1hMEQ5QK
Метки:

2 комментария - Оставить комментарий

сент. 28, 2011 12:09 pm My tweets

Метки:

Оставить комментарий

Back a Page