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

User Tag List

Страница 34 из 35 ПерваяПервая ... 303132333435 ПоследняяПоследняя
Показано с 331 по 340 из 348

Тема: Проект ОС

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

    По умолчанию

    >с чипом R800 летает. изучите для начала суть вопроса...
    Я пробовал в blueMSX ставить 20МГц R800, тормозил даже вывод в консоль. Может конечно, я её готовить не умею, за реальной MSX только раз сидел.

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

  3. #332
    Guru Аватар для Sayman
    Регистрация
    16.02.2006
    Адрес
    Новосибирск
    Сообщений
    3,277
    Спасибо Благодарностей отдано 
    17
    Спасибо Благодарностей получено 
    91
    Поблагодарили
    54 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    в blueMSX даже при эмуляции MSX2+ с частотой 10мгц достаточно быстро работает. при эмуляции турбоР на тех же частотах летает. естественно, что я ставил юзикс на винт. с дискеты ясно понятно тормоз...
    а вапще ваше дело..продолжайте спорить.
    0A заповедей:
    I. Не удаляй каталог свой.
    II. Не удаляй до времени ни одного файла.
    III. Не кради файлы.
    IV. Не желай программы ближнего своего.
    V. Почитай BDOS и BIOS как родителей своих ...
    ---
    Sprinter resurrect:
    Telegram
    Discord
    Repo
    Forum

  4. #333
    Junior
    Регистрация
    14.11.2011
    Адрес
    г. Алматы, Казахстан
    Сообщений
    19
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от NovaStorm Посмотреть сообщение
    >и эмуляцией старых стандартов для Legacy-систем
    У пентэвы, которая и есть наверное самый раскрученный и актуальный стандарт, ведь уже есть 4 банка по 16к, мельчить до 4к наверное уже не стоит. Да и другие машины тоже 16к банками пользуются. Меньшие страницы только в менеджере памяти нужны будут.
    16k многовато, или надо строить дополнительный слой абстракции на уровне самой ОС, т.е городить аллокатор памяти, запоминающий текущее состояние распределения памяти ( в принципе почему бы и нет, не такой уж и плохой вариант кстати).

    Был у меня проект, там пришлось несколько модифицировать компилятор C, чтобы тот вместо непосредственного обращения к RAM дергал функцию из самопальной RTL которая и работала с блоками выделенной памяти. В этом случае, максимально адресуемый объем памяти ( под данные, а возможно и под код) ограничивается только полетом фантазии разработчика. Физически, мы работаем с куском памяти 4-16kB отображенным диспетчером памяти в адресное пространство CPU, движение этого окна прозрачно для программы ( в обе стороны, как вверх так и вниз, т.к она использует относительную адресацию в пределах -32768 + 32767 байт от текущей точки исполнения), правда нужно запоминать несколько предыдущих положений окна отображения, но на это я отводил место в системном контексте ( где и сохранял регистры, положение указателя стека и программного счетчика) который обслуживается ядром ОС.

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

    По умолчанию

    impressed, как примерно выглядел код a[i] и код вызова функции?

  6. #335
    Junior
    Регистрация
    14.11.2011
    Адрес
    г. Алматы, Казахстан
    Сообщений
    19
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от alone Посмотреть сообщение
    impressed, как примерно выглядел код a[i] и код вызова функции?
    надо глянуть в моих архивах...

    это был GCC я модифицировал RTL-представление, в той частии где генерируется код для адресации через База[Смещение].
    1. Загрузка из памяти в регистр-назначения (mov REG, word ptr VAR[OFFS] в нотации для x86) заменяло на( примерный код, пишу по памяти)
    push bx
    push si
    push ax
    mov bx,<segaddr>
    mov si,<offset>
    mov ax,<val16>
    call getData16 ; На выходе в AX наше слово из памяти
    mov REG,ax
    pop ax
    pop si
    pop bx

    У функции записи слова в память по адресу X сигнатура аналогична только название другое
    Сами функции я положил в crtbegin.o который GCC при линковке автоматом добавляет в бинарник.
    Последний раз редактировалось impressed; 25.02.2014 в 22:05.
    2:5083/89

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

    По умолчанию

    Цитата Сообщение от alone Посмотреть сообщение
    impressed, как примерно выглядел код a[i] и код вызова функции?
    Могу сказать что я видел подобную реализацию в Watcom C для модели HUGE, было года 4 назад, я брал openwatcom и генерил в asm простую прогу типа:

    Код:
    int main() {
      int i[500000];
      for (long j=0; j<500000; j++) {i[j] = 0xff;}
      return 0;
    }
    выяснилось что все указатели компилер держит 32bit-ные и в теории он вообще бы мог адресовать аж 4GB таким способом (физически там будь бы у него EMS до 32Mb мог бы поддержать, а если применить HDD swap!!! ) но логика работы с указателями точно как у самого контроллера шины i8086 (т.е. к старшему 16bit слову дописывается справа 4bit-а нулей, полученное число складывается с младшим словом формируя 20bit-ный адрес)

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

    По умолчанию

    Для Спектрума тормозновато получится. Надо чтобы компилятор находил случаи перебора элементов массива (как?) и генерил что-то вроде INC L:CALL Z,nextseg
    Где nextseg делает INC H и по необходимости переключает странички.

  9. #338
    Junior
    Регистрация
    14.11.2011
    Адрес
    г. Алматы, Казахстан
    Сообщений
    19
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от alone Посмотреть сообщение
    Для Спектрума тормозновато получится. Надо чтобы компилятор находил случаи перебора элементов массива (как?) и генерил что-то вроде INC L:CALL Z,nextseg
    Где nextseg делает INC H и по необходимости переключает странички.
    C перебором по идее тоже проблем нет. Можно использовать 32-битные смещения, а расчеты возложить на getData. Также можно на стадии работы с AST определять с чем мы имеем дело ( типы токенов хранятся в AST) и если это массив то менять поведение.
    2:5083/89

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

    По умолчанию

    alone, ей богу интересовался этим вопросом последние лет 10 (в более широком смысле - как компилировать "современные исходники" рассчитанные на мегабайты памяти для систем с ограниченным в 64кб адресным пространством) и пришел к выводу что есть некие подходы которые впрочем все трудоемкие:

    Радикальный (требующий от программиста переписать 32bit исходник): отказаться от идеи работы с 32bit виртуальным пространством и переделать все алгоритмы на работу с куском памяти который гарантированно есть, использовать внешнюю память для временного хранения обработанных данных если они сильно большие. Так работает hitech c в CP/M, результат хороший он в процессе компиляции пишет на диск много временных файлов и может обрабатывать очень длинные исходники. Так работает немецкая MODULA2 для pdp11 систем, которая зная что размер страницы у pdp11 максимум 4kW никогда не дает обьявлять массивы большей длинны и никогда не генерит код более 4kW длинны. Передача параметров между вызовами функций как я понимаю идет тоже блоками с максимальной длинной 4kW. У pdp11 MMU есть 8 окон по 4 kW так что если все алгоритмы подогнать под работу с кусками в 4kW то можно легко довольно использовать все адресуемые 2mW. Обязательно использовать оверлеи суть которых не поменялась со времен первых mainframe-ов IBM у которых тоже было маленькое адресное, т.е. link-ер exe-шника вставляет код диспечера вызовов(этот код естественно может использовать MMU на полную катушку и внешний swap-file) и использует файл-overlay-map который ему показывает на какое место какой obj помещается и кто кого перекрывает в каких адресах\страницах. Все эти оверлейные технологии достигли вершины на pdp11 в тех же 2.9BSD 2.11BSD ну и Демос (среди разработчиков которого считалось что "нормальная" программа должна превышать в 5...6 раз виртуальное адресное пространство pdp11 а иначе это так себе, слабенькая утилитка а не программа).

    Традиционный: подключение наружных 32bit risc сопроцессоров (пример - интерфейс TUBE на Acorn BBC model B к которому можно вешать "second processor option"), при этом естественно основной комп используется уже как terminal и I/O co-processor или расширение основного процессора другим с большим виртуальным адресом (пример - vax-11/780, appleIIGS, amd64 и т.д.)

    ---------- Post added at 17:29 ---------- Previous post was at 17:19 ----------

    Цитата Сообщение от alone Посмотреть сообщение
    Для Спектрума тормозновато получится. Надо чтобы компилятор находил случаи перебора элементов массива (как?) и генерил что-то вроде INC L:CALL Z,nextseg
    Где nextseg делает INC H и по необходимости переключает странички.
    Оно и для i8086 у них тормознуто вышло, так как все операции с указателями в модели HUGE требуют пересчета через "целую функцию", для сравнения работа с near указателями это обычные inc, dec, add команды или смещения с иcпользованием index-ных регистров.
    Последний раз редактировалось bigral; 26.02.2014 в 19:21.

  11. #340
    Master
    Регистрация
    24.05.2005
    Адрес
    г. Запорожье, Украина
    Сообщений
    992
    Спасибо Благодарностей отдано 
    571
    Спасибо Благодарностей получено 
    364
    Поблагодарили
    239 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    по теме интересное чтиво - http://habrahabr.ru/post/228049/

Страница 34 из 35 ПерваяПервая ... 303132333435 ПоследняяПоследняя

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

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

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

Похожие темы

  1. Проект муз. редактора для AY
    от Bulba в разделе Музыка
    Ответов: 36
    Последнее: 09.09.2005, 20:32
  2. AY-LPT проект
    от dhau в разделе Эмуляторы
    Ответов: 2
    Последнее: 24.02.2005, 14:32

Ваши права

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