Debugger EM400: Różnice pomiędzy wersjami

Przejdź do nawigacji Przejdź do wyszukiwania
 
(Nie pokazano 10 pośrednich wersji utworzonych przez tego samego użytkownika)
Linia 8: Linia 8:


* '''quit''' - Zakończ pracę emulatora
* '''quit''' - Zakończ pracę emulatora
* '''step [''n'']''' - Wykonaj instrukcję wskazaną przez licznik rozkazów. Jeśli opcjonalny parametr ''n'' jest obecny, wykonaj ''n'' kolejnych instrukcji.
* '''cycle''' - Wykonaj instrukcję wskazaną przez licznik rozkazów.
* '''run''' - Kontynuuj emulację aż do napotkania kolejnej pułapki
* '''start''' - Kontynuuj emulację aż do napotkania kolejnej pułapki
* '''load <plik> [''n'']''' - Załaduj zawartość pliku do bloku pamięci ''n''.
* '''load <plik>''' - Załaduj zawartość pliku do bloku pamięci numer 0.
* '''help [''cmd'']''' - Wyświetl pomoc. Jeśli opcjonalny parametr ''cmd'' jest obecny, wyświetl pomoc na temat komendy ''cmd''.
* '''help [''cmd'']''' - Wyświetl pomoc. Jeśli opcjonalny parametr ''cmd'' jest obecny, wyświetl pomoc na temat komendy ''cmd''.
* '''regs''' - Wyświetl zawartość rejestrów R1-R7
* '''regs''' - Wyświetl zawartość rejestrów R1-R7
* '''sregs''' - Wyświetl zawartość rejestrów R0, IR, IC, SR
* '''sregs''' - Wyświetl zawartość rejestrów R0, IR, IC, SR
* '''reset''' - Zresetuj emulowaną maszynę. Wpisuje ''0'' do wszystkich rejestrów i wskaźników.
* '''clear''' - Zresetuj emulowaną maszynę. Wpisuje ''0'' do wszystkich rejestrów i wskaźników.
* '''dasm [[''addr''] ''n'']''' - Wyświetl deasemblację zawartości pamięci. Jeśli żaden parametr nie został podany, deasemblowana jest instrukcja wskazana przez licznik rozkazów. Jeśli podany jest opcjonalny parametr ''n'' deasemblowanych jest ''n'' kolejnych instrukcji. Jeśli podano również parametr ''addr'', deasemblacja rozpoczynana jest od adresu ''addr''
* '''dasm [[''addr''] ''n'']''' - Wyświetl deasemblację zawartości pamięci. Jeśli żaden parametr nie został podany, deasemblowana jest instrukcja wskazana przez licznik rozkazów. Jeśli podany jest opcjonalny parametr ''n'' deasemblowanych jest ''n'' kolejnych instrukcji. Jeśli podano również parametr ''addr'', deasemblacja rozpoczynana jest od adresu ''addr''
* '''trans [[''addr''] ''n'']''' - Jak wyżej, ale zamiast kodu assemblera wyświetlany jest pseudokod.
* '''mem [''blok'':] ''<start>'' ''[ilość]''''' - Wyświetl ''ilość'' słów pamięci od adresu ''start''. Jeśli nie podano bloku pamięci ''blok'' wyświetlana jest zawartość bloku wskazanego przez ''Q'' i ''NB''. Jeśli nie podano ''długości'', przyjmowana jest wartość 16.
* '''mem [''block'']: ''<start>''-''<end>''''' - Wyświetl zawartość pamięci od adresu ''start'' do adresu ''end''. Jeśli nie podano bloku pamięci ''block'' wyświetlana jest zawartość bloku wskazanego przez ''Q'' i ''NB''
* '''memcl''' - Wyczyść zawartość całej pamięci
* '''memcfg''' - Pokaż sprzętową i programową konfigurację pamięci
* '''memcfg''' - Pokaż sprzętową i programową konfigurację pamięci
* '''memdump <blok> <plik>''' - zrzuć do pliku zawartość bloku pamięci
* '''stk''' - Pokaż stos
* '''stk''' - Pokaż stos
* '''watch''' - Śledzenie wartości wyrażeń
* '''watch''' - Śledzenie wartości wyrażeń
Linia 32: Linia 31:
** '''brk add <wyrażenie>''' - dodanie nowej pułapki, która jest aktywowana, gdy ''wyrażenie'' jest spełnione (różne od zera)
** '''brk add <wyrażenie>''' - dodanie nowej pułapki, która jest aktywowana, gdy ''wyrażenie'' jest spełnione (różne od zera)
** '''brk del <numer>''' - usunięcie pułapki o danym numerze
** '''brk del <numer>''' - usunięcie pułapki o danym numerze
** '''brk test <numer>''' - testowanie warunku pułapki
** '''brk off <numer>''' - tymczasowe wyłączenie pułapki
** '''brk off <numer>''' - tymczasowe wyłączenie pułapki
** '''brk on <numer>''' - ponowne włączenie pułapki
** '''brk on <numer>''' - ponowne włączenie pułapki
** '''brk off''' - tymczasowe wyłączenie wszystkich pułapek
** '''brk on''' - ponowne włączenie wszystkich pułapek
* '''log''' - logowanie operacji emulatora do pliku
* '''log''' - logowanie operacji emulatora do pliku
** '''log''' - wyświetlenie bieżących ustawień logowania
** '''log''' - wyświetlenie bieżących ustawień logowania
** '''log on''' - włączenie logowania
** '''log on''' - włączenie logowania
** '''log off''' - wyłączenie logowania
** '''log off''' - wyłączenie logowania
** '''log file <plik>''' - podanie zbioru, do którego zapisywany będzie log
** '''log <komponent>''' - włączenie logowania dla danego komponentu. Dostępne komponenty to:
** '''log <domena>:<poziom>''' - ustawienie poziomu logowania dla danej domeny. Im większy poziom logowania, tym więcej szczegółów jest logowanych. W praktyce wykorzystywane są poziomy 1-100. Dostępne domeny to:
*** reg - operacje na rejestrach
*** reg - operacje na rejestrach
*** mem - operacje na pamięci
*** mem - operacje na pamięci
*** cpu - operacje wykonywane przez CPU
*** cpu - operacje wykonywane przez CPU
*** op - szczegóły wykonania rozkazu
*** int - operacje związane z przerwaniami
*** int - operacje związane z przerwaniami
*** io - operacje wejścia/wyjścia
*** io - operacje wejścia/wyjścia
*** misc - inne
*** mx - [[MULTIX]]
*** px - [[PLIX]]
*** cchr - kanał znakowy
*** cmem - kanał pamięciowy
*** term - terminale
*** wnch - winchestery
*** 9425 - dyski MERA-9425
*** flop - stacje dyskietek
*** pnch - dzirkarka taśmy
*** pnrd - czytnik taśmy dziurkowanej
*** crk5 - system operacyjny [[CROOK|CROOK-5]]
*** em4h - emulator
*** all - wszystkie
*** all - wszystkie
* '''clock''' - kontrola zegara czasu rzeczywistego
** '''clock on''' - włączenie timera
** '''clock off''' - wyłączenie timera
* '''find <blok> <wartość>''' - wyszukiwanie wartości w bloku pamięci
* '''binload <adres>''' - inicjalizacja ładowania binarnego pod zadany adres


= Wyrażenia =
= Wyrażenia =
Linia 80: Linia 96:
** '''[0x7a][2-9]''' - bity od 2 do 9 słowa znajdującego się w bieżącym bloku pamięci pod adresem 0x7a
** '''[0x7a][2-9]''' - bity od 2 do 9 słowa znajdującego się w bieżącym bloku pamięci pod adresem 0x7a
** '''zmienna[15]''' - najmłodszy bit zmiennej ''zmienna''
** '''zmienna[15]''' - najmłodszy bit zmiennej ''zmienna''
* podróży w czasie - pozwalające na dostęp do zawartości rejestru lub komórki pamięci z poprzedniego cyklu rozkazowego:
** '''.''' - wartość z poprzedniego cyklu rozkazowego, np.: '''r1.''', '''[15].'''
** '''?>''' - 1 jeśli wartość zmieniła się w ostatnim cyklu rozkazowym, 0 jeśli nie, np.: '''?>r4''', '''?>[0x1452]'''
** '''?<''' - 1 jeśli wartość była odczytywana w ostatnim cyklu rozkazowym, 0 jeśli nie, np.: '''?<r5'''
** '''?''' - 1 jeśli wartość była odczytywana lub zapisywana w ostatnim cyklu rozkazowym, 0 jeśli nie, np.: '''?[060]'''


Debugger pozwala na obliczenie wartości wielu wyrażeń w jednej linii polecenia i wyświetlenie wyników również w jednej linii odpowiedzi. Można to zrobić podając kolejne wyrażenia oddzielone przecinkami, np:
Debugger pozwala na obliczenie wartości wielu wyrażeń w jednej linii polecenia i wyświetlenie wyników również w jednej linii odpowiedzi. Można to zrobić podając kolejne wyrażenia oddzielone przecinkami, np:
  em400> 1+2, oct(12+[9]), dec(r1-1), a=12, [a], [a]=1, [a]
  em400> 1+2, oct(12+[9]), dec(r1-1), a=12, [a], [a]=1, [a]
  0x3 033 -1 0xc 0x0 0x1 0x1
  0x3 033 -1 0xc 0x0 0x1 0x1

Menu nawigacyjne