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

User Tag List

Страница 3 из 10 ПерваяПервая 1234567 ... ПоследняяПоследняя
Показано с 21 по 30 из 91

Тема: Тесты ВМ1

  1. #21
    Veteran Аватар для nzeemin
    Регистрация
    20.12.2005
    Адрес
    Москва
    Сообщений
    1,996
    Спасибо Благодарностей отдано 
    1,061
    Спасибо Благодарностей получено 
    1,224
    Поблагодарили
    478 сообщений
    Mentioned
    15 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от svofski Посмотреть сообщение
    Можно сказать, два года ловил ошибку (хотя конечно же, два года я ничего не делал и потом недельку половил ошибку, но все же).
    8-) Н-да, забавненько.
    А как определил что именно SWAB если тестом не бралось?

  2. #22
    Guru Аватар для svofski
    Регистрация
    20.06.2007
    Адрес
    С.-Петербург
    Сообщений
    4,115
    Спасибо Благодарностей отдано 
    792
    Спасибо Благодарностей получено 
    654
    Поблагодарили
    401 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Спасибо тебе и твоему эмулятору ;) Феликсу тоже спасибо большое: не давал мне продохнуть, выдавал идеи пачками и про SWAB-ы сразу сказал, но я пропустил мимо ушей.

    А искал примерно так же, как доктор Флойд диагностировал HAL. Я почутьчуть сравнивал прогресс в выполнении "PRINT PI" в эмуляторе и в своем компьютере. Сделал брейкпойнты и доступ к R0-R7 и PS через JTAG и сравнивал понемногу. Дело дошло до UNPCK, а в нем SWAB-ы начинаются довольно быстро. Так что основное время ушло на преодоление лени перед реализацией нормальных брехтпунктов и инспектора.

    Кстати об эмуляторе, может быть сделать ему клавиатурный ввод с маппингом от писишной клавиатуры? А то совершенно непонятно, как набирать некоторые символы. А вообще -- зачот! Отладочные окна просто супер.
    Больше игр нет

  3. #23
    Guru
    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,847
    Спасибо Благодарностей отдано 
    84
    Спасибо Благодарностей получено 
    229
    Поблагодарили
    167 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вопрос есть к специалистам по программированию ВМ1: после исполнения каких команд не возникает исключение при нечётном регистре PC? Судя по нескольким программам (тесты, демка Disco Club, Bolder) нечётность PC не проверяется как минимум после JMP. Тоже вопрос: а при всех ли режимах адресации? И как дела обстоят в команде JSR?

    ---------- Post added at 19:26 ---------- Previous post was at 18:54 ----------

    Кажется я понял, в чём дело: на БК вообще не проверялось, чётный ли адрес в регистре PC. Убрал проверку, и всё заработало как надо, и Bolder, и Disco Club. В демке, кстати, эта фича используется для организации цикла с количеством повторений 2 раза. А я-то блин думал!!? Зачем там используется команда INC PC? И как это работает?

  4. #24
    Guru Аватар для svofski
    Регистрация
    20.06.2007
    Адрес
    С.-Петербург
    Сообщений
    4,115
    Спасибо Благодарностей отдано 
    792
    Спасибо Благодарностей получено 
    654
    Поблагодарили
    401 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А я-то наивно надеялся, что эти хаксоры хотя бы БК оставили в покое.

    И что именно происходит, когда выполняется переход по нечетному адресу?
    Больше игр нет

  5. #25
    Guru
    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,847
    Спасибо Благодарностей отдано 
    84
    Спасибо Благодарностей получено 
    229
    Поблагодарили
    167 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ничего особенного. Считываются же слова, а при этом младший бит не используется. Интересно получается, когда INC PC второй раз исполняется - следующее за ней слово пропускается

  6. #26
    Guru Аватар для svofski
    Регистрация
    20.06.2007
    Адрес
    С.-Петербург
    Сообщений
    4,115
    Спасибо Благодарностей отдано 
    792
    Спасибо Благодарностей получено 
    654
    Поблагодарили
    401 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Как это -- "второй раз"?
    Больше игр нет

  7. #27
    Guru
    Регистрация
    24.01.2008
    Адрес
    Уфа
    Сообщений
    3,847
    Спасибо Благодарностей отдано 
    84
    Спасибо Благодарностей получено 
    229
    Поблагодарили
    167 сообщений
    Mentioned
    9 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Например в цикле, или просто в программе несколько команд INC PC. В той же деме Disko Club есть такой код: сначала идёт тело цикла, потом INC PC, затем переход на начало цикла. Первый раз выполнится переход, а второй раз INC PC перепрыгнет команду перехода

  8. #28
    Guru Аватар для svofski
    Регистрация
    20.06.2007
    Адрес
    С.-Петербург
    Сообщений
    4,115
    Спасибо Благодарностей отдано 
    792
    Спасибо Благодарностей получено 
    654
    Поблагодарили
    401 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Я никак не могу понять, как INC PC отличает первый раз от второго. Есть какое-то скрытое внутреннее состояние?
    Больше игр нет

  9. #29
    Guru
    Регистрация
    07.10.2007
    Адрес
    п.Пудость Гатчинского р-на Лен.обл.
    Сообщений
    3,208
    Спасибо Благодарностей отдано 
    346
    Спасибо Благодарностей получено 
    607
    Поблагодарили
    399 сообщений
    Mentioned
    46 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от svofski Посмотреть сообщение
    Я никак не могу понять, как INC PC отличает первый раз от второго. Есть какое-то скрытое внутреннее состояние?
    При чтении слова не учитывается самый младший бит в адресе, т.е. чтение по адресу 1000 и 1001 - читается одна и та же ячейка.
    А теперь пример кода:
    Код:
    1000: ...
          ...
    1020: INC PC
    1022: BR  1000
    1024: ...
    Когда код исполняется первый раз, то адреса четные. Процессор читает по адресу 1020 команду INC PC. После чтения команды счетчик команд становится равным 1022. При исполнении команды счетчик команда уже будет равен 1023. Но по чтению 1023 и 1022 - одно и то же. Читается команда BR 1000, сначала счетчик команд после чтения команды равен 1025, а после исполнения - 1001. Команды перехода осуществляют переход вперед/назад на +127/-128 слов максимум. Переход осуществляется словами, а в команде записано смещение. В данном примере ее код 766, т.е. переход на -12(8) слов, исполняется команда 1025-12*2=1001, поэтому переход происходит в данном случае по нечетному адресу. Далее весь код исполняется в нечетных адресах, но т.к. по чтению четные и нечетные адреса равны, то ничего особенного не происходит до исполнения команды INC PC. При чтении этой команды счетчик команд становится равным 1023 и указывает на команду BR 1000. Но вот при исполнении счетчик команд увеличивается на единицу и становится равным 1024, а этот адрес уже указывает на команду после BR 1000. Вот таким хитрым способом удается сделать двойной цикл.

  10. #30
    Guru Аватар для svofski
    Регистрация
    20.06.2007
    Адрес
    С.-Петербург
    Сообщений
    4,115
    Спасибо Благодарностей отдано 
    792
    Спасибо Благодарностей получено 
    654
    Поблагодарили
    401 сообщений
    Mentioned
    22 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Всё, понял. Спасибо за развернутое объяснение!
    Больше игр нет

Страница 3 из 10 ПерваяПервая 1234567 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Тесты железа
    от Almaz в разделе Софт
    Ответов: 3
    Последнее: 18.03.2006, 02:33

Ваши права

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