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

User Tag List

Страница 7 из 13 ПерваяПервая ... 34567891011 ... ПоследняяПоследняя
Показано с 61 по 70 из 121

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

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

    По умолчанию

    Цитата Сообщение от jerri
    адрес программы тоже легко узнать
    Код:
            ld hl, NNNN     ; push hl, pop hl
            ld (XX), hl
            ld hl, XX+2
            ld (hl), NN      ;  ret
            call XX
            ...
    
          ORG XX
    XX: DS 3
    Надо иметь три байта памяти. Ворос -- где их взять?

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

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

    По умолчанию

    Цитата Сообщение от caro
    MA80 (МОА) и M80 (CP/M) прекрасно умеют макросами создавать таблицы патчей.
    Как пример см. драйвер электронного диска под ISDOS by MOA.
    Речь про то, как отличить АБСОЛЮТНО ВСЕ ВЫЗОВЫ, от нужных.
    Вот как здесь, вручную, да можно. Но можно элементарно ошибиться
    и записать код по-старому. Со всеми вытекающими последствиями.

    Другое дело, можно создать макросы вида CALL, JP, LD и т.п...
    Но это не всякий ассемблер позволит и сложность всей этой
    макрообвязки получится сопостовимой с написанием собственного
    ассемблера...

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

    По умолчанию

    Так... Я уже загруз по уши... Ну, можно доходчиво мне объяснить так, чтоб я сказал: да моя прога, что пишу без этого всего не может - завтра же беру релокации и навороты, вставляю - и благодаря этому архиБыстро и легко доделываю свое произведение...

  5. #64
    Vitamin C++ Аватар для Vitamin
    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,259
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    84
    Поблагодарили
    36 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от fk0
    В данном случае, вручную -- это значит НИКАК!.
    согласен. но аласм+макросы=hitech-c=ma80=m80=СРЕДСТВО РАЗРАБОТКИ
    дающее на выходе одно и то же.

    а создавать таблицу релокации по двум разным кодам- это еще больший изврат!
    гм. интересно, какое из двух слов связки ALASM+macro вызывает приступ аллергии? щаз выясним...

    как насчет предложения TASM+macro?

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

    По умолчанию

    Цитата Сообщение от Vitamin
    согласен. но аласм+макросы=hitech-c=ma80=m80=СРЕДСТВО РАЗРАБОТКИ
    дающее на выходе одно и то же.
    За ma80 не скажу, но вроде там специально ничего не предусмотрено. А с макросами -- тот же ALASM получается.
    У hitech-c возможности ограничены только созданием таблицы релокации, для настройки кода на адрес, не более того.
    А вот у ZASM -- нет ничего. Макросы есть, но ограниченные,
    такого не позволяют.

    а создавать таблицу релокации по двум разным кодам- это еще больший изврат!
    Тем не менее -- оно работает, и оно доступно. Я беру любой
    ассемблер и элементарно это делаю. Хоть в GENS, хоть в ZASM.
    Вот в ZASM и делал, пока на Hitech не перешёл. Но hitech -- это
    в писюке (или CP/M). А ZASM -- на спектруме.

    гм. интересно, какое из двух слов связки ALASM+macro вызывает приступ аллергии? щаз выясним...
    ALASM. ИБО ЗАСТАВИТЬ ПИСАТЬ СЕБЯ ТЕКСТ ИСКЛЮЧИТЕЛЬНО
    ЗАГЛАВНЫМИ БУКВАМИ, В ИСКЛЮЧИТЕЛЬНО НЕВОЗМОЖНОМ, В ПЛАНЕ "ЮЗАБИЛИТИ" РЕДАКТОРЕ Я СЕБЯ НЕ МОГУ. Потому, что на рядом стоящем писюке есть нормальный редактор. И есть более-менее терпимый в ZASM.
    И вопрос отнюдь не в GUI-интерфейса ZASM'a -- в писюке Vim в
    xterm.

    как насчет предложения TASM+macro?
    TASM последний раз видел в 1997 году. Как раз ZASM 3.0 тогда
    появился.

  7. #66
    Vitamin C++ Аватар для Vitamin
    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,259
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    84
    Поблагодарили
    36 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

    Цитата Сообщение от fk0
    ALASM. ИБО ЗАСТАВИТЬ ПИСАТЬ СЕБЯ ТЕКСТ ИСКЛЮЧИТЕЛЬНО
    ЗАГЛАВНЫМИ БУКВАМИ, В ИСКЛЮЧИТЕЛЬНО НЕВОЗМОЖНОМ, В ПЛАНЕ "ЮЗАБИЛИТИ" РЕДАКТОРЕ Я СЕБЯ НЕ МОГУ.
    ну уж таким его создал автор изначально. можно попросить алко чтоб сделал поддержку маленьких букв редактором и компилятором (он различает регистр мнемоник).

  8. #67
    Activist Аватар для fk0
    Регистрация
    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 даёт слишком большие накладные расходы на вызов
    функий и поэтому, аналогично, имеет смысл, опять же с моей точки
    зрения, исключительно в специфических ситуациях. Например,
    где время некритично, но очень критичен объём занимаемой
    программной памяти.

  9. #68
    Veteran Аватар для Sinus
    Регистрация
    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

  10. #69
    Administrator Аватар для CityAceE
    Регистрация
    13.01.2005
    Адрес
    г. Москва
    Сообщений
    4,575
    Записей в дневнике
    7
    Спасибо Благодарностей отдано 
    402
    Спасибо Благодарностей получено 
    1,207
    Поблагодарили
    394 сообщений
    Mentioned
    48 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

    По умолчанию

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

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

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


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

Страница 7 из 13 ПерваяПервая ... 34567891011 ... ПоследняяПоследняя

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

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

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

Ваши права

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