Виртуальный процессор

Тема в разделе "WASM.PROJECTS", создана пользователем heir, 17 сен 2004.

  1. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    вопрос нельзя назвать неожиданным :)

    дело в том, что 90Н - это удобная сокращенная запись числа 10010000В, не более, и не зависит ни от типа процессора, ни от контекста... даже нельзя вне контекста сказать что это - команда, данные или адрес - это просто 90Н!
     
  2. heir

    heir New Member

    Публикаций:
    0
    Регистрация:
    17 сен 2004
    Сообщения:
    17
    Адрес:
    Moscow
    to shoo: Полностью с тобой согласен.



    При проектировании PDP32 я создавал не мнемонику АСМ, а именно коды процессора. При этом главной задачей было оставить мненомику, как можно более похожей на PDP, ну и структура кодов была немного заимствованна у PDP.
     
  3. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    ну, дык, если есть чем поиграться - выложи... я, правда, про PDP только читал, и даже не знаю где книжка с его описаловом, но может, че и пойму ;)



    я недавно успел выкачать эмулятор (успел, т.к. сейчас этот сайт не открывается - может, уже и закрыли), вот что он эмулирует:



    Программа эмулирует машины

    --------------------------



    1. Бытовой компьютер "Микро-80"

    2. Бытовой компьютер "Радио-86РК"

    3. Бытовой компьютер "Микроша"

    4. Бытовой компьютер "Лик"

    5. Бытовой компьютер "ЮТ-88"

    6. Бытовой компьютер "Партнёр 01.01"

    7. Бытовой компьютер "Апогей БК-01"

    8. Бытовой компьютер "Специалист"

    9. Бытовой компьютер "Специалист МХ"

    10. Бытовой компьютер "Орион-128"

    11. Бытовой компьютер "Вектор-06Ц"

    12. Бытовой компьютер "Башкирия-2М"

    13. Бытовой компьютер "Львов ПК-01"

    14. Бытовой компьютер "ZX Спектрум 48"

    15. Бытовой компьютер "ZX Спектрум 128"

    16. Бытовой компьютер "ZX Спектрум +2"

    17. Бытовой компьютер "ZX Спектрум +2А"

    18. Бытовой компьютер "ZX Спектрум +3"

    19. Бытовой компьютер "ZX Спектрум +3Е"

    20. Бытовой компьютер "ZX Спектрум +4"

    21. Бытовой компьютер "ZX Пентагон 512К"

    22. Бытовой компьютер "ZX Скорпион 256К"

    23. Бытовой компьютер "ZX Профи 1024К"

    24. Бытовой компьютер "Commodore 64"

    25. Бытовой компьютер "Электроника БК-0010"

    26. Бытовой компьютер "Электроника БК-0010.01"

    27. Бытовой компьютер "Электроника БК-0011М"

    28. Бытовой компьютер "Пылдин-601"

    29. Бытовой компьютер "Пылдин-601У"

    30. Бытовой компьютер "Пылдин-601А"

    31. Бытовой компьютер "Пылдин-601М"

    32. Бытовой компьютер "Пылдин-601Т"

    33. Персональный компьютер "Агат-7"

    34. Персональный компьютер "Агат-9"

    35. Игровая приставка "Колеко Вижн"

    36. Игровая приставка "Денди"



    ---------------------------------------------------------------------- -----

    Eugene Programmer (c) 2003



    я правда еще его не запускал, но если нужно могу выслать, но он большой - 2.2М
     
  4. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine


    вроде завелась, только в цвете выглядит ужасно, а в монохроме ниче так ;)
     
  5. CyberManiac

    CyberManiac New Member

    Публикаций:
    0
    Регистрация:
    2 сен 2003
    Сообщения:
    2.473
    Адрес:
    Russia
    Я тож скачал - не корысти ради, но токмо из ностальгии. Погонял БК и ZX-Spectrum и проникся до глубины души. "В чем сила, брат? Сила - она в Спектруме".
     
  6. heir

    heir New Member

    Публикаций:
    0
    Регистрация:
    17 сен 2004
    Сообщения:
    17
    Адрес:
    Moscow
    Этот эмулятор у меня есть. Но мне он нужен только как скалад программ для PDP, т.к. там были неплохие решения.



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



    P.S. ... если кому интересно, то можно подискутировать на эти темы.
     
  7. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine




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

    не хочу тут выступить душегубом ;) - мне известна сердечная боль отказа от своих идей, но так ведь и ни с чем можно остаться :dntknw:
     
  8. captain cobalt

    captain cobalt New Member

    Публикаций:
    0
    Регистрация:
    21 дек 2003
    Сообщения:
    222
    Адрес:
    /ru/perm
    heir> если кому интересно, то можно подискутировать на эти темы.



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



    hттp://www.enlight.ru/ib/tech/osport/index.htm



    hттp://www.uni-vologda.ac.ru/oberon/infoart/otherfly.htm



    А виртуальные процессоры must die...
     
  9. DaemoniacaL

    DaemoniacaL New Member

    Публикаций:
    0
    Регистрация:
    1 авг 2003
    Сообщения:
    42
    Адрес:
    Russia
    heir

    Ну я думал, что хот кому-то захочется создать свой проц, без зависимости от Intel'а и других.



    Вы на "Эльбрус" посмотрите...

    http://www.computerra.ru/hitech/34475/
     
  10. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    heir

    Ну я думал, что хот кому-то захочется создать свой проц, без зависимости от Intel'а и других.



    конечно, хочется! но вопрос обстоятельств - если у тебя есть шанс попасть в некое КБ или на работу в Интел, то это одно, если ты - робинзон - то дело - табак :dntknw:

    однажды в МПСС (журнал) один парень опубликовал свое устройство: оно отлавливало неиспользуемые команды 8080 во время выборки, и по ним переключало страницы памяти, причем было довольно несложным (слабо?). так ему так и ответили: ПО под ваше оборудование не будет работать на других ЭВМ. так оно и осталось - в журнале... (ну, и у этого парня, наверное ;). да и сам, программируя на 8080 чуствовал нехватку много, но когда даже поверхностно начал изучать 8086, то обнаружил, что там это уже добавлено. вобщем, на сегодня в железе нахожу более полезным изучать, чем сочинять.
     
  11. heir

    heir New Member

    Публикаций:
    0
    Регистрация:
    17 сен 2004
    Сообщения:
    17
    Адрес:
    Moscow
    >> как ты намерен воплощать его в железо?

    ПЛИС микросхемы.



    >> кто его будет выпускать?

    Каждый кто захочет, сможет купить ПЛИС микруху и прошить логику -> получит на выходе проц.



    >> кто будет писать программы для несуществующего процессора?

    Пока я, если не найду единомышленников.



    >> хорошо ли ты знаешь последние процессоры ведущих фирм, чтобы обставить их?

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



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



    >> Вы на "Эльбрус" посмотрите...

    Смотрели. Всё здорово, но в домашних условиях ничего не получится.



    >> если ты - робинзон - то дело - табак :dntknw:

    Вспоминается Unix, а точнее Multix. Когда его делали, то AT&T он оказался не нужен, и на чистом энтузиазме небольшая группа фанатов сделала UNIX. (ну конечно это очень сжатое изложение событий тех лет :)



    >> вобщем, на сегодня в железе нахожу более полезным изучать, чем сочинять.

    А кто тебе сказал, что я не изучаю существующее железо? Я пишу на Ассме, С, PHP и т.д. Стараюсь изучить всё новое и перспективное, но иногда душа просит поэзии :))
     
  12. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine


    понимаю ;) это - ответ на все вопросы.
     
  13. Narkomanius

    Narkomanius New Member

    Публикаций:
    0
    Регистрация:
    14 апр 2003
    Сообщения:
    144
    Каждый кто захочет, сможет купить ПЛИС микруху и прошить логику -> получит на выходе проц.



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



    также, скорость будет ну порядка 386 SX 8mhz. даже эмулятор будет быстрее. быстрее всего - БМК белорусской фирмы одной,К1572 что ли. есть еще наши, К1592ХМ1 но они (мляяя!!) спецназначения оказывается
     
  14. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    каждый учится по своему. проектирование - тоже способ обучения: своего рода постановка себе задачи и попытка ее решить. тогда многое становится ясным из того, что в доках объяснили невнятно. монополии отобрали у нас очень многое, в том числе и паяльники... но наш бронепоезд должен хотя бы стоять на запасном пути - кто знает, что будет сегодня ночью?
     
  15. johnfound

    johnfound New Member

    Публикаций:
    0
    Регистрация:
    12 фев 2003
    Сообщения:
    74
    Адрес:
    Bulgaria
  16. heir

    heir New Member

    Публикаций:
    0
    Регистрация:
    17 сен 2004
    Сообщения:
    17
    Адрес:
    Moscow
    Narkomanius



    Ну это ещё надо проверить, и к тому же, если бы не ООП Визуальные среды и т.п. фигня, ускоряющая процесс разработки монстроподобного софта, то и на 386-486 компе можно многие задачи решить, даже MP3 проиграть :)



    shoo



    Полностью согласен !!! Хоть кто-то понимает :)



    johnfound



    Этот ресурс знаю. Отличное доказательство, что мы не одни, но проца подобного PDP там нет :-(, зато там есть видеоплата :))
     
  17. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    привет!

    хоть я и дилетант в таких делах, изложу некоторые свои соображения - может, найдешь какое зерно в этом.

    1.возможно использование второго проца внутри сущ. машины - так делали и в Apple (ставили Z80 для поддержки ср/м), и в макинтоше (плата orange 386). тогда не требуется медленная программная эмуляция, правда, если проц на шине PCI и даже ISA будет пользоваться системной памятью - скорость может значительно упасть, хотя и тут можно делать кэш и т.п. зато решается проблема периферии.

    2.возможно увеличение производительности разными путями, например, повысить разрядность: почему 32-бит? сделай 256 бит! пусть одному адресу будет соответствовать не 8-битный байт, а 16-и или более - 8-битный байт своей долгой жизнью обязан в основном текстовому формату, ну, дык можно и на юникод сориентироваться (в хр для китайцев уже и 4-байтная кодовая страница существует). а если 256 бит по адресу - считываешь, а в них сразу и команда, и адрес.

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

    4.не знаю, чем тебе приглянулся PDP - дело вкуса (я с ним вообще не знаком), но, поскольку власть в твоих руках, рекомендую сделать несколько указателей стека, как в мотороле, лучше 3 или 4, и специальный регистр для адреса, с возможностью вызова процедуры по нему одноместной командой (форт - язык робинзонов, шевелящим мышкой этого не понять ;)
     
  18. heir

    heir New Member

    Публикаций:
    0
    Регистрация:
    17 сен 2004
    Сообщения:
    17
    Адрес:
    Moscow
    shoo

    Очень интересные идеи!!! Ты, между прочим, пока единственный кто из всех читавших хоть что-то предложил, вместо осуждения. А насчёт дилетанта: многие дилетанты меняют мир и многие идеи появлялись именно у дилетантов, т.к. они не "завёрнуты" на мысли, что "это не возможно"!!!





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





    Надо обязательно над этим подумать!!! 32 бита взял из соображений, что 4Гб для простого компа будет достаточно, если ОС будет не Windows :)) и даже с графикой работать будет можно. Понимаю, что это плохо, но я думал что пока хватит. (хотя так думали все производители: и Intel, и Microsoft... последствия всем хорошо известны :)





    Архитектурой. У него были те возможности, о которых ты говоришь как о желаемом.



    Указателем на стек в PDP мог быть любой регистр (их там было 8). У меня 16 регистров -- значит может быть 16 указателей на стек.



    Если я тебя правильно понял, то ты хочешь так:

    CALL (R1)

    в регистре R1 лежит адресс процедуры, а команда CALL передаёт управление по адрессу в R1.

    Если я понял не правильно, то поясни, пожалуйста.
     
  19. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    1.не обязательно использовать полную разрядность для адреса - можно и часть, особенно для физического.

    2.регистр стека отличается алгоритмом своей работы от РОН, и от индексных регистров (автоинкремент/декремент). кстати, я сейчас подумал, что если сделать команды, например, PUSH/РОР (R1),хх - при этом R1 сработает как регистр стека - то будет очень круто. индексные регистры ESI и EDI в интел позволяют чтение/запись с автоинкрементом, но только в одном направлении. а можно разработать команды, у которых поведение регистра во время пересылки будет определятся битами, типа, декремент перед пересылкой, инкремент после пересылки, нет декремента/инкремента, возможно, мнемоники будут разные: mov - без изменения, pop - с инкрементом, рush - с декрементом. самое главное - не нужно переживать за флаг направления - он будет не в слове состояния проца, а в команде, и любой регистр можно будет использовать как РОН, стековый или индексный.

    3.раздельные стеки для возврата и сохранения/передачи данных менее экономны для памяти, но могут позволить отказаться от создания фрейма для процедуры.

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

    4.за CALL я загнул - понятно...

    ну, а то что мало кто что предлагает - хобби у тебя экзотическое ;) ну, что ж - охота пуще неволи ;) меня такие идеи волновали лет десять тому назад, а потом не до этого стало.
     
  20. heir

    heir New Member

    Публикаций:
    0
    Регистрация:
    17 сен 2004
    Сообщения:
    17
    Адрес:
    Moscow
    shoo

    Послушай. Все твои мысли -- это почти точная копия идей PDP проца. Просто тебе нужно с его архитектурой познакомиться... сам увидешь. (P.S. ... а придумали они это ещё в загробном году :)



    Насчет всяких дек/инкрементов и стека и т.д.:

    В любой команде PDP проца можно написать так:

    mov -(R1),(R2)+ ; отнять 1 из R1, содержимое адреса

    ; R1 поместить в содержимое адреса R2

    ; и прибавить 1 к R2



    Эти плюсики/минусики можно вставлять в любую команду.



    Далее...

    Вызов процедуры:

    там нет команды CALL, а есть команда JSR R,DD, где R - любой регистр, который считается стеком для данной команды, а DD - адрес перехода. Частный случай, например,когда R14 = SP в ассемблере пишут CALL DD, и такая команда превращается в JSR R14,DD.



    Возврат из подпрограммы:

    Тоже самое... есть команда RTS R, где R - любой регистр, который считается стеком для данной команды. (представляешь какая мощь для самомодефицируемого кода?) Также если R14 = SP, то можно написать RET, и такая команда превращается в RTS R14.



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



    Пример:

    Код Команда

    -------- ----------

    3F00ssdd MOVB SS,DD переслать байт

    7F00ssdd MOVW SS,DD переслать слово

    BF00ssdd MOVD SS,DD переслать двойное слово

    FF00ssdd MOVQ SS,DD переслать два двойных слова



    3F,7F,BF,FF -- явные признаки двухоперандных команд (других команд с таким кодом нет)

    00 -- код команды (она здесь первая :)

    SS -- источник

    DD -- приёмник



    причём, SS и DD кодируются тоже по стандартной для всех команд схеме, поэтому можно изменить 1 байт и команда поменяет источник или приёмник, а также способ адресации.



    P.S. ... я вот всё думаю -- сделать сайт с этим проектом или нет? Материала пока не много, но всё же что-то есть. Например полное описание всех команд уже готово (с кодами).