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

User Tag List

Страница 99 из 225 ПерваяПервая ... 9596979899100101102103 ... ПоследняяПоследняя
Показано с 981 по 990 из 2243

Тема: Особенности процессоров и устройств архитектуры PDP-11. Тесты. Диагностика.

  1. #981
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    10,352
    Благодарностей: 3605
    Mentioned
    5 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию Новая версия теста - TSTVM2 v0.3a

    Обновления в тесте:

    1. Улучшено тестирование команды деления (спасибо за замечание Patron'у).
    2. Сделано жесткое тестирование команды MARK (на реале не проверено, проверено на эмуляторах УКНЦ - EmuStudio и UKNCBTL).

    TSTVM2 v0.3a

  2. Этот пользователь поблагодарил Titus за это полезное сообщение:
    hobot (29.10.2014)

  3. #982
    Guru Аватар для form
    Регистрация
    27.05.2009
    Адрес
    СССР, Новосибирск
    Сообщений
    5,222
    Благодарностей: 1975
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    тестирование команды MARK
    Код:
    MOV	#^O006400,R0		; R0 - код команды MARK N
    Ассемблер допускает написание
    Код:
    MOV     #MARK,R0
    (MARK определять не нужно - фича).

    Для тестирования необязательно загонять в стек. Пример использованя команды MARK и так и так (а заодно использования мнемоники вместо кода):
    Код:
    .TY MARK.MAC
            .TITLE  MARK -- ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ MARK
            .IDENT  /V01.00/
    
            .MCALL  .EXIT,.PRINT
    
    ;+
    ;ПРИМЕР БЕЗ ИСПОЛЬЗОВАНИЯ СТЕКА
    ;-
    START:: MOV     #RSTRT,R5               ;АДРЕС ДЛЯ ПЕРЕХОДА
            MARK    4                       ;ИДЕМ ТУДА, УСТАНАВЛИВАЕМ СТЕК
    
    STACK:: .BLKW   4                       ;ОБЛАСТЬ СТЕКА
            .WORD   123456                  ;ЗНАЧЕНИЕ ДЛЯ R5
    ;+
    ;ПОСЛЕ ВЫПОЛНЕНИЯ КОМАНДЫ MARK В R5 БУДЕТ ПОМЕЩЕНО
    ;123456, А SP БУДЕТ УКАЗЫВАТЬ НА #RSTRT
    ;-
    RSTRT:: MOV     R5,R1                   ;ПЕРЕВОДИМ R5 В ASCII
            MOV     #VR5,R0                 ;
            MOV     PC,R2                   ;
            CALL    $CBOMG                  ;
            MOV     #VSP,R0                 ;ПЕРЕВОДИМ SP В ASCII
            MOV     SP,R1                   ;
            MOV     PC,R2                   ;
            CALL    $CBOMG                  ;
            MOV     #VRS,R0                 ;ПЕРЕВОДИМ АДРЕС #RSTRT В ASCII
            MOV     #RSTRT,R1               ;...ДОЛЖЕН БЫТЬ РАВЕН SP
            MOV     PC,R2                   ;
            CALL    $CBOMG                  ;
            .PRINT  #R5VAL                  ;ПЕЧАТАЕМ ЗНАЧЕНИЯ
    
    ;+
    ;ПРИМЕР С ИСПОЛЬЗОВАНИЕМ СТЕКА
    ;-
            MOV     R5,-(SP)                ;СОХРАНЯЕМ R5
            MOV     #1,-(SP)                ;ПОМЕЩАЕМ В СТЕК АРГУМЕНТ #1
            MOV     #2,-(SP)                ;...#2
            MOV     #3,-(SP)                ;...#3
            MOV     #MARK+3,-(SP)           ;ПОМЕЩАЕМ В СТЕК КОМАНДУ MARK
            MOV     SP,R5                   ;УСТАНАВЛИВАЕМ ЕЕ АДРЕС ДЛЯ RTS
            CALL    SUBR                    ;ВЫЗЫВАЕМ ПОДПРОГРАММУ
            MOV     #VSP2,R0                ;ПЕРЕВОДИМ SP В ASCII
            MOV     SP,R1                   ;
            MOV     PC,R2                   ;
            CALL    $CBOMG                  ;
            .PRINT  #LEAVE                  ;ПЕЧАТАЕМ СООБЩЕНИЕ ВЫХОДА
            .EXIT                           ;ВЫХОД В СИСТЕМУ
    
    SUBR:   .PRINT  #ENTER                  ;ПЕЧАТАЕМ СООБЩЕНИЕ ВЫХОДА
            RTS     R5                      ;ВОЗВРАТ И ВОССТАНОВЛЕНИЕ СТЕКА
    
    R5VAL:  .ASCII  /R5=/
    VR5:    .ASCII  /XXXXXX, SP=/
    VSP:    .ASCII  /XXXXXX, #RSTRT=/
    VRS:    .ASCIZ  /XXXXXX/
    
    ENTER:  .ASCIZ  /SUBROUTINE ENTERED/
    LEAVE:  .ASCII  /SUBROUTINE LEAVED WITH SP=/
    VSP2:   .ASCIZ  /XXXXXX/
    
            .END    START
    
    
    .EX MARK
    R5=123456, SP=001020, #RSTRT=001020
    SUBROUTINE ENTERED
    SUBROUTINE LEAVED WITH SP=001020
    
    .
    А это отвлеченно - пример когда команда MARK работает не так как ожидается:
    Код:
    .LIN MARK/ID
    
    .RU MARK !SPLIT I/D SPACE PROGRAM
    
    
    
    ?MON-F-Trap to 4 001010
    
    .
    Последний раз редактировалось form; 29.10.2014 в 08:16.
    PDP-11/83, Электроника МС0511 (УК-НЦ), DECserver 90M
    Q-Bus: H9278-A, DLV11-J, DZQ11, DHV11, DELQA-M, LPV11, CQD-420/TM, DRV11
    PMI: KDJ11-BF, MSV11-JE
    VT220, CM7209

  4. #983
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    10,352
    Благодарностей: 3605
    Mentioned
    5 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от form Посмотреть сообщение
    Для тестирования необязательно загонять в стек.
    В моем тесте это неприемлемо, ибо тестируются все комбинации N от 0 до 63. Надеюсь, всегда можно рассчитывать, что стек у нас имеет размер не менее 128 байт?

  5. #984
    Guru Аватар для form
    Регистрация
    27.05.2009
    Адрес
    СССР, Новосибирск
    Сообщений
    5,222
    Благодарностей: 1975
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    В моем тесте это неприемлемо, ибо тестируются все комбинации N от 0 до 63. Надеюсь, всегда можно рассчитывать, что стек у нас имеет размер не менее 128 байт?
    Очень даже приемлимо. Никто не мешает создать буфер "под стек" как в примере и помещать в нужное место команду BR перед тестированием, а то и заполнить его весь командами с таким расчетом чтобы проверять точность перехода

    По умолчанию в RT-11 стек устанавливается на 1000 и до 500 (чуть больше чем 500 на самом деле - 476 уже область векторов в RT-11) его безопасно можно понижать.
    PDP-11/83, Электроника МС0511 (УК-НЦ), DECserver 90M
    Q-Bus: H9278-A, DLV11-J, DZQ11, DHV11, DELQA-M, LPV11, CQD-420/TM, DRV11
    PMI: KDJ11-BF, MSV11-JE
    VT220, CM7209

  6. #985
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    10,352
    Благодарностей: 3605
    Mentioned
    5 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от form Посмотреть сообщение
    Очень даже приемлимо. Никто не мешает создать буфер "под стек" как в примере и помещать в нужное место команду BR перед тестированием, а то и заполнить его весь командами с таким расчетом чтобы проверять точность перехода

    По умолчанию в RT-11 стек устанавливается на 1000 и до 500 его безопасно можно понижать.
    Отлично, 192 байта - это то, что надо)

    Можно сделать буфер, но это более громоздко. Зачем ехать в Киев через Магадан, если так компактнее)

  7. #986
    Guru Аватар для form
    Регистрация
    27.05.2009
    Адрес
    СССР, Новосибирск
    Сообщений
    5,222
    Благодарностей: 1975
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Отлично, 192 байта - это то, что надо)

    Можно сделать буфер, но это более громоздко. Зачем ехать в Киев через Магадан, если так компактнее)
    Да ничем не компактнее - можно буфер поместить в конце программы и тогда он заранее будет в наличии - только команды вставить в нужное место и код будет на порядок компактнее

    Или еще проще - запользовать как буфер ту же область 500-1000
    PDP-11/83, Электроника МС0511 (УК-НЦ), DECserver 90M
    Q-Bus: H9278-A, DLV11-J, DZQ11, DHV11, DELQA-M, LPV11, CQD-420/TM, DRV11
    PMI: KDJ11-BF, MSV11-JE
    VT220, CM7209

  8. #987
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    10,352
    Благодарностей: 3605
    Mentioned
    5 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

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

  9. #988
    Guru Аватар для form
    Регистрация
    27.05.2009
    Адрес
    СССР, Новосибирск
    Сообщений
    5,222
    Благодарностей: 1975
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Кстати, судя по вашему примеру, системе при выходе из программы все равно, что вы установили стек в другое место и не вернули его?
    Абсолютно все-равно. Главное чтобы хватило стека под выполнение команды EMT (.EXIT). Ну и в RT-11SJ/FB/SB на DCJ11 процессорах важно чтобы стек не падал ниже 400 в момент EMT - иначе будет yellow stack trap по 4.
    PDP-11/83, Электроника МС0511 (УК-НЦ), DECserver 90M
    Q-Bus: H9278-A, DLV11-J, DZQ11, DHV11, DELQA-M, LPV11, CQD-420/TM, DRV11
    PMI: KDJ11-BF, MSV11-JE
    VT220, CM7209

  10. #989
    Guru
    Регистрация
    08.10.2005
    Адрес
    Москва
    Сообщений
    10,352
    Благодарностей: 3605
    Mentioned
    5 Post(s)
    Tagged
    1 Thread(s)

    По умолчанию

    Цитата Сообщение от form Посмотреть сообщение
    Да ничем не компактнее - можно буфер поместить в конце программы и тогда он заранее будет в наличии - только команды вставить в нужное место и код будет на порядок компактнее
    Ничего не будет. Зачем мне в конце программы балласт в виде лишнего буфера? В конце концов тест может вырасти до таких размеров, что не будет умещаться в память (как уже было с тестом скорости). Так что буферами лишними я разбрасываться не хочу.
    А ставить буфер на место стека - это фактически то, что я сейчас и делаю, но извращеннее)

  11. #990
    Guru Аватар для form
    Регистрация
    27.05.2009
    Адрес
    СССР, Новосибирск
    Сообщений
    5,222
    Благодарностей: 1975
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Titus Посмотреть сообщение
    Ничего не будет. Зачем мне в конце программы балласт в виде лишнего буфера? В конце концов тест может вырасти до таких размеров, что не будет умещаться в память (как уже было с тестом скорости). Так что буферами лишними я разбрасываться не хочу.
    А ставить буфер на место стека - это фактически то, что я сейчас и делаю, но извращеннее)
    Я предложил другой вариант - использовать существующий стек под буфер - это все-равно будет по количеству команд короче чем пример с загонкой в стек
    При том можно тест выполнять так, чтобы после выполнения MARK стек оставался на том же месте всегда...

    А что касается размера теста - в крайнем случае его можно порезать на оверлеи - зачем все тесты одновременно в пямяти хранить?

    ---------- Post added at 11:43 ---------- Previous post was at 11:40 ----------

    Иными словами - тест MARK без вызова подпрограммы

    ---------- Post added at 13:04 ---------- Previous post was at 11:43 ----------

    Кстати все спросить забываю... Не придумалось ли надежных способов точно идентифицировать ВМ1 и ВМ2 процессор? С ВМ3 все просто...
    PDP-11/83, Электроника МС0511 (УК-НЦ), DECserver 90M
    Q-Bus: H9278-A, DLV11-J, DZQ11, DHV11, DELQA-M, LPV11, CQD-420/TM, DRV11
    PMI: KDJ11-BF, MSV11-JE
    VT220, CM7209

Страница 99 из 225 ПерваяПервая ... 9596979899100101102103 ... ПоследняяПоследняя

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

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

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

Похожие темы

  1. Тесты ВМ1
    от nzeemin в разделе БК-0010/0011
    Ответов: 90
    Последнее: 05.10.2018, 11:24
  2. Диагностика
    от dk_spb в разделе Корвет
    Ответов: 31
    Последнее: 21.07.2017, 22:52
  3. Проблема двух процессоров.
    от Mikka_A в разделе Unsorted
    Ответов: 21
    Последнее: 28.11.2006, 17:04

Ваши права

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