Важная информация

User Tag List

Страница 1 из 6 12345 ... ПоследняяПоследняя
Показано с 1 по 10 из 58

Тема: Нужна виртуальная машина на ZX

  1. #1
    Guru
    Регистрация
    03.01.2006
    Адрес
    Рязань
    Сообщений
    2,935
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Нужна виртуальная машина на ZX

    Предлагаю всем вместе поломать головы над виртуальной машиной для Z80. Задачи, которые стоят:
    1. Код плотнее, чем на Z80.
    2. Перемещаемость (помогло бы для ОС с одним окном памяти, где код лежит внизу).
    3. Реентерабельность (опять-таки для ОС).
    4. Возможность использования ассемблерных вставок с ограничениями.

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2
    Veteran Аватар для Raydac
    Регистрация
    16.08.2005
    Адрес
    Estonia,Tallinn
    Сообщений
    1,128
    Спасибо Благодарностей отдано 
    52
    Спасибо Благодарностей получено 
    227
    Поблагодарили
    179 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    виртуальная машина для Z80 что бы плотнее перемещаемее и реентабельность это уже придумано более 30 лет назад )) называется FORTH и пишется за пару дней и есть все перечисленное )))
    p.s.
    правда что бы на FORTH программить надо мыслить в обратной польской записи )))
    p.p.s.
    Иван Макарченко в остаток альтеры в спринтере forth-процессор зашивал насколько помню

  4. #3
    Guru
    Регистрация
    03.01.2006
    Адрес
    Рязань
    Сообщений
    2,935
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Трезвой форт-машины для Z80 не знаю. Покажите процедуру NEXT.

  5. #4
    Veteran Аватар для Raydac
    Регистрация
    16.08.2005
    Адрес
    Estonia,Tallinn
    Сообщений
    1,128
    Спасибо Благодарностей отдано 
    52
    Спасибо Благодарностей получено 
    227
    Поблагодарили
    179 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    >>Покажите процедуру NEXT.
    если это насчет моей поделки, то там нет и не может быть процедуры NEXT, это не эмуль JVM это транслятор JVM байт кода напрямую в команды Z80
    а так и FORTH ведь есть без NEXT, когда в прямой код компилится

  6. #5
    Activist
    Регистрация
    21.08.2009
    Адрес
    Cyprus
    Сообщений
    233
    Спасибо Благодарностей отдано 
    81
    Спасибо Благодарностей получено 
    23
    Поблагодарили
    19 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    alone, а цели какие? Виртуальная машина для чего? Чтоб исполнять результат трансляции какого-то собственного языка с ассемблерными вставками?
    Кроме п.1 из перечисленных не вижу зачем нужна именно виртуальная машина. П. 2 - вопрос дизайна/реализации загрузчика/OS, п. 3 - вопрос реализации того куда нужна эта реентерабельность , п.4 - в том же LLVM это более чем предусмотрено (см. http://blog.llvm.org/2010/04/intro-t...c-project.html про "Compiler-Integrated Assembler")

    Я к тому что для достижения п.1 (для всего остального ВМ не обязательно) с помощью LLVM можно сделать решение еще лучше.
    Можно сделать сначала просто бэкенд (таргет) для Z80, а затем на основе него сабтаргет (subtarget) с дополнительным набором "инструкций" (для экономии памяти), генерирующий прологи/эпилоги для нативного кода и т.п. + виртуальную машину для исполнения результата. (кстати, можно еще для всяких акселераторов и т.п. псевдоинструкции делать )
    В результате можно получить не "виртуальную машину с возможностью использовать ассемблерные вставки", а компилятор чего угодно в желаемый байткод в перемешку с нативным кодом (т.е. когда ради "кода плотнее" нет смысла использовать байткод, компилятор может генерить нативный код), ну и возможность использовать ассемблерные вставки никуда не денется. Если хочется еще какой-то свой язык специфичный, фронтэнд можно сделать.

    Документации (и кода, т.к. не поспевает документация за изменениями), конечно, дофигища придется перечитать. Я читал/копался немного, голова кругом идет от объема информации, но могу сказать что штука очень хорошо задизайненная и крайне гибкая. Всем желающим делать какие либо виртуальные машины для чего угодно, компиляторы или JIT-ы (или все сразу), категорически рекомендую Отличный framework для всех перечисленных целей (и более того).

    Инструкция по разработке backend-ов: http://llvm.org/docs/WritingAnLLVMBackend.html
    Примеры реализации см. в исходниках в llvm/lib/Target (X86, естественно, самый вылизанный бэкенд на данный момент)
    Последний раз редактировалось mastermind; 08.01.2012 в 19:53.

  7. #6
    Veteran Аватар для Raydac
    Регистрация
    16.08.2005
    Адрес
    Estonia,Tallinn
    Сообщений
    1,128
    Спасибо Благодарностей отдано 
    52
    Спасибо Благодарностей получено 
    227
    Поблагодарили
    179 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    на местном форуме я уже лет семь и могу сказать что тут всегда есть только одна проблема ))) куча народа предлагает какое то клевое решение или идею но никто (!) не догадывается что можно это запрограммить и показать как макет )))

  8. #7
    Guru
    Регистрация
    03.01.2006
    Адрес
    Рязань
    Сообщений
    2,935
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цель такая: загнать многозадачную ОС в 128К. Пока нет решения, предлагаю закрыть вообще тему многозадачной ОС на 128К. Если есть как минимум два окна (ATM Turbo, NeoGS) такие вопросы не встают.

    Впрочем, задача создания плотного кода интересна для разработки прошивок ПЗУ со всякими командерами, дискдокторами и т.п., где скорость не важна, а места мало.

  9. #8
    Activist
    Регистрация
    21.08.2009
    Адрес
    Cyprus
    Сообщений
    233
    Спасибо Благодарностей отдано 
    81
    Спасибо Благодарностей получено 
    23
    Поблагодарили
    19 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

    ---------- Post added at 17:50 ---------- Previous post was at 17:40 ----------

    Цитата Сообщение от alone Посмотреть сообщение
    Цель такая: загнать многозадачную ОС в 128К. Пока нет решения, предлагаю закрыть вообще тему многозадачной ОС на 128К. Если есть как минимум два окна (ATM Turbo, NeoGS) такие вопросы не встают.
    Ну тут основная проблема, как я понимаю, в перемещаемости. Т.е. проблема прежде всего в том что существующие средства разработки не умеют генерировать перемещаемый код. (рискую стать похожим на заевшую пластинку , но в том же LLVM все с этим в порядке, естественно, можно свои форматы исполняемых файлов с информацией о перемещениях реализовывать или адаптировать существующие)

  10. #9
    Sinclair User Аватар для Eltaron
    Регистрация
    16.01.2005
    Адрес
    Ekaterinburg
    Сообщений
    2,045
    Записей в дневнике
    7
    Спасибо Благодарностей отдано 
    143
    Спасибо Благодарностей получено 
    463
    Поблагодарили
    326 сообщений
    Mentioned
    4 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от mastermind Посмотреть сообщение
    Ну тут основная проблема, как я понимаю, в перемещаемости. Т.е. проблема прежде всего в том что существующие средства разработки не умеют генерировать перемещаемый код.
    Большинство средств это как раз умеет. Ассемблер из GNU Binutils для z80 генерирует COFF, Си-компилятор gcc генерирует даже ELF. Оба формата содержат всю информацию о тех участках кода, куда нужно добавить какое-нибудь смещение при релоцировании.
    ELF перебор, а вот COFF поддержать на спекки милое дело
    sdcc тоже генерирует какой-то перемещаемый формат, но свой, не стандартный.
    Граф Дракула наш кумир, патамушта он вомпир!
    VKINK 9 : BORDER NOT PI

  11. #10
    Activist
    Регистрация
    21.08.2009
    Адрес
    Cyprus
    Сообщений
    233
    Спасибо Благодарностей отдано 
    81
    Спасибо Благодарностей получено 
    23
    Поблагодарили
    19 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Это вышеупомянутое "большинство" часто спектрумистами используется? Я неточно выразился, конечно. Имел ввиду наиболее употребляемые средства.
    ELF да, наверное слишком громоздок. А хотя бы загрузчики COFF есть на спеки, интересно, хоть в каком-то виде?

Страница 1 из 6 12345 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. ZXMAK2 - Виртуальная машина ZX Spectrum
    от ZXMAK в разделе Эмуляторы
    Ответов: 1974
    Последнее: 07.03.2024, 23:45
  2. Машина Тьюринга для Z80
    от ZXMAK в разделе Эмуляторы
    Ответов: 4
    Последнее: 15.08.2011, 03:26
  3. Продвинутая Мелко Машина 1
    от Black_Cat в разделе Зарубежные компьютеры
    Ответов: 74
    Последнее: 03.03.2009, 09:05
  4. Что за машина такая??? Commodore 128...
    от ILoveSpeccy в разделе Commodore 16/64/128
    Ответов: 5
    Последнее: 31.10.2007, 10:25
  5. Java-машина
    от Error404 в разделе Программирование
    Ответов: 2
    Последнее: 15.01.2007, 15:11

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •