User Tag List

Показано с 1 по 10 из 77

Тема: Менеджер памяти для многозадачной ОС

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

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

    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,286
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    91
    Поблагодарили
    39 сообщений
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    насчет memcpy и проч.
    данные функции просто необходимо включить в ядро по той простой причине, что ядро предоставляет свой интерфейс доступа к памяти. они будут работать с дескрипторами блоков, осуществлять самые быстрые алгоритмы, возможно даже с использованием аппаратных средств. для работы в локальной памяти конечно хватит ldir и иже с ним.

    насчет вызовов.
    зачем тратить память (3 байта на каждую точку) и время (10 тактов на вызов), организуя набор точек перехода? или тратить туеву хучу тактов на интерпретацию параметров рестартов? если можно сделать так, что система будет подставлять адреса вызовов в тело процесса, настраивая его. не считая время на настройку, получаем 2 лишних байта на точку входа (таблицу-то надо хранить) и никаких лишних тактов на вызов

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

  3. #2

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

    По умолчанию

    таблица необходима для совместимости! чтобы программы все не пересобирать когда будут явные системные изменения!!!

  4. #3

    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,286
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    91
    Поблагодарили
    39 сообщений
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от random
    таблица необходима для совместимости! чтобы программы все не пересобирать когда будут явные системные изменения!!!
    читай внимательней предыдущий пост. не компилятор будет подставлять адреса, а СИСТЕМА. т.е. начихать что там адреса физические сменились. лишь бы порядок нумерации не менялся (на нем основывается подстановка)

  5. #4

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

    По умолчанию

    ты чего, предлагаешь делать DLL сразу же? не быстровато ли? по любому будет проще систему собирать если у самой системы есть общая таблица всех вызовов. и не 4 байта а всего 2, если не хотите версии проверять.

  6. #5

    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,286
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    91
    Поблагодарили
    39 сообщений
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от random
    ты чего, предлагаешь делать DLL сразу же? не быстровато ли? по любому будет проще систему собирать если у самой системы есть общая таблица всех вызовов. и не 4 байта а всего 2, если не хотите версии проверять.
    в длл немного по другому- адреса вычисляются динамически по символическим именам. а насчет общей таблицы вызовов- я имел в виду ее. т.е. приложение грузится в память и начинает настраиваться под конкретный адрес- вот сюда занести текущий адрес с таким-то смещением, а вот сюда занести адрес такого-то системного вызова. по номеру вызова берем адрес процедуры и пихаем адрес в код.

  7. #6

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

    По умолчанию

    лично мне нравится вызов системных функций через RST - это сокращает код, на 1 байт на вызов как минимум, и неважно, что на интерпретацию кода уходит еще несколько тактов. И одновременно решает вопрос независимости от версии осы - лишь бы номера функций совпадали. А загрузчику можно было бы доверить подгонку адресов в самой загружаемой программе "по месту", не всегда в Z80 удается делать код перемещаемым без само-подгонки. Вот на ось и можно было было бы положиться.

  8. #7

    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,286
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    91
    Поблагодарили
    39 сообщений
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vladimir Kladov
    лично мне нравится вызов системных функций через RST - это сокращает код, на 1 байт на вызов как минимум, и неважно, что на интерпретацию кода уходит еще несколько тактов. И одновременно решает вопрос независимости от версии осы - лишь бы номера функций совпадали.
    что короче:
    ld a,func_number
    rst N

    или

    call NNN
    ?

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

  9. #8

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

    Post

    Цитата Сообщение от Vitamin
    что короче:
    ld a,func_number
    rst N

    или

    call NNN
    ?

    по памяти одинаково. только у первого метода несколько минусов- занятый регистр, затраты на интерпретацию (для которой также нужны регистры, их тогда прийдется либо сохранять либо не использовать)
    А если метод которому уже почти 25 лет?

    RST n
    DB n

  10. #9

    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,286
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    91
    Поблагодарили
    39 сообщений
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Spectre
    А если метод которому уже почти 25 лет?

    RST n
    DB n
    лучше только по памяти. затраты на интерпретацию команды больше, потому что надо считать код команды, скорректировать адрес возврата. да и регистров при этом больше используется

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

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

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

Похожие темы

  1. Ответов: 6
    Последнее: 10.09.2013, 16:04
  2. Порты памяти - Scorpion и др.
    от ASMAN в разделе Программирование
    Ответов: 27
    Последнее: 18.06.2008, 12:20
  3. Unreal. Breakpoint на чтение памяти.
    от valker в разделе Эмуляторы
    Ответов: 1
    Последнее: 12.02.2005, 12:58

Ваши права

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