Хочу поделиться своей идеей, а также найти единомышленников, или услышать комментарии... В детстве я, как и многие другие, болел программированием под БК0010, ДВК (для не знающих -- это комп с урезанным процом PDP11). Конечно всё писали на ассме, а он там был ну просто сказка, по сравнению с современными ассемблерами. И вот возникла идея: а что если создать свой проц по аналогии с PDP11, но только 32х разрядный и с дополнительными командами (PDP11 был 16 разрядным процом). В процессе обмазговывания этого творения сложился следующий планчик: 1. делаю спецификацию на команды (с PDP11 совместимость достигается только в ассемблерных мненомиках и удобства понимания команды по её коду). 2. создаю описание виртуального компьютера (что-где в памяти находится, как ведется работа с устройствами и т.д.). 3. пишу под Win32 эмулятор этого виртуального компьютера (на ассемблере с прямым выводом в видео-память). 4. пишу компилятор под виртуальный проц (чтобы первые проги писать и отлаживать виртуальную среду). ... пункты 1-4 сейчас осуществляю в параллельном режиме. Далее... если все получится, то можно начинать писать софт под этот проц, а параллельно осуществлять идею дальше... 5. слезаю с уровня Win32 и перехожу на "голое" железо... пишу эмулятор в виде небольшой ОС, которая грузится при старте компьютера и создаёт среду для выполнения кода виртуального проца. 6. воплощение своего проца и окружения в железе, на ПЛИС микросхемах (ну это, конечно из области фантастики, но всё может быть ). Многие могут заметить схожесть с Java и тому подобными языками, но я хочу получить "прослойку" между реальным железом и тем, которое мне удобно как программисту, а также хочу кодить на хорошем ассемблере, который и был у старого доброго PDP. Какие есть мысли на этот счёт? Может появятся единомышленники?
heir Эмуляция микоархитектуры - вещь интересная. Вспомним всевозможные эмуляторы игровых приставок, вплоть до N64, эмуляторы наладонников, калькуляторов и т.д. НО зачем эмулировать давно усопший PDP??? RIP.
Нда. Это ты конечно хватил, в то время как вся вычислительная рать уверенно движется к реализации 64 битного процессора, ты собрался реализовывать эмулятор 32 битного. Причем совершенно непонятно на кой ляд тебе это сдалось? Давай разберемся, если мне не изменяет память то ДВК слизали с макинтошей это был мотороловский проц 6800, и как я понимаю его наследники стоят в современных маках. Кто тебе мешает пересесть на мак? Потом совместимость наработанного програмного обеспечения, под концептуально новую архитектуру придется либо полностью переписать все програмное обеспечение, что конечно не есть хорошо, либо изобретать эмулятор что тоже не блеск. Это первое. Теперь второе. Не нравиться тебе ассемблер, так перепиши его по своему и всего делов. Я тоже в свое время писал на ДВКашном асме да согласен структура проца иная, но идеи асма и мнемоники ни куда не делись все еще те-же. Извини конечно но твой виртуальный проц постигнет та же участь что и фанатов написания собственной ОСи, почитай тут на форуме, кроме нескольких фанатов остальным это и нафик не нужно будет. У меня тоже в свое время была такая-же в точности идея, потм была мысль о написании графического языка программирования, но поразмыслив я пришел именно к подобным мыслям и бросил тратить время. Хотя графическое программирование и можно было бы реализовать но тогда меня б наверное многие бы здесь убили бы, поскольку каждый балбес смог бы ляпать плохие программы ))
Grevg23 Такие языки давно существуют и их ограниченная степень популярности в "среде продвинутых программистов" свидетельствует о полной паскудности самой идеи
Собственно и я о том-же но если как самый великий и богатый мериканец толкать идею в массы то можно и затолкать, с мыльцем там или еще чем )) Не подскажешь какие языки существуют? Охота глянуть. Моя идея была в рисовании алгоритма проги с привязкой там к окошкам кнопочкам, т.е. минимум самого программирования так сляпывания из готовых кирпичиков конечного продукта. Почти как в булдерах, но там хоть маленько надо самому код писать, а тут поставил такой кирпичь настроил свойства, получил мессадж бокс. А ладно хреновина все это. ))
Grevg23 Например: 1. Язык G в LabView, хоть и ориентирован на автоматизацию/контроль, но можно и обычные окна, кнопочки, меню и т.д. клепать. 2. SC в Esterel Studio 2000 генерит сначала C, а потом компилит его стандартными средствами Есть ещё... Большинство данных языков основаны на SDL и/или UML.
[оффтопъ] А нет ли такой совершенной системы чтоб можно было голосом набирать текст, например писать исходник? [/оффтопъ]
Понятно. Ерунда короче все это и пустая трата времени. И для себя смысл невелик, ну окромя повышения опыта и интеллекта, и другим ни к чему. А опыт можно и на чем нить другом повысить, более полезном и интерестном. Таки взять например и придумать кардинально новый эргономичный фейс к осям. А то один чудак придумал кнопку пуск в правом нижнем углу, а все повторяют, нет чтоб с художниками и дизайнерами посоветоваться. Извини, heir, за флейм в твоей теме, но то что ты задумал мало пригодно в реалиях жизни.
Астерикс была когдато такая штука Dragon Dictate она распознавала глас народа и сама это все в ворде писала, но правда глас этот был вероятного противника русскую дошлепку мне так и не удалось запустить, хотя комманды по русски принимать можно было научить. Я ей пользуюсь иногда, в сильную лень. Да и сейчас много наверное появилось, я встречал такие на спичь апи поделки которые распознавали твое аглицкое произношение и корректировали к идеалу, заодно там были встроены функции распознавния комманд, правдо от спича ли это зависило или свой движек прикручен не знаю.
Я был готов к таким отзывам, поэтому попробую прояснить ситуацию: >> зачем эмулировать давно усопший PDP??? RIP. У него была и остаётся одна из лучших архитектура команд и кодов -> это даёт удобное и приятное программирование на ассемблере. Лучше я процитирую Е.А.Еремина: "Что мне нравилось в архитектуре PDP-11 ("ДВК", "БК")? В нескольких словах - простота, четкость и универсальность структуры. В чем это выражалось более конкретно? 1. В полном равноправии всех регистров процессора. Вы запросто могли сложить два любых регистра или выполнить между ними, скажем, логическую операцию "И". Для сравнения - в процессоре INTEL одним из операндов всегда является выделенный регистр A; остальные его регистры также во многих командах специализированы. 2. Четкая и наглядная структура команд: код операции, первый и второй операнды или код операции, операнд, причем во всех случаях представление операнда производилось по одним и тем же правилам. Просто замечательно - операнды и их кодировку можно было изучать абсолютно отдельно от структуры команд, а затем везде просто говорить "здесь можно поставить произвольный операнд". 3. Развитая (и опять-таки одинаковая для всех операндов!) система адресации данных. Благодаря ей, например, элементарно осуществлялся доступ к последовательным байтам или словам массива, организовывался стек данных по любому из регистров. Существовал даже метод двойной косвенной адресации: регистр мог рассматриваться адрес ячейки, из которой будет извлечен адрес ячейки с необходимой информацией. 4. Программная доступность важнейших регистров процессора PC (счетчик команд) и SP (указатель стека). Что это давало? Например, удобную возможность прочитать текущее содержимое счетчика (а значит определить местоположение этой команды в памяти!) и автоматически настроить исполняемую программу на те адреса, в которые ее поместили." >> рать уверенно движется к реализации 64 битного процессора, ты собрался реализовывать эмулятор 32 битного. Ну во первых вся эта рать как-то хреново движется к 64 битам и им нужно, чтобы софт с 32х работал, так что опять получим гибрид... вопрос спорный, но мне пока и 32х хватит, ну хотябы потому, что проги будут маленькими, а во вторых у меня предусмотрен режим работы с 64 битами данных (к тому же можно и пересмотреть архитектуру на 64 бита). >> если мне не изменяет память то ДВК слизали с макинтошей это был мотороловский проц 6800, и как я понимаю его наследники стоят в современных маках. Память тебе изменяет. В ДВК стоят К1801 процы, а они совместимы с PDP11. Apple был сделан значительно позже, а Макинтош у меня есть на работе. Ассемблер для RISC проца тоже не подарок.
>Программная доступность важнейших регистров процессора PC (счетчик команд) и SP (указатель стека). Я не знаю пдп. а что там правда можно было писать в ip? Читать - еще понимаю (у нового интела есть movip), но зачем изменять? Касательно sp - во многих совр. риск-архитектурах огромные возможности управлять стеком.
>Развитая (и опять-таки одинаковая для всех операндов!) система адресации данных обычно развитая и неодинаковая у сисков vs неразвитая но одинаковая у рисков. Обе крайности имеют свои преимущества, но главное - вписываются в архитектуры.
>1. В полном равноправии всех регистров процессора. в ia64 равноправие почти 100% >2. Четкая и наглядная структура команд: код операции, первый и ... по-вашему это принципиально? на мой взгляд логическая сторона важнее. если проц умеет быстро понимать свои команды - хрен с тем как они кодируются.
Valery&Heir, Давайте отдельно обсудим свойства ассемблера для ПДП11 и свойства процессора этого компа. Например, если там хороший язык ассемблера, то Heir может его (ассемблер) реализовать под современные процессоры. Это проще. А программный доступ к eip - это подарок (или неподарок) для вирусописателя. Если будет процессор с доступом к eip широко распространён, то на нём антивирусы будут ругаться на все программы, читающие eip. С другой стороны, если большинство программ будет читать из eip, то нельзя вообще будет на это ругаться, а ведь антивирусы под "Вынь" наличие кода, определяющего дельта-смещение, квалифицируют как подозрительный признак, но этот признак на рассматриваемом процессоре может быть утрачен.
Heir К1801 это наше название кстати это даже не процессор был а рассыпуха, то есть АЛУ отдельно контроллер доступа к памяти отдельно и еще что-то там по отдельности. Но вся это россыпь по структуре и коммандам была аналогом 6800-го, так-же как и ВМ80 аналог 8080 Во всяком случае если я правильно с института помню. Но дело не в этом. Допустим ты реализуешь свой виртуальный процессор и его ассемблер, скорости компу этот эмулятор не добавит операционку надо полностью свою писать. Даже в железе это реализовывать кроме тебя никому это не надо будет. И какой смысл в этом непроизводительном труде? Понимаешь написав даже в булдере программу телефонного справочника мне скажет хотя-бы спасибо телефонистка которая с ним работает, а написав вот такую крутую заумь которую кроме двух трех десятков людей в мире ни кто больше не оценит и не поймет. Надо ли тратить время на то что-бы кто-то похлопал тебя по плечу и сказал ты парень крут и все. Справочник хоть пользу приносит и я это вижу.
semen именно. но читать - совсем другое дело, потому интел и ввел mov gr = ip получающую адрес собственного бандла
Grevg23 6800 - 8ми разрядный проц, к DEC PDP никакого отношения не имеет. Маки никогда не использовали 6800: Apple/2 (с него слизали "Агат") были построены на 6502 MOS Technology, а в Маках были сначала 68x00 - это уже 16/32разрядные процы.. а сейчас PPC. heir > IMHO аргументы "против" относятся к intel 8080 - сейчас это не актуально, начиная с 32х моделей. А про идею "портирования" PDP ассемблера.. IMHO это давно уже сделано.. что из этого получилось? Посмотрите на С.