EM400 - graficzny interfejs użytkownika: Różnice pomiędzy wersjami

Z MERA 400 wiki
Przejdź do nawigacji Przejdź do wyszukiwania
(UWAGA! Usunięcie treści (strona pozostała pusta)!)
Znacznik: Usunięcie całej zawartości strony
 
(Nie pokazano 23 pośrednich wersji utworzonych przez tego samego użytkownika)
Linia 1: Linia 1:
Debugger emulatora EM400 pozwala śledzić i kontrolować stan emulowanej maszyny.


W linii poleceń debuggera można używać następujących konstrukcji:
= Polecenia =
Polecenia służą do sterowania pracą emulatora i debuggera oraz wyświetlania informacji o stanie emulowanej maszyny.
* '''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.
* '''run''' - Kontynuuj emulację
* '''load <plik> [''n'']''' - Załaduj zawartość pliku do bloku pamięci ''n''.
* '''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
* '''sregs''' - Wyświetl zawartość rejestrów R0, IR, IC, SR
* '''reset''' - 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''
* '''trans [[''addr''] ''n'']''' - Jak wyżej, ale zamiast kodu assemblera wyświetlany jest pseudokod.
* '''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''
* '''clmem''' - Wyczyść zawartość całej pamięci
* '''memcfg''' - Pokaż sprzętową i programową konfigurację pamięci
* '''stack''' - Pokaż stos
* '''brk''' - Operowanie pułapkami (breakpointami):
** '''brk''' - wyświetlenie ustawionych pułapek
** '''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 test <numer>''' - testowanie warunku pułapki
** '''brk disable <numer>''' - tymczasowe wyłączenie pułapki
** '''brk enable <numer>''' - ponowne włączenie pułapki
* '''log''' - logowanie operacji emulatora do pliku
** '''log''' - wyświetlenie bieżących ustawień logowania
** '''log on''' - włączenie logowania
** '''log off''' - wyłączenie logowania
** '''log file <plik>''' - podanie zbioru, do którego zapisywany będzie log
** '''log level <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
*** mem - operacje na pamięci
*** cpu - operacje wykonywane przez CPU
*** int - operacje związane z przerwaniami
*** io - operacje wejścia/wyjścia
*** misc - inne
= Konwersje podstawy liczb =
Domyślnie, liczby w linii poleceń debuggera wyświetlane są jako liczby dziesiętne ze znakiem (dane traktowane są jak liczby w kodzie U2). Możliwa jest konwersja do innego zapisu:
* '''uint('''''wyrażenie''''')''' - wartość wyrażenia zostanie potraktowana jako 16-bitowa liczba bez znaku i wyświetlona w systemie dziesiętnym
* '''hex('''''wyrażenie''''')''' - wartość wyrażenia zostanie wyświetlona w systemie szesnastkowym
* '''oct('''''wyrażenie''''')''' - wartość wyrażenia zostanie wyświetlona w systemie ósemkowym
* '''bin('''''wyrażenie''''')''' - wartość wyrażenia zostanie wyświetlona w systemie dwójkowym
= Wyrażenia =
Wyrażenia pozwalają w linii poleceń debuggera przeprowadzać obliczenia oraz manipulować zawartością rejestrów, pamięci i zmiennych. Elementem każdego wyrażenia mogą być:
* Liczba w systemie dziesiętnym, ósemkowym, szesnastkowym lub binarnym (np.: '''15''', '''0177''', '''0xffa8''', '''0b1011100111011110''')
* Rejestry: '''R0'''-'''R7''', '''IC''', '''IR''', '''SR''', '''KB''' oraz pseudo-rejestr '''MOD''' zawierający bieżącą wartość modyfikatora
* Zawartość komórki pamięci, adresowane jako '''[''adres'']''' lub '''[''blok:adres'']'''
* Zmienne: debugger pozwala na użycie dowolnej zmiennej, której nazwa nie jest słowem kluczowym (poleceniem), np: '''a''', '''adres''', '''zmienna3'''.
W wyrażeniach dozwolone są następujące operatory:
* arytmetyczne: '''+, -, *'''
* logiczne: '''&&, ||, !'''
* bitowe: '''&, |, ^, ~'''
* przesunięć bitowych: '''<<, >>'''
* porównań: '''==, !=, <=, >=, >, <'''
* przypisania: '''=''' (lewa strona wyrażenia musi być rejestrem, zmienną lub komórką pamięci)
* wyłuskiwania bitów: '''[b]''' i '''[b-e]'''. Wyłuskiwanie bitów pozwala na "wycięcie" z 16-bitowego słowa dowolnego ciągu bitów i użycie go jako nowej wartości, np:
** '''1[0]''' - najstarszy bit liczby 1 (ponieważ operacja wykonywana jest na 16-bitowej liczbie, wynikiem będzie 0)
** '''r1[3]''' - trzeci bit rejestru r1
** '''[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''

Aktualna wersja na dzień 12:33, 30 sie 2026