User Tag List

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

Тема: Конструктор (ZX SDK)

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

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

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

    По умолчанию

    Цитата Сообщение от Vitamin
    а большее разве нужно? какая стоит цель?
    на входе: исходный текст программы
    на выходе: объектный код, который в идеале можно грузить по любому адресу (с предварительной настройкой соотвецно)
    метод реализации: ЛЮБОЙ!!! в том числе и макросы, кросскомпилеры, ручная обработка, сравнение бинарников.
    Цель такова, что вот есть N релоцируемых программ. Мы их загружаем
    в память, настраиваем, и они каким-то образом начинают вызывать функции друг друга (из других программ, модулей, библиотек). При
    том, что до загрузки ничего не известно, что по каким адресам располагается. Существует три, уже 100 раз тут писалось, метода:

    1) используя функцию диспетчер, аргументом которой является
    "идентификатор функции" в "чужом" программном модуле.
    Это так называемый вызов через RST в том числе. Хотя можно
    и через CALL, как, например, в CP/M -- CALL 0x05, а в регистре
    C -- номер функции. Детали реализации скрываются за
    функцией-диспетчером -- поэтому, возможно, это слишком
    общий метод и его сравнивать с остальными не совсем
    корректно. Но вот тормозной он -- это точно.

    2) Прямой вызов. Для этого все CALL, JP, и даже LD HL, xxx и т.п.
    должны быть пропатчены в вызывающей программе после
    загрузки всех модулей. Требует формирования сложных
    таблиц для патчей создаваемых сложной системой макросов
    поверх ассемблера, или специальным ассебмлером. Требует
    дисковой памяти порядка sum(Ki)+sum(Mi), где Ki -- число
    вызовов внешних функций в i-том модуле, а Mj -- общее
    число экспортирующихся функций в j-том модуле. Памяти
    ОЗУ после настройки не требует. Но Ki -- достаточно велико.

    3) Вызов через функцию-перенаправитель. Для каждой функции
    из вызываемого модуля в вызывающий модуль ещё на этапе
    компиляции включается специальная функция, состоящая
    из одной команды JP xxx. Все вызовы к функциям "чужого"
    модуля адресуются к этим функциям-перенаправителям.
    А сами функции-перенаправители патчатся, после загрузки,
    так, чтобы инструкция JP xxx указвала на действительный адрес
    функции из вызываемого модуля. Данный способ отличается
    от предыдущего тем, что вызов тормозней на 10 тактов и
    памяти ОЗУ требует порядка sum(Mi)+sum(Nj), где Mi -- общее
    число экспортируемых функций в каждом i-том вызываемом
    модуле, Nj -- число внешних вызываемых функций в каждом
    j-том вызывающем модуле.


    Считаю, способ N3 наиболее перспективный. Он позволяет относительно легко в любом ассемблере получить нужный код,
    он не накладывает чрезмерных накладных расходов на совершения
    вызова функций, не требует много памяти как дисковой, так и ОЗУ.
    Хотя по использованию ОЗУ он, проигрывает остальным методам.
    Со способом N2 сравнивать бесполезно (0 байт), против способа
    N1 проигрыш составляет порядка трёх байт на каждую вызываемую
    внешнюю функцию в каждом модуле. При общем числе функций
    порядка десятков, максимум сотни-другой, это вполне допустимый,
    с моей точки зрения, расход памяти.

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

    Способ N1 даёт слишком большие накладные расходы на вызов
    функий и поэтому, аналогично, имеет смысл, опять же с моей точки
    зрения, исключительно в специфических ситуациях. Например,
    где время некритично, но очень критичен объём занимаемой
    программной памяти.

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

  3. #2

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

    По умолчанию

    Короче что-то мы отвлеклись от темы и полезли в дебри.

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

    Если вы ещё с нами, тогда вперёд, иначе не вперёд ^_~

    Для начала выберем координатора. Предлагайте кандидатуры, а CityAceE пескай выберет кого- нибудь одного.

    1) Я. Много писал (и сейчас пишу ^_~) на спектруме. Наиболее известное - TargeT. Шарю в написании больших проектов (правда не на спеке, но думаю опыт пригодится).
    [target] [zemu] [js8x] [pouet] KAY-1024, 5''FDD, 3''FDD, HDD

  4. #3

    Регистрация
    13.01.2005
    Адрес
    г. Москва
    Сообщений
    5,215
    Записей в дневнике
    7
    Спасибо Благодарностей отдано 
    706
    Спасибо Благодарностей получено 
    1,648
    Поблагодарили
    573 сообщений
    Mentioned
    50 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Sinus
    1) Я.
    Я за твою кандидатуру. Ведь дело даже не в опыте, хотя он безусловно очень важен, а ещё и в заинтересованности (увлеченности)...
    С уважением, Станислав.

  5. #4

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

    По умолчанию

    Цитата Сообщение от Sinus
    Короче что-то мы отвлеклись от темы и полезли в дебри.
    Надо уже что-то начинать.
    Тебе начинать хоть прямо сейчас никто не мешает, не думал?
    Для этого не нужно ровно ничего.

    Давайте откроем отдельную тему и назначим координатора, который прислушиваясь к мнению остальных будет выбирать
    Иными словами давайте поиграем в коммунизм. Я против коммунизма. Он даёт исключительно советские решения на выходе.

    из множества решений некоторое одно.
    Вот этого я и боюсь. Одно, исключительно советское в худшем
    смысле этого слова: ни с чем не совместимое, и исключительно горбатое. И избавиться от него потом ну никак нельзя будет.
    Ключевое слово *ОДНО*. Я бы предоставил свободу выбора
    авторам программ. По крайней мере можно было бы посмотреть
    какое решение приживётся эволюционным путём, а не посредством
    насаживания свыше. Другое дело -- совместимость. Хотелось бы
    иметь некий базовый уровень, от которого могли бы происходить
    вариации по разным направлениям, но так чтобы тем или иным способом была возможность преобразования интерфейса к нужному
    виду. Хотелось бы отделить интерфейс вообще от деталей его
    реализации.


    1) Я. Много писал (и сейчас пишу ^_~) на спектруме. Наиболее известное - TargeT. Шарю в написании больших проектов (правда не на спеке, но думаю опыт пригодится).
    Вот возьми и напиши. Не в ассемблере, а свое видение проблемы организации программных интерфейсив, их несовместимости и возможности преобразования из несовместимых в совместимые,
    и наконец проблемы идентификации интерфейсов.

  6. #5

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

    По умолчанию

    Цитата Сообщение от fk0
    Тебе начинать хоть прямо сейчас никто не мешает, не думал?
    Для этого не нужно ровно ничего.
    свои проекты я делаю и никого не спрашиваю.
    сам по себе ZX SDK мне не нужен. для работы я использую свои наработки, и мне их достаточно.

    мне интересен сам процесс.

    Иными словами давайте поиграем в коммунизм. Я против коммунизма. Он даёт исключительно советские решения на выходе.
    никто не заставляет.

    Вот этого я и боюсь. Одно, исключительно советское в худшем
    смысле этого слова: ни с чем не совместимое, и исключительно горбатое. И избавиться от него потом ну никак нельзя будет.
    Ключевое слово *ОДНО*. Я бы предоставил свободу выбора
    авторам программ.
    тогда ничего не получится. если предоставить свободу выбора, то можно смело закрывать проект прямо сейчас, ибо результата не будет.

    По крайней мере можно было бы посмотреть
    какое решение приживётся эволюционным путём, а не посредством
    насаживания свыше.
    у меня нет лишних 20-ти лет на эксперименты.

    Другое дело -- совместимость. Хотелось бы
    иметь некий базовый уровень, от которого могли бы происходить
    вариации по разным направлениям, но так чтобы тем или иным способом была возможность преобразования интерфейса к нужному
    виду.
    если будут всякие преобразования, это значит мниго лишней писанины. а если с ZX SDK писать придётся ещё больше чем без него, то значит он не нужен.

    Хотелось бы отделить интерфейс вообще от деталей его
    реализации.
    да... ООП и другие умные слова.
    это всё тормоза. если надо тормозоть, то возьми себе пэцэ. и gcc. и g++. и отделяй интерфейсы в абстрактных классах от реализации. и никого не спрашивай.

    Вот возьми и напиши. Не в ассемблере, а свое видение проблемы организации программных интерфейсив, их несовместимости и возможности преобразования из несовместимых в совместимые,
    и наконец проблемы идентификации интерфейсов.
    Описывать проблемы можно 8 лет. А надо делом заниматься.
    [target] [zemu] [js8x] [pouet] KAY-1024, 5''FDD, 3''FDD, HDD

  7. #6

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

    По умолчанию

    [QUOTE=Sinus]свои проекты я делаю и никого не спрашиваю.
    сам по себе ZX SDK мне не нужен. для работы я использую свои наработки, и мне их достаточно.

    мне интересен сам процесс.
    То-есть конечный результат не важен.

    никто не заставляет.
    Всем (пионерам) известно -- в колхозы никого не заставляли.

    тогда ничего не получится. если предоставить свободу выбора, то можно смело закрывать проект прямо сейчас, ибо результата не будет.
    Отсутствие результата -- тоже результат. А будет он или не ещё
    вопрос. Мы имеем примеры как и в случае наличия таковой свободы
    и при её отсутствии результаты получались самые разные. Есть
    шанс, что будет. И это ещё зависит от того, что именно считать результатом. В конечном счёте это зависит от конкретных людей
    (тебе -- никто не мешает...)

    у меня нет лишних 20-ти лет на эксперименты.
    А лишнее время на бессмысленный "процесс" стало быть есть?

    если будут всякие преобразования, это значит мниго лишней писанины. а если с ZX SDK писать придётся ещё больше чем без него, то значит он не нужен.
    Это неизвестно больше или нет. Возможно больше, но не факт
    что намного. Нужно хотя бы иметь возможность оценить насколько.
    Можно взять, например, модульную систему (C) Vitamin и мою, и
    посмотреть, больше будет или нет.

    да... ООП и другие умные слова.
    это всё тормоза. если надо тормозоть, то возьми себе пэцэ. и gcc. и g++. и отделяй интерфейсы в абстрактных классах от реализации. и никого не спрашивай.

    Описывать проблемы можно 8 лет. А надо делом заниматься.
    Я так думаю, это тебе взять что-ли пэцэ, g++, позаниматься делом...
    А когда энтузиазма поубавится, уже за что-то браться. Просто иначе
    получается -- тут говорят делом надо заниматься, а каким именно делом никто не может толком определиться. Каков результат-то должен быть? Ответь хоть бы для себя на этот вопрос, сформулируй задачу себе. Я вот за себя могу сказать: Я ОТВЕТА НА ЭТОТ ВОПРОС
    НЕ ЗНАЮ. И ПОИСК ОТВЕТА НА ЭТОТ ВОПРОС -- ЭТО ЛИШЬ ПЕРВЫЙ
    МАЛЮСЕНЬКИЙ ШАЖОК В ОЧЕНЬ ДЛИННОЙ ДОРОГЕ, где писать какой-код -- самый последний, завершающий шаг.

  8. #7

    Регистрация
    23.03.2005
    Адрес
    г. Чернигов, Украина
    Сообщений
    477
    Спасибо Благодарностей отдано 
    15
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ну и в итоге ? Поругались ? А результаты?

  9. #8

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

    По умолчанию

    Цитата Сообщение от Знахарь
    Ну и в итоге ? Поругались ? А результаты?
    А результаты несколькими страницами выше. Рассмотрены самые разные варианты, их плюсы и минусы, личные предпочтения.
    Имхо, zx sdk должно существовать в виде исходников, причем в текстовом виде и безо всяких специфичных для каждого ассемблера штук. Плюс документация. А уж обертку для вызова каждый напишет сам...

  10. #9

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

    По умолчанию

    Цитата Сообщение от Знахарь
    Ну и в итоге ? Поругались ? А результаты?
    Как уже говорил Витамин, результаты вроде как есть.
    Но они такие... Как бы никакие. С чем пришли с тем и ушли.
    [target] [zemu] [js8x] [pouet] KAY-1024, 5''FDD, 3''FDD, HDD

  11. #10

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

    По умолчанию

    Цитата Сообщение от fk0
    Всем (пионерам) известно -- в колхозы никого не заставляли.
    т.е. когда нечего сказать, надо переходить на личности и нести бред не по теме.

    А лишнее время на бессмысленный "процесс" стало быть есть?
    на бессмысленный нет. если будет результат (на что я надеюсь) то есть.

    Это неизвестно больше или нет. Возможно больше, но не факт
    что намного. Нужно хотя бы иметь возможность оценить насколько.
    Можно взять, например, модульную систему (C) Vitamin и мою, и
    посмотреть, больше будет или нет.
    модульная система это несколько не в тему. модули нужны тогда когда они нужны. допустим драйвера для HDD, CD-ROM и т.д.
    а в данном случае динамически загружаемые модули не нужны.

    Я так думаю, это тебе взять что-ли пэцэ, g++, позаниматься делом...
    да я вроде как бы работаю. правда опенсорсовой фигнёй в линухе не страдаю и пишем мы под нормальные оси (виндовс)

    А когда энтузиазма поубавится, уже за что-то браться.
    когда энтузиазма поубавится, бесплатно я делать ничего не буду ^_~

    Просто иначе получается -- тут говорят делом надо заниматься, а каким именно делом никто не может толком определиться. Каков результат-то должен быть? Ответь хоть бы для себя на этот вопрос, сформулируй задачу себе.
    я уже писал (на первых страницах), каким я хочу видеть ZX SDK.
    могу сформулировать ещё раз.
    [target] [zemu] [js8x] [pouet] KAY-1024, 5''FDD, 3''FDD, HDD

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

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

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

Ваши права

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