Debugger EM400: Różnice pomiędzy wersjami
Przejdź do nawigacji
Przejdź do wyszukiwania
Nie podano opisu zmian |
|||
Linia 45: | Linia 45: | ||
* porównań: '''==, !=, <=, >=, >, <''' | * porównań: '''==, !=, <=, >=, >, <''' | ||
* przypisania: '''=''' (lewa strona wyrażenia musi być rejestrem, zmienną lub komórką pamięci) | * przypisania: '''=''' (lewa strona wyrażenia musi być rejestrem, zmienną lub komórką pamięci) | ||
* wyłuskiwania bitów: ''' | * 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 | ** '''1[0]''' - najstarszy bit liczby 1 (ponieważ operacja wykonywana jest na 16-bitowej liczbie, wynikiem będzie 0) | ||
** '''r1 | ** '''r1[3]''' - trzeci bit rejestru r1 | ||
** '''[0x7a] | ** '''[0x7a][2-9]''' - bity od 2 do 9 słowa znajdującego się w bieżącym bloku pamięci pod adresem 0x7a | ||
** '''zmienna | ** '''zmienna[15]''' - najmłodszy bit zmiennej ''zmienna'' |
Wersja z 17:57, 1 lis 2012
Debuger emulatora EM400 pozwala śledzić i kontrolować stan emulowanej maszyny.
W linii poleceń debugera można używać następujących konstrukcji:
Polecenia
Polecenia służą do sterowania pracą emulatora i debugera 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.
- help [cmd] - Wyświetl pomoc. Jeśli opcjonalny parametr cmd jest obecny, wyświetl pomoc na temad 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
Konwersje podstawy liczb
Domyślnie, liczby w linii poleceń debugera 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ń debugera 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: debuger 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