User Tag List

Страница 9 из 25 ПерваяПервая ... 5678910111213 ... ПоследняяПоследняя
Показано с 81 по 90 из 244

Тема: NedoOS

  1. #81

    Регистрация
    27.01.2005
    Сообщений
    924
    Спасибо Благодарностей отдано 
    28
    Спасибо Благодарностей получено 
    193
    Поблагодарили
    154 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    ну аффтар дето говорил что пиления ос началось еще огого когда
    и вот только недавно запилилось в нужных количествах и темпах

    - - - Добавлено - - -


    а че тут удивительного?
    в придачу самих рестартов всего 8
    это у х86 256 интов...
    Для системных вызовов достаточно одного.
    Смысл их размазывать по всем рестартам?

  2. #82

    Регистрация
    22.05.2011
    Адрес
    г. Дзержинск, Украина
    Сообщений
    6,829
    Спасибо Благодарностей отдано 
    483
    Спасибо Благодарностей получено 
    663
    Поблагодарили
    513 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от SfS Посмотреть сообщение
    Смысл их размазывать по всем рестартам?
    шоб быстрее было ЖО
    дрочить через один вызов это тютю

    ладно если бы ты сказал что точка входа плавающая и выдаются для программы в произвольно необходимом месте
    тогда это было может быть и актуально
    а так ось прибита к первым n байтам гвоздями...
    Последний раз редактировалось NEO SPECTRUMAN; 17.11.2020 в 22:45.

  3. #83

    Регистрация
    27.01.2005
    Сообщений
    924
    Спасибо Благодарностей отдано 
    28
    Спасибо Благодарностей получено 
    193
    Поблагодарили
    154 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    шоб быстрее было ЖО
    дрочить через один вызов это тютю

    ладно если бы ты сказал что точка входа плавающая и выдаются для программы в произвольно необходимом месте
    тогда это было может быть и актуально
    а так ось прибита к первым n байтам гвоздями...
    В чём "быстрее"? Всё равно функция задаётся через какой-то регистр. Какая разница - иметь таблицу из 8 функций или из 256 ?
    На фоне всего остального выигрыш в скорости практический нулевой.

    256 функций - это таблица из 512 байт. Если её в отдельной странице сделать (а ОС в любом случае в отдельной странице) - то никаких проблем. Грубо говоря, любой системный вызов это нечто вроде:

    Надо больше функций? Делаем таблицу больше. Примерно так.

    Код:
    ;// гдето в коде ПО bc - номер системного вызова. Остальные регисты - параметры (или стек, не важно)
    ld bc,#os_call_number
    rst 8
    .................
    
    ;// Системный рестарт (для примера RST8)
    org 0x0008
    // Вход
    RST8_entry:
    		call store_context_and_set_system_page
    		// Сохранили всё, что надо для вызова и включили системную страницу с адреса 0xC000
    		// считаем, что bc не изменяется при вызове
    		
    		// Вычисляем адрес обработчика системной функции
    		ld	hl,#0xC000
    		add	hl,bc
    		ld	c,(hl)
    		inc	hl
    		ld	b,(hl)
    		push	bc
    		ret		// Переходим на обработчик
    
    // Выход
    RST8_exit:
    		call restore_context_and_set_progpage
    		ret
    Чем поможет размазывание по рестартам - непонятно.

  4. #84

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

    По умолчанию

    Цитата Сообщение от SfS Посмотреть сообщение
    В чём "быстрее"?
    быстрее во всём. удобнее, нагляднее, логичнее иметь несколько точек входа в разные уровни API. Например, rst 8 для обращения к BIOS в котором лежат низкоуровневые процедуры и функции. rst 0x10, для вызова dos/bdos. rst 0x18, для обращения к логическим драйверам и т.д. твой вариант тоже интересен, но он значительно медленнее. Сначала делать
    call store_context_and_set_system_page
    // Сохранили всё, что надо для вызова и включили системную страницу с адреса 0xC000
    // считаем, что bc не изменяется при вызове
    а потом уже идёт вызов системы. представь. что в программе идёт какая-то загрузка каких-то данных с одновременным выводом информации на экран/терминал. соответственно. чем больше вызовов, тем медленнее будет работать программа, т.к. вызов загромождён не нужными процедурами. А когда у тебя, скажем:
    Код:
    ;RST 10h
    		jp sys				; вектор ДОС-а
                    ...
    ;-------------------------------------------------
    ; ДОС-овый вектор
    ;-------------------------------------------------
    sys:		push hl
    		ld l,c			; номер команды
    		ld h,sys_tbl / 256		; 0200h..02FFh массив мл.байтов адресов
    		ld c,(hl)			; загр. мл.байт адреса
    		inc h			; 0300h..03FFh массив ст.байтов адресов
    		ld h,(hl)			; загр. ст.байт адреса
    		ld l,c			; готовый адрес
    		ex (sp),hl			; в стек и
    		ret
    то всё работает в разы быстрее, занимает меньше места, нагляднее и удобнее. тем более, что rst это 1 байт против 3х если использовать всякие call`ы.
    256 функций - это таблица из 512 байт.
    Надо больше функций? Делаем таблицу больше.
    и в результате твоя система превращается в кашу аля недоос, где все уровни смешаны в одну кучу, где при добавлении просто драйвера какой нить флешки, слетает вся система и всё начинает тупить (а то ещё и диск убивать).
    ещё и с описанием будет каша аля тазис, в которой ВНЕЗАПНО работа с каталогами затесалась в "уровень" ccp. серия номеров функций без разделения на логические, дос, ioctl и другое, всё в одной куче.
    спасибо, лично мне такие системы не интересны.

    а ещё повеселил ответ на твой вопрос на тамошнем форуме... но то такое...
    Последний раз редактировалось Sayman; 18.11.2020 в 06:30.
    0A заповедей:
    I. Не удаляй каталог свой.
    II. Не удаляй до времени ни одного файла.
    III. Не кради файлы.
    IV. Не желай программы ближнего своего.
    V. Почитай BDOS и BIOS как родителей своих ...
    ---
    Sprinter resurrect:
    Telegram
    Discord
    Repo
    Forum

  5. #85

    Регистрация
    06.02.2009
    Адрес
    Кемерово
    Сообщений
    1,409
    Спасибо Благодарностей отдано 
    72
    Спасибо Благодарностей получено 
    227
    Поблагодарили
    161 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    В MS-DOS почти все API через int 21h, в Linux - системные вызовы через int 80h. И ничего, работает.
    ПК8010 "Корвет"+ExtRom+AY, Atari 65XE+SDrive, Дельта-С(52ИС)+AY, Scorpion ZS 1024+SMUC

  6. #86

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

    По умолчанию

    Цитата Сообщение от marinovsoft Посмотреть сообщение
    В MS-DOS почти все API через int 21h, в Linux - системные вызовы через int 80h. И ничего, работает.
    да, если не считать того, что ms-dos и тем более Linux это x86, где любая команда выполняется быстрее, чем на нашем зетнике и памяти чуть побольше. сравнивать не стоит. тут даже какая-нить ссаная атмега8 будет быстрее, чем z80. а вы ещё всё повешать в одну кучу желаете. да и лукавите вы слегка, ведь всё, что касается ioctl, резидентов и прочего подобного, в MS-DOS убрано в другие INT. например, в INT 25h, INT 2Fh.
    про линукс речи вообще нет. система с совершенно иной идеологией, написанная на сях. К слову сказать, в uzix и fuzix используется аналогичная метода вызова. ну и что, ка к оно там, быстро всё работает на z80? не видно толп пользователей что-то и тонн софта.
    0A заповедей:
    I. Не удаляй каталог свой.
    II. Не удаляй до времени ни одного файла.
    III. Не кради файлы.
    IV. Не желай программы ближнего своего.
    V. Почитай BDOS и BIOS как родителей своих ...
    ---
    Sprinter resurrect:
    Telegram
    Discord
    Repo
    Forum

  7. #87

    Регистрация
    06.02.2009
    Адрес
    Кемерово
    Сообщений
    1,409
    Спасибо Благодарностей отдано 
    72
    Спасибо Благодарностей получено 
    227
    Поблагодарили
    161 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Sayman Посмотреть сообщение
    К слову сказать, в uzix и fuzix используется аналогичная метода вызова. ну и что, ка к оно там, быстро всё работает на z80?
    А оно медленно работает именно из-за того, что мало количество точек входа ?
    Цитата Сообщение от Sayman Посмотреть сообщение
    не видно толп пользователей что-то и тонн софта.
    То же самое можно сказать и о NedoOS.
    ПК8010 "Корвет"+ExtRom+AY, Atari 65XE+SDrive, Дельта-С(52ИС)+AY, Scorpion ZS 1024+SMUC

  8. #88

    Регистрация
    22.05.2011
    Адрес
    г. Дзержинск, Украина
    Сообщений
    6,829
    Спасибо Благодарностей отдано 
    483
    Спасибо Благодарностей получено 
    663
    Поблагодарили
    513 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от SfS Посмотреть сообщение
    В чём "быстрее"? Всё равно функция задаётся через какой-то регистр. Какая разница - иметь таблицу из 8 функций или из 256 ?
    На фоне всего остального выигрыш в скорости практический нулевой.
    си головного моска?

  9. #89

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

    По умолчанию

    Цитата Сообщение от marinovsoft Посмотреть сообщение
    А оно медленно работает именно из-за того, что мало количество точек входа ?
    оно медленно работает из-за всего, мало того, что там си, так ещё и диспетчер медленный.
    я там выше привёл рабочий пример. оно работает быстрее, чем вариант от Sfs. при этом есть такие моменты:
    1. человек который пилит систему не путается в модулях/уровнях системы. например, можно спокойно добавить новый, скажем, isa-cf читалки. даже если что-то косячнул в нём, остальные драйвера не слетают и система будет продолжать работать.
    2. у пользователя не будет в голове каша при чтении мануалов. он читает раздел посвящённый bdos, к примеру и понимает, что к этим функциям обращается через rst 0x10. а если ему по какой-то причине нужно напрямую сектора читать (например, пишет fdisk), то для этого он может использовать rst 8. соответственно берёт в руки мануал на биос и изучает его. и никакой путаницы нет. и главное, диспетчер быстро отправляет на нужную функцию, т.к. оптимизация. табличка со списком функций лежит на кратном 256 адресе. процедура вызова очень короткая. ваши придирки к пачке rst не ясны, очевидно же, что с целью оптимизации места и тактов. при этом суть и логика не теряется.
    к сожалению к недооси это всё слабо относится, т.к. там как раз всё свалено в одну кучу, чего делать не стоит.

    Цитата Сообщение от marinovsoft Посмотреть сообщение
    То же самое можно сказать и о NedoOS.
    дык а я и не поклонник сабжа
    0A заповедей:
    I. Не удаляй каталог свой.
    II. Не удаляй до времени ни одного файла.
    III. Не кради файлы.
    IV. Не желай программы ближнего своего.
    V. Почитай BDOS и BIOS как родителей своих ...
    ---
    Sprinter resurrect:
    Telegram
    Discord
    Repo
    Forum

  10. #90

    Регистрация
    27.01.2005
    Сообщений
    924
    Спасибо Благодарностей отдано 
    28
    Спасибо Благодарностей получено 
    193
    Поблагодарили
    154 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от marinovsoft Посмотреть сообщение
    В MS-DOS почти все API через int 21h, в Linux - системные вызовы через int 80h. И ничего, работает.
    Так о чём и речь.
    Если бы надо было всего 8 вызовов - то рестартов бы хватило. А так - на каждый рестарт в итоге СВОЯ таблица. Скорости это не прибавляет. Зато всё мешает в кучу.

    - - - Добавлено - - -

    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    си головного моска?
    Нет, рациональный подход. Вызовов много. Памяти тоже не 48к (мы ж про АТМ и EVO говорим). ЧТо мешает иметь таблицу, например в 2К величиной и там хранить до 1024 адресов функций?
    Это полюбому быстрее, чем извращения с мильёнами рестартов.
    Но самое главное, добавить новый вызов - элементарно, не трогая остальных.

Страница 9 из 25 ПерваяПервая ... 5678910111213 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Стримы про разработку под NedoOs
    от hippiman в разделе Новости
    Ответов: 17
    Последнее: 17.08.2020, 21:33

Ваши права

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