User Tag List

Страница 16 из 20 ПерваяПервая ... 121314151617181920 ПоследняяПоследняя
Показано с 151 по 160 из 200

Тема: Пишем свою ОС. Практика

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

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

    По умолчанию

    А как грамотней организовать доступ к библиотеке?
    я вижу три варианта :
    1.В начале либы пачка JP
    2.Передавать номер функции через регистр
    3.Номер функции в следующем байте после CALL

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

  3. #2

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

    По умолчанию

    Цитата Сообщение от DimkaM Посмотреть сообщение
    А как грамотней организовать доступ к библиотеке?
    я вижу три варианта :
    1.В начале либы пачка JP
    2.Передавать номер функции через регистр
    3.Номер функции в следующем байте после CALL
    Мой тебе совет - забей с либами для ZX-a, и линкуй "руками" сразу компилируя под фиксированные адреса.

    Потому-что:

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

    ну и это еще не все... это так на вскидку написал

    Для большего понимания предложенной мной архитектуры проги я тут примерно интерфейс kernel-a выложу:

    /* тут лежит номер текущей, включенной в адресное пространство страницы
    в системных переменных басика 128 есть этот байт можно его использовать */
    BYTE currenPageNumber;

    /* эта функция должна: включить pageNumber, провести операцию обмена содежанием
    между областями памяти address1 и address2 длинна блока lenght, включить обратно
    currenPageNumber */
    void swapDataBlock(BYTE pageNumber, SHORT address1, SHORT address2, SHORT lenght);

    /*эта фукция для перехода на код в другой странице, включает pageNumber, обновляет
    currenPageNumber, делает jp на address1*/
    void jmpFar(BYTE pageNumber, SHORT address1);

    /*эта функция для call-a на код в другой странице, включает pageNumber, обновляет
    currenPageNumber но сохраняет старое значение у себя на стеке, делает call на address1
    по возврату ставит старое значение pageNumber и делает ret*/
    void callFar(BYTE pageNumber, SHORT address1);

    /*это обработчик int-a, запрещает прерывания, включает нужную сраницу где находится код обработки прерывания но сохраняет старое значение на стеке, вызывает обработчик, после возврата высталяет старый pageNumber разрешает прерывания делает reti*/
    void intHandler();
    Последний раз редактировалось bigral; 26.07.2011 в 12:02.

  4. #3

    Регистрация
    15.06.2006
    Адрес
    S.Pb
    Сообщений
    5,791
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    7
    Поблагодарили
    6 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от NovaStorm Посмотреть сообщение
    по мнению некоторых, костыли начались прямо со 128го =)
    128 нелья назвать лучшей концепцией развития Спека, но время вспять не повернуть - что получилось, то и стало Спектрумом128, т.е. стало стандартом Спектрума128, от которого пошли другие клоны . ПентЭво к этому никакого отношения не имеет, т.к. является клоном АТМ.
    Цитата Сообщение от NovaStorm Посмотреть сообщение
    для минимального 20мс - много. Диапазон от 50 до 1000 Гц на мой взгляд предпочтительнее
    ВМ в основном предназначались для спековского софта, т.к. он не может нормально работать под классической ОС. Весь остальной софт не имеет таких ограничений и должен будет работать исключительно из под ОС с софтовой многозадачностью.

    Цитата Сообщение от NovaStorm Посмотреть сообщение
    Ну или плюсом ещё как у одной из атарей, кажется, по строчному ещё инт сделать.
    такая возможность предусмотрена

  5. #4

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

    По умолчанию

    Цитата Сообщение от Black_Cat Посмотреть сообщение
    ПентЭво к этому никакого отношения не имеет, т.к. является клоном АТМ.
    А просвети, какие костыли есть в АТМ, что она не подпадает под "концепцию развития"?
    Дополнительные неправославные видеорежимы? Палитра? CP/M?

  6. #5

    Регистрация
    25.01.2005
    Адрес
    Miass, Chelyabinsk region
    Сообщений
    4,094
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    просто ради интереса:
    1. когда придет нми - адрес возврата упадет в стек, регистры надо сохранить куда-то. а если нельзя стек портить?
    2. как работать с дисководом/магнитофоном, которые требует полный реалтайм? цифровой звук? тут разделение работы вм во времени не покатит.

  7. #6

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

    По умолчанию

    DimkaM, Если хочется, как у людей, то "Linkers and loaders".
    Если изобретать собственный велосипед, то придётся много думать. Потому как для существования библиотек нужно существование формата исполняемых файлов, а загружать их должна хоть прото-, но ОСь.
    А без виртуальной памяти(окно пока не в счёт) и с ограниченным адресным пространством проблем вообще куча выходит.

    ---------- Post added at 14:11 ---------- Previous post was at 14:09 ----------

    Цитата Сообщение от psb Посмотреть сообщение
    1. когда придет нми - адрес возврата упадет в стек, регистры надо сохранить куда-то. а если нельзя стек портить?
    Ну в таких случаях обычно подставляют в адресное пространство "системную" память.

  8. #7

    Регистрация
    15.06.2006
    Адрес
    S.Pb
    Сообщений
    5,791
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    7
    Поблагодарили
    6 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от psb Посмотреть сообщение
    1. когда придет нми - адрес возврата упадет в стек, регистры надо сохранить куда-то. а если нельзя стек портить?
    а голова зачем? Никто не заставляет всё запускать обязательно в реалтайме

    Цитата Сообщение от psb Посмотреть сообщение
    2. как работать с дисководом/магнитофоном, которые требует полный реалтайм? цифровой звук? тут разделение работы вм во времени не покатит.
    А зачем это делать в реалтайме? Кроме того, при создании ВМ, ей сразу задаются её права на неразделяемые ресурсы. Поэтому пользоваться каждым неразделяемым ресурсом в реалтайме сможет только одна адача, для которой этот ресурс разрешён.

  9. #8

    Регистрация
    25.01.2005
    Адрес
    Miass, Chelyabinsk region
    Сообщений
    4,094
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от NovaStorm Посмотреть сообщение
    Ну в таких случаях обычно подставляют в адресное пространство "системную" память.
    это понятно. вы выше хотели нми не кратный инту. допустим, вы не попортили стек, но чтобы все работало без глюков, восстановить контекст нужно будет точно там, где он был сохранен (время относительно инта). и речь даже не о мультиколорах. геморрой, да и только

    Цитата Сообщение от Black_Cat Посмотреть сообщение
    а голова зачем? Никто не заставляет всё запускать обязательно в реалтайме
    причем реалтайм, когда речь шла про инт?


    Цитата Сообщение от Black_Cat Посмотреть сообщение
    А зачем это делать в реалтайме?
    а каким образом ты будешь грузиться с ленты НЕ в реалтайме? там тормозить нельзя, любой нми нафиг собьет синхронизацию. или как это обойти-то?

  10. #9

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

    По умолчанию

    Цитата Сообщение от psb Посмотреть сообщение
    вы выше хотели нми не кратный инту. допустим, вы не попортили стек, но чтобы все работало без глюков, восстановить контекст нужно будет точно там, где он был сохранен (время относительно инта). и речь даже не о мультиколорах. геморрой, да и только
    Это БК хочет =)
    А на мой взгляд, тоже, подобная виртуализация малой кровью не дастся. Да и не нужна она мне. Что можно сделать, так это просто перевод в режим совместимости, в котором получим те же спек+костыли.

  11. #10

    Регистрация
    14.08.2006
    Адрес
    Владимир
    Сообщений
    4,581
    Спасибо Благодарностей отдано 
    64
    Спасибо Благодарностей получено 
    112
    Поблагодарили
    97 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

    Вопрос в другом - а кому нужны все эти магнитофоны, дисководы? Равно как и софт, съедающий все такты и критичный к порче стека, и все лишь для вращения кубика и скролла с факами?

    Как я понимаю, концепция строго противоположная строительству "парусника в бутылке" - т.е. демоделанию.

    ---------- Post added at 15:29 ---------- Previous post was at 15:21 ----------

    Цитата Сообщение от DimkaM Посмотреть сообщение
    А как грамотней организовать доступ к библиотеке?
    я вижу три варианта :
    1.В начале либы пачка JP
    2.Передавать номер функции через регистр
    3.Номер функции в следующем байте после CALL
    Посмотрите как это реализовано в Uzix (подобно же и реализовано). Там тоже диспетчер системных вызовов с номерами функций, система передачи параметров в регистрах, и, кстати, весь LIBC есть в исходниках, и не только libc. Не обязательно же гнаться за многозадачностью, а идеи - они и в Африке...

    С многобанковостью есть одна единственная закавыка - как обрабатывать память в другой странице, на которую передан указатель. Медленно (через копирование), или подгонять сегмент данных (чтобы гарантированно попадало в окно диспетчера, но тут надо писать свой компилятор) или как-то еще? Аналогично и со стеком (если пишем на С). Или вообще не использовать передачу указателем (чему, кстати, удовлетворяет большинство вызовов LIBC)?
    Я для себя так и не решил.
    Лучше сделать и жалеть, чем не сделать и жалеть.

    Некоторые из моих поделок тут: https://github.com/serge-404

Страница 16 из 20 ПерваяПервая ... 121314151617181920 ПоследняяПоследняя

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

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

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

Похожие темы

  1. Пишем на ассемблере под эмулятором
    от GM BIT в разделе Для начинающих
    Ответов: 76
    Последнее: 15.07.2016, 20:04
  2. Пишем свою ОС. Теория
    от Zet9 в разделе ZX Концепции
    Ответов: 280
    Последнее: 27.06.2012, 15:27
  3. Я ищу свою дему
    от AAA в разделе Демо
    Ответов: 4
    Последнее: 04.05.2005, 22:59
  4. Ищу свою gfx работу!!!
    от invador в разделе Игры
    Ответов: 7
    Последнее: 02.02.2005, 12:54

Ваши права

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