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

User Tag List

Страница 1 из 4 1234 ПоследняяПоследняя
Показано с 1 по 10 из 34

Тема: Введение сегментов стэка и данных.

  1. #1
    Member
    Регистрация
    16.02.2011
    Адрес
    г. Новочеркасск
    Сообщений
    129
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    13
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Введение сегментов стэка и данных.

    Уже давно не ново использование диспетчера памяти с подключением любой 16 кб страницы в любое окно адресного пространства. Когда то на ZX128 о таком диспетчере только мечтали, но АТМ2, Cпринтер, PentEvo сделали такие режимы адресации обыденными. Однако кто пробовал их использовать в реальных программах, осознавали? что использовать все преимущество от них все время что то мешает. То стэк, то малый размер одной страницы для кода. То обработчики прерываний. А ведь если задуматься, то все упиралось в объем адресуемой памяти z80 - все те же 64к.
    В свое время, осваивая ассемблер 8086 я замечал, как много общего у него с z80. И вроде z80 может почти все тоже самое. Я даже назвал бы z80 не 8-битным а полу 16-битным процессором, так как он вполне спокойно справляется с 16 битными арифметическими командами. И тут напрашивается мысль, которая давно веяла. но её всегда отгоняли, думая что это невозможно в принципе, потому что не может быть. Чего не хватает для адресации более чем 64к ? Сегментных регистров. Но их то мы в реальный z80 ни как не впихнем, а переходить на другой тип процессора - это уже сильный шаг в сторону от концепции Спектрума.

    И вот у меня такие вопросы для программистов конфигураций на Альтере. Возможно ли то что я предлагаю? и на сколько вам эта идей кажется интересной?

    Вопрос. Может ли Альтера отловить коды команд (например опросить шину данных при М1)? Я думаю что по этому принципу сделан ускоритель в Спринтере.
    Если это возможно, то есть такая идея, - ввести в конфигурацию режим сегментации. 2 сегмента данных для IX IY и сегмент стэка для SP.
    Это сделало бы удобным и быстрым программирование при обработке больших объемов данных. А если возможно отловить работу со стэком, то и упростило бы написание многозадачных ОС.

    Понадобится 12 портов (при жесткой 16 бит дешифрации, думаю не проблема)
    4 порта - карта памяти для IX
    4 порта - карта памяти для IY
    4 порта - карта памяти для SP

    можно не порты, а разместить ячейки их в диспетчере памяти.
    При обработке команд чтения/записи памяти (с косвенной адресацией) через сегментные регистры IX, IY обращаться не к основной карте памяти, а к страницам,указанным в этих портах.
    Ну и если это возможно, то вообще было бы супер отследить работу со стэком и подставлять тоже свою карту памяти.


    Прошу не пинать за столь изощренную идею.
    Просто представьте, что в этом режиме z80 адресует сразу 256 кб адресного пространства.
    64 основные, 64 через IX, 64 через IY, 64 через SP. И это все сразу одновременно без щелканья страниц.

    1. Нужно будет отловить все команды работы со стэком (pop push), команды вызова подпрограмм call, rst и возвратов из прерываний, ну и циклы обработки прерывания.
    2. отловить команды ld a/r,(ix/iy+n), ld (ix/iy+n),a/r , и арифметические add/adc/sub/sbc a,(ix/iy+n) , inc/dec работы с битам.
    В общем тут, думаю надо плясать от префиксов при M1 , и кода операции, что бы отловить только косвенную адресацию, а не загрузку в сами регистры ix, iy.

    Думаю памяти альтеры должно хватить, И при выявлении закономерности в отлавливаемых командах (по маске) проверок будет не так уж и много.
    На акслератор спринтера ушло не меньше проверок.

    Ну и естественно этот режим расширенной адресации должен программно включаться и отключаться.

    Ну что ? Как вам идея? Возможно все это реализовать?
    А иначе смысл всяких супер видеорежимов, аппаратных спрайтов и тд, если процессор не видит сразу все адресное пространство видеопамяти?

    З.Ы. Ну и буду совсем наглым, раз уж пошла такая пьянка, то можно ещё до кучи и обработать команды LDI и LDIR - сделать перед ними префекс из неиспользуемых команд, что бы чтение шло их сегмента IX а запись в сегмент IY

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

  3. #2
    Guru Аватар для jerri
    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,746
    Спасибо Благодарностей отдано 
    256
    Спасибо Благодарностей получено 
    265
    Поблагодарили
    199 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    поддержка всего этого тебе где нужна?
    С уважением,
    Jerri / Red Triangle.

  4. #3
    Member
    Регистрация
    16.02.2011
    Адрес
    г. Новочеркасск
    Сообщений
    129
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    13
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    В смысле ?
    Аппаратная ? Хотелось бы во всех конфигурациях с 4-мя окнами
    атм, эво, ts. Везде где возможно реализовать. Т.Е. я предлагаю разработать и ввести стандарт реального режима адресации 256кб.

    Программная, где будет полезна? Это просто сделает более гибким и удобным программирование. Ну например:
    За стековый сегмент скажут спасибо, кто будет писать диспетчер быстрого переключения задач или резидентные подпрограммы. У любой библиотеке (например резидентной в 0 банке и переключающей все страницы) возникнет заминка со стэком. Нужно будет потратить кучу тактов на определение - в каком окне стэк.

    А сегменты данных вообще везде, даже в простом блокноте - ограничение текста 64 кб. Но при его редактировании если он разбит на банки по 16 кб, возникает вопрос раздвигания текста. Приходится извращаться, через буфер в другом банке перебрасывать весь текст.
    При обработке Сэмплов в редакторе MOD-ов или s3m. Там по стандарту ограничение сэмпла - 64 кб. Как ого через 16 кб окошки листать, удобно? А так ерз один регистр доступпен сразу весь сэмпл. Сколько времени сэкономим на проверке на переход граница окна в 16кб ?
    А работа с большими экранами, занимающими более 16 кб? При такой адресации видеопамять можно вообще не подключать в общие окна. Т.е все 64 к могут быть заняты линейным кодом программы, данные в сегменте IX, экран в сегменте IY, как угодно их перекидываем туда сюда и не боимся запороть стэк.

  5. #4
    Guru Аватар для jerri
    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,746
    Спасибо Благодарностей отдано 
    256
    Спасибо Благодарностей получено 
    265
    Поблагодарили
    199 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Хорошо
    1 будут ли эти возможности поддержаны на стандартном спеке?
    2 кто будет писать под эти возможности?
    С уважением,
    Jerri / Red Triangle.

  6. #5
    Member
    Регистрация
    16.02.2011
    Адрес
    г. Новочеркасск
    Сообщений
    129
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    13
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    1 будут ли эти возможности поддержаны на стандартном спеке?
    В теории это возможно, если подвесить дешифратор команд и машинных циклов (например на альтере) На практике - конечно же нет, как и любая страница в любые 4 окна. и куча доп.графических режимов.
    кто будет писать под эти возможности?
    Если их ввести в актуальные сейчас конфигурации, то все кто пишут под zxevo, реверс, смогут их использовать, А один раз попробовав - уже не оттащишь.

    Для экономии логики можно можно уменьшить количество дешифруемых команд.
    например вводится 2 префекся дальней адресации (для двух сегментов) из двух команд (неиспользуемых типа ld l,l) и любая следующая команда читает/пишет в сегментную страницу.
    Со стэком и прерываниями конечно сложнее. Но там тоже есть закономерность.
    Все Push и Pop call & ret & rst проверяются одной маской 11xxxxxx ,
    ну и отловить запись в стэк при int/nmi

    Режим стандартно спектрума ни кто не отменял.
    А чем аппаратные спрайты, адресация 4 окон, 256 цветов на точку лучше ?
    И все эти навороты с адресаций только в 64к очень неудобно программировать.
    Последний раз редактировалось Hacker Grey; 30.11.2013 в 11:49.

  7. #6
    Guru Аватар для jerri
    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,746
    Спасибо Благодарностей отдано 
    256
    Спасибо Благодарностей получено 
    265
    Поблагодарили
    199 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    ну вобщем ты хочешь пойти по пути ИБМ
    и поддержать старые раскладки на новом железе.
    это уже было
    придумай новое.
    С уважением,
    Jerri / Red Triangle.

  8. #7
    Guru Аватар для bigral
    Регистрация
    12.07.2006
    Адрес
    г. Киев, Украина
    Сообщений
    2,147
    Спасибо Благодарностей отдано 
    25
    Спасибо Благодарностей получено 
    95
    Поблагодарили
    82 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Предлагается сделать из z80 проц недо8088-Z80. Если рассмотреть историю вопроса то подобная проблема стояла перед DEC-ом в 1972-ом и они её решили применив две разных концепции воплощенных в 1975 году в pdp-11/70 с его MMU (преобразование старших разрядов шины адреса в большее количество адресных сигналов через таблицу размещенную в статическом ОЗУ видимую как спец-регистры процессора) и I/D (разделение памяти на instruction/data сегменты, эта идея из гарвардской архитектуры, она позволяет расширить в 2 раза ОБЩЕЕ адресное пространство но не каждое по отдельности).

    Идея проверенная intel-ом на том же i8088, считаю её глупой и "странной", видимо они думали убить сразу 2-х зайцев и получить что-то среднее дающие преимущества и MMU и I/D... оказалось что простого варианта использования сегментных регистров просто нет! и это наложило свой дикий отпечаток и на программы и на железо в последующие годы. Дошло до анекдота, когда в 386-ом сделали возможность обьявить сегменты размером в полное физически адресуемое пространство то эту фичу обьявили не иначе как прорыв и супер достижение и профанация достигла апогея. Наконец-то проц смог адресовать напрямую всю память... (никакой маркетолог естественно не заметил что i8080 так же как и pdp11/20 это могли в самом начале)

  9. #8
    Member
    Регистрация
    16.02.2011
    Адрес
    г. Новочеркасск
    Сообщений
    129
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    13
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

    Конечно что с этим всем тоже можно жить, устраивать кучи проверок на пересечение границ страниц, тормозить при сэмплировании, при раздвигании текста. Но как ещё кроме сегментов раздвинуть адресуемое пространство?
    В предлагаемом варианте сразу адресуем 256 к. Можно уже и звуки красивые обрабатывать и картинки большие. А без этого и ZX48к за глаза хватало - самая логичная и проста адресация.

  10. #9
    Guru Аватар для jerri
    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,746
    Спасибо Благодарностей отдано 
    256
    Спасибо Благодарностей получено 
    265
    Поблагодарили
    199 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Hacker Grey, ты не предлагаешь ничего нового.
    Если у тебя есть какие то свежие идеи ты можешь реализовать их написав собственную конфигурацию, как это сделал ТС Лаб.

    Она может быть как совместимой со спеком, так и несовместимой. Причем если несовместимой то тогда можешь в ней реализовать самые сокровенные фантазии. Новый суперэффективный проц, видеосистема эталонного вида.

    А ты предлагаешь к паровозу скотчем приклеить крышки от кастрюль и назвать это самолетом. И при этом обижаешься на конструктивную критику. Баловство это.
    С уважением,
    Jerri / Red Triangle.

  11. #10
    Member
    Регистрация
    16.02.2011
    Адрес
    г. Новочеркасск
    Сообщений
    129
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    13
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

Страница 1 из 4 1234 ПоследняяПоследняя

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

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

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

Похожие темы

  1. Ответов: 8
    Последнее: 31.03.2013, 00:04
  2. Введение композитного входа в RGB-монитор
    от BYTEMAN в разделе Изображение
    Ответов: 23
    Последнее: 19.03.2010, 11:59
  3. Введение в железо для начинающих
    от kgbplus в разделе Несортированное железо
    Ответов: 9
    Последнее: 03.07.2006, 11:43

Ваши права

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