User Tag List

Страница 4 из 6 ПерваяПервая 123456 ПоследняяПоследняя
Показано с 31 по 40 из 53

Тема: Определение текущего адреса

  1. #31

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

    По умолчанию

    Цитата Сообщение от Alex Rider Посмотреть сообщение
    # запоминаем ячейки #FFFE и #FFFF;
    а вдруг еще и стек нельзя трогать? а то куча ограничений на все, а на стек нет... вдруг он не инициализирован и указывает в пзу или в программу, или на 0 (и тогда #FFFE перепишется)... мутная задача какая-то.

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

  3. #32

    Регистрация
    07.02.2008
    Адрес
    г. Рязань
    Сообщений
    2,928
    Спасибо Благодарностей отдано 
    37
    Спасибо Благодарностей получено 
    124
    Поблагодарили
    44 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от psb Посмотреть сообщение
    а вдруг еще и стек нельзя трогать? а то куча ограничений на все, а на стек нет...
    А реально отдавать управление чужому заинкбиненному коду (не понимая как он использует стек) в тот момент, когда на стеке нету двух байт для перезаписи или стек настроен так, что при первой же записи перепрыгиывет через 0? Я не о технической возможности, а о вероятности натолкнуться на такое.

  4. #33

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

    По умолчанию

    что значит реально ли? я думаю человеки много раз так делали (по ошибке). по-нормальному, всегда нужно знать какую-то доп. информацию, чтобы не возникало сюрпризов. вон куча пакеров распаковщики пихает в #5Bxx, а там то переменные 128к бейсика, то резидент sts... т.е. имхо задача требует уточнения условий.

  5. #34

    Регистрация
    07.02.2008
    Адрес
    г. Рязань
    Сообщений
    2,928
    Спасибо Благодарностей отдано 
    37
    Спасибо Благодарностей получено 
    124
    Поблагодарили
    44 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    http://zx.pk.ru//showthread.php?t=17811

    Про "по ошибке" - согласен. Если контекст исполнения чужого кода настроен ошибочно, понять, что же не так, мучительно тяжело. Другое дело, что внешний (поставляемый) код должен налагать минимум разумных ограничений на вызывающий код. На мой взгляд, ограничения в виде наличия свободной памяти по жестко заданным адресам (при релоцируемом коде), "невидимое" знакоместо над адресом #4000, разрешение/запрешение прерываний и их режим, наличие стандартной прошивки BASIC 48, включенной в момент вызова кода - ограничения неразумные. А вот наличие двух свободных 2-х байтов на стеке, расположенном не по адресам 0-1 - это разумное ограничение, которое, кстати, обычно никто не упоминает (вспомним, к примеру, депакеры и плееры, работающие в демах при жестких условиях - нигде не оговаривается максимальная глубина стека). Да и не задача это вообще, а просто вопрос по технике программирования.

    Цитата Сообщение от psb Посмотреть сообщение
    имхо задача требует уточнения условий
    Согласен, в постановке задачи, где речь идет про незнание контекста, можно было бы сказать, что я, как автор вызываемого релоцируемого кода, рассчитываю на какое-то разумное пространство на стеке.
    Последний раз редактировалось GriV; 26.07.2012 в 13:12.

  6. #35

    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,866
    Спасибо Благодарностей отдано 
    328
    Спасибо Благодарностей получено 
    310
    Поблагодарили
    234 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    вроде бы определились с условиями?

    самый простой разумный вариант

    если это спрайт граббер значит на экране графика
    значит использовать экран можем
    ld de,(#4000)
    ld hl,#e9e1
    ld (#4000),hl
    call #4000

    this
    ld (#4000),de
    ;hl=this
    С уважением,
    Jerri / Red Triangle.

  7. #36

    Регистрация
    07.02.2008
    Адрес
    г. Рязань
    Сообщений
    2,928
    Спасибо Благодарностей отдано 
    37
    Спасибо Благодарностей получено 
    124
    Поблагодарили
    44 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от jerri Посмотреть сообщение
    если это спрайт граббер значит на экране графика
    значит использовать экран можем
    Грабер умеет выгружать код вывода спрайта вместе с вырезанными спрайтами, чтобы, например, AER, мог вставить его в дему. Вот для этого кода и надо определять адрес чтобы посчитать где сами спрайты находятся. Так что предпочту вариант с #FFFE, а не с #4000

    ---------- Post added at 15:49 ---------- Previous post was at 15:46 ----------

    Цитата Сообщение от zebest Посмотреть сообщение
    Остался вопрос с глубиной.
    например 5кБ стек как сделать?
    А никак нельзя сделать ограничить размер стека. Можно занести в SP значение, на 5 Кб большее, чем последний используемый программой адрес, и писать код так, чтобы в стек не попадало больше 5 Кб. Только 5 Кб для стека - это зачем? BASIC резервирует себе максимум 80 байт, например.

  8. #37

    Регистрация
    26.03.2008
    Адрес
    Питкяранта
    Сообщений
    1,822
    Спасибо Благодарностей отдано 
    274
    Спасибо Благодарностей получено 
    122
    Поблагодарили
    95 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вспомнилось вдруг как без стека и CALL адрес выяснить - по ключу с помощью CPIR.
    Чем длиннее ключ - тем надёжней, но и код (который определяет) тоже будет увеличиватся пропорционально.
    Этого можно избежать сделав ключ цикличным, но всё равно размер ключа должен быть ощутимым, иначе надёжность падает (вдруг такой блок чисто случайно ещё где попадётся?).

  9. #38

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

    По умолчанию

    Цитата Сообщение от Destr Посмотреть сообщение
    по ключу с помощью CPIR.
    а можно набросок кода?

  10. #39

    Регистрация
    26.03.2008
    Адрес
    Питкяранта
    Сообщений
    1,822
    Спасибо Благодарностей отдано 
    274
    Спасибо Благодарностей получено 
    122
    Поблагодарили
    95 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от psb Посмотреть сообщение
    а можно набросок кода?
    Ну как-то так (не тестил, не пробовал, именно набросок)
    LD DE,#0 (ну или откуда начинать? Если с RAM, то #4000)
    M1:
    LD BC,0
    LD A,"K"
    CPIR
    INC HL
    LD A,(HL)
    CP "E"
    JR NZ,M1
    INC HL
    LD A,(HL)
    CP "Y"
    DEC HL
    DEC HL
    JR NZ,M1
    INC HL
    INC HL
    INC HL
    JP (HL)
    DB "KEY"
    .... (сюда по-идее должен прыгнуть PC и в HL этот-же адрес)

    Как-то так.
    Может быть жестоко ошибаюсь.
    Сейчас тестить некогда, но в своё время ковырялся с определением адреса - ностальжи увидев тему Позже обязательно попробую. Или топикстартер пусть поковыряет - расскажет работает или нет. Если что расскажу идею про цикличные ключи (пример приведён с тремя знаками, это очень мало, а много знаков делать - код раздуется. есть мысли как его сделать в цикле)
    Последний раз редактировалось Destr; 22.06.2012 в 01:11.

  11. #40

    Регистрация
    01.12.2010
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,657
    Записей в дневнике
    21
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А можно 2-х байтный ключ использовать. Если в памяти будет найдено два совпадения, то просто увеличить ключ на единицу и искать еще раз.

    (А нет. Адресации относительно IP нет. Ключ не увеличить.)

    (А нет. А нет. Мы можем после нахождения ключа увеличить его и тем самым проверить, наш ли это ключ.)
    Последний раз редактировалось vinxru; 22.06.2012 в 16:09.

Страница 4 из 6 ПерваяПервая 123456 ПоследняяПоследняя

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

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

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

Похожие темы

  1. Расчет адреса точки на экране
    от Ares в разделе Программирование
    Ответов: 10
    Последнее: 26.07.2012, 17:46
  2. Адреса 00H-100H
    от Helloween в разделе Оси
    Ответов: 14
    Последнее: 10.05.2011, 14:26
  3. FDD - адреса
    от AlexBel в разделе MSX
    Ответов: 1
    Последнее: 11.05.2009, 10:45
  4. Определение Turbo-FM
    от Максагор в разделе Программирование
    Ответов: 21
    Последнее: 28.09.2007, 20:29
  5. Определение номера дисковода
    от goodboy в разделе Программирование
    Ответов: 2
    Последнее: 22.06.2005, 01:54

Ваши права

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