User Tag List

Страница 4 из 6 ПерваяПервая 123456 ПоследняяПоследняя
Показано с 31 по 40 из 58

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

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    06.05.2006
    Адрес
    Ливны, Орловская обл
    Сообщений
    1,169
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от James DiGreze Посмотреть сообщение
    Не обязательно, но возможно.
    Ну если про самомодификацию мы забыли, то неужели каждый раз считать адреса?
    С IX/IY вполне хорошая скорость при минимуме объёма достигается. Или я ещё способы упускаю?
    Цитата Сообщение от James DiGreze Посмотреть сообщение
    Ну не скажи! Банальное printf("Hello, peoples!"), будет в коде Z80 довольно витиевато выглядеть.
    Пример с printf, по-моему, самый неудачный, наверное, из всей стандартной библиотеки =)
    Цитата Сообщение от James DiGreze Посмотреть сообщение
    Про скорость... тут надо определиться с областью применения.
    ...
    Зачем так усложнять? Игры писать что-ли, али демки?
    Ну АлКо хочет, как я понимаю, ВМ и язык под неё общего назначения, и скорость тут будет играть весьма значительную роль.

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

  3. #2

    Регистрация
    17.05.2005
    Адрес
    г. Абакан
    Сообщений
    694
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от NovaStorm Посмотреть сообщение
    Ну если про самомодификацию мы забыли, то неужели каждый раз считать адреса?
    С IX/IY вполне хорошая скорость при минимуме объёма достигается. Или я ещё способы упускаю?
    Самомодификацию байткода, я правильно понял?

    Цитата Сообщение от NovaStorm Посмотреть сообщение
    Пример с printf, по-моему, самый неудачный, наверное, из всей стандартной библиотеки =)
    Хорошо, пусть будет uint32_t mul(uint16_t op1, uint16_t op2), или код x=mul(12345, x) , которое к примеру байткодом можно выразить так:
    Код:
    0x22, 0x35 /*copy var #35 and push result to stack */
    0x25, 0x39, 0x30 /* push 12345 to stack */
    0x49 /* mul stack */
    0x32, 0x35 /*copy result from stack to var #35 */
    Цитата Сообщение от NovaStorm Посмотреть сообщение
    Ну АлКо хочет, как я понимаю, ВМ и язык под неё общего назначения, и скорость тут будет играть весьма значительную роль.
    Вот я и пытаюсь понять, чего точно хочет AlCo.

    Цитата Сообщение от GriV
    0 - печать следующей за ним аскии-Z строки в активное окно
    1 - создание окна, указываются начало X,Y, длина ширина
    2 - выбор активного окна, следующий байт - номер окна
    3 - очистка окна
    4 - ассемблерная вставка
    5 - операция работы с переменными, тут непонятно как что. Предлагайте варианты.
    Имхо, слишком высокоуровнево пошел. Для начала простые операции с целочисленными переменными, потом работа с памятью и портами I/O, и уж потом всякие текстовые штучки.

    Цитата Сообщение от mastermind
    Ну так система команд делалась под довольно ограниченное ALU
    Точнее сказать 4битное АЛУ.

  4. #3

    Регистрация
    21.08.2009
    Адрес
    Cyprus
    Сообщений
    236
    Спасибо Благодарностей отдано 
    91
    Спасибо Благодарностей получено 
    24
    Поблагодарили
    20 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от NovaStorm Посмотреть сообщение
    Код плотнее Z80 сделать будет трудно, над этим думали создатели и 8080, и Z80.
    Ну так система команд делалась под довольно ограниченное ALU. Сейчас же в байткоде можно предусмотреть, скажем 16-, 32- и т.д. разрядную арифметику, FP, более продвинутые логические, сдвиговые и пр. операции и т.п. За счет одного этого код можно сильно уплотнить.

  5. #4

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

    По умолчанию

    Цитата Сообщение от bigral Посмотреть сообщение
    Параметры в стеке - такие же данные как и те что лежат на heap-е ПО СУТИ!
    Вот мы и возвращаемся к написанному выше. Если это адреса, то их надо типизировать при записи в стек, чтобы уметь релоцировать на лету (грубо говоря, пишем в стек не по 2 байта, а по 3: данные+тип). Если это номера подпрограмм, то проще.

    Цитата Сообщение от GriV Посмотреть сообщение
    Перемещаемость после загрузки - слишком дорого в тактах процессора.
    А без этого никак. Если не релоцировать на лету, то после нескольких запусков/снятий задач нижняя память превратится в решето, куда уже ничего не поместится.

    Цитата Сообщение от GriV Посмотреть сообщение
    Таки ты хочешь некое ЯВУ?
    Естественно.

  6. #5

    Регистрация
    17.05.2005
    Адрес
    г. Абакан
    Сообщений
    694
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Для начала надо договориться о неперемещении программ во время исполнения.
    Условно, если прог1 вызвал на выполнение прог2, то и прог1, и прог2 должны блокироваться на перемещение. При этом если прог1 после прог2 (не из прог2) вызовет прог3, то прог3 может быть перемещен как при работе прог1, так и прог2.
    Цитата Сообщение от alone Посмотреть сообщение
    ...(грубо говоря, пишем в стек не по 2 байта, а по 3: данные+тип)...
    Первый байт: (4бита - тип) + (4бита - длина). Второй и последующие - данные. Правда тогда массивы только ссылками придется передавать, например через команды создания-высвобождения копий.

  7. #6

    Регистрация
    18.02.2005
    Адрес
    Набережные Челны
    Сообщений
    1,574
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Предлагаю следющее: у нас уже фактически есть SOS c Басиком, если сделать п/п басика, которая будет выполняться, но храниться при этом в самом ПЗУ?
    Расвивая идею, не обязательно ориентироваться на басик.
    Надо определить список функций, который необходимы. Затем список операций, которые эти функции будут выполнять. Оттуда строить код, если так хочется. Компилятор это грубо, надо транслятор + парсер. Технически на функции биоса (если они тебе нужны) нужны простые функции вывода символов, построения рамок, менюселектор (это 1-2 кб максимум). Тогда проблема перемещаемости будет решена за счёт отсуствия машинного кода. Проблема реентерабельности тоже. Останется маленький вопрос разработки транслятора
    Биты рулят лучше байтов, байты рулят шустрее!
    View, Звук, Цвет

  8. #7

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

    По умолчанию

    Цитата Сообщение от James DiGreze Посмотреть сообщение
    Может тогда сделать проще - дать возможность вызывать интертрепатор байткода из кода Z80?
    При вызове в стек ляжет адрес возврата, который надо релоцировать. Та же проблема, только в профиль.

  9. #8

    Регистрация
    06.05.2006
    Адрес
    Ливны, Орловская обл
    Сообщений
    1,169
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    >адрес возврата, который надо релоцировать
    Ну положи туда виртуальный адрес, делов-то. Только если после вычисления реального прога будет перемещена ещё раз, тут-то мы и приплыли.
    Или вот как, например, сделать простой инкремент переменной? Нельзя же мутексы на каждый чих городить.

  10. #9

    Регистрация
    17.05.2005
    Адрес
    г. Абакан
    Сообщений
    694
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    alone, пусть ляжет, оно ему как раз в прок.
    Вспомни как калк бейсика 48 работает: попается адрес возврата, и оттуда начинает интерпретироваться байткод, до всречи на своем загогулистом рета самого калка. Тут тот же механизм будет как раз в пору. Ну и нужно сразу разделить понятия аппаратного стека Z80 от стека байткод интерпретатора.
    Мне вот тут подумалось, что на самом деле можно реализовать практически интерпретатор Си. Просто за счет функций преобразования ссылок и динамического создания копий переменных.
    А еще подумалось, что вот же были башковитые мужики, кто это все придумывал с нуля. И реально копаясь в своей памяти могу только пару своих личных изобретений вспомнить, причем не в компьютерной области, а все остальное либо компиляция информации, либо реверсинжениринг по внешнему виду.

  11. #10

    Регистрация
    18.02.2005
    Адрес
    Набережные Челны
    Сообщений
    1,574
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Предлагаю следующую систему:
    байт-код:
    0 - печать следующей за ним аскии-Z строки в активное окно
    1 - создание окна, указываются начало X,Y, длина ширина
    2 - выбор активного окна, следующий байт - номер окна
    3 - очистка окна
    4 - ассемблерная вставка
    5 - операция работы с переменными, тут непонятно как что. Предлагайте варианты.

    По п.4 соглашения - запрешён самомодифицируемый код, запрещены сложные стековые операции, все доп. адресации через индексные регистры.
    Какие ещё функции надо?
    Биты рулят лучше байтов, байты рулят шустрее!
    View, Звук, Цвет

Страница 4 из 6 ПерваяПервая 123456 ПоследняяПоследняя

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

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

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

Похожие темы

  1. ZXMAK2 - Виртуальная машина ZX Spectrum
    от ZXMAK в разделе Эмуляторы
    Ответов: 2230
    Последнее: 25.10.2025, 20:43
  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

Ваши права

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