Не Байда, а Трамп-пам-па))) Шутка)
Вид для печати
Не обижайся, просто я это давно уже пережевал, по второму разу жевать - не очень интересно этим заниматься. Так что - с моей стороны это подвиг - цени :)
Давно бы уже самлопатуModelsim освоил, там на гитхабе у меня простая инструкция, на пять строчек, как проект запустить.
Update: M4 выложил, поужинаю и сделаю диаграммы.
Ну... Проекты приходят и уходят, а навык владения лопатой - остается.
Тестовый код:
ДиаграммыКод:47 040000 memlim = 40000 ; лимит тестовой памяти
353 ;_____________________________________________________________________________
354 ;
355 ; Дополнительные тесты исполнения, вызывающие ошибку шины на предвыборке
356 ;
357 001404 012705 037774 tst6: mov #memlim-4, R5 ;
358 001410 013725 001546 mov @#cmd15, (R5)+ ;
359 ;
360 001414 012737 001432 000004 mov #1$, @#trap4 ;
361 001422 013715 001532 mov @#cmd10, (R5) ;
362 001426 000165 177776 jmp -2(R5) ;
363 ;
364 001432 012737 001450 000004 1$: mov #2$, @#trap4 ;
365 001440 013715 001534 mov @#cmd11, (R5) ;
366 001444 000165 177776 jmp -2(R5) ;
367 ;
368 001450 012737 001472 000004 2$: mov #3$, @#trap4 ;
369 001456 013715 001540 mov @#cmd12, (R5) ;
370 001462 012701 040004 mov #memlim+4, R1 ;
371 001466 000165 177776 jmp -2(R5) ;
372 ;
373 001472 012700 001512 3$: mov #4$, R0 ;
374 001476 010037 000004 mov R0, @#trap4 ;
375 001502 013715 001542 mov @#cmd13, (R5) ;
376 001506 000165 177776 jmp -2(R5) ;
377 ;
378 001512 012737 001530 000004 4$: mov #5$, @#trap4 ;
379 001520 013715 001544 mov @#cmd14, (R5) ;
380 001524 000165 177776 jmp -2(R5) ;
381 ;
382 001530 000000 5$: halt ;
383 ;
384 001532 010100 cmd10: mov R1, R0 ;
385 001534 012700 001234 cmd11: mov #1234, R0 ;
386 001540 011100 cmd12: mov @R1, R0 ;
387 001542 010007 cmd13: mov R0, PC ;
388 001544 000776 cmd14: br .-2 ;
389 001546 000240 cmd15: nop ;
390 ;
Решил попробовать адресацию -(PC) (код 47). Интересный результат получился.
Бесконечный цикл не получился. Выполнилось по два раза INC R0 и INC R1, останов случился на адресе 01030, а не 01026.
- - - Добавлено - - -
Довольно интересные результаты дают команды снятия/установки признаков, некоторые команды могут и не исполнится.
Вроде бы у PDP-11 специально и употребляется восьмеричная система счисления, чтобы всё было ясно без слов. Ну так уж и быть:
1.2.Код:1000 CLR R0
1002 CLR R1
1004 CLR R2
1006 CLR R3
1010 MOV R5,R5
1012 MOV -(PC),R5
1014 INC R0
1016 INC R1
1020 INC R2
1022 INC R3
1024 HALT
Код:1000 CLR R0
1002 CLR R1
1004 CLR R2
1006 CLR R3
1010 MOV R5,R5
1012 MOV -(PC),R5
1014 NOP
1016 INC R0
1020 NOP
1022 INC R2
1024 INC R3
1026 HALT