|
Znacznik: Usunięcie całej zawartości strony |
| (Nie pokazano 35 pośrednich wersji utworzonych przez tego samego użytkownika) |
| Linia 1: |
Linia 1: |
| 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 =
| |
|
| |
| * '''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 pozalają 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: '''.''' 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:
| |
| ** '''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''
| |