Symulator licznika rozkazów

Ślad PC

Używaj etykiet takich jak loop:, instrukcji sekwencyjnych takich jak LOAD lub ADD, rozgałęzień takich jak BR label lub BR +8, a także JMP, CALL, RET i HALT.

Ten symulator edukacyjny przypisuje adres każdemu niepustemu wierszowi instrukcji i śledzi uproszczony licznik rozkazów (PC). Nie liczy wierszy kodu, instrukcji źródłowych ani tokenów oraz nie kompiluje ani nie wykonuje języka programowania.

Jak śledzić listing

  1. 1

    Wpisz krótki listing

    Użyj jednej instrukcji o stałej długości w wierszu i opcjonalnych etykiet ASCII, np. loop:.

  2. 2

    Wybierz model adresów

    Ustaw adres początkowy, rozmiar 1, 2, 4 lub 8 bajtów, szerokość 16/24/32 bity i format.

  3. 3

    Ustaw śledzenie

    Traktuj globalnie wszystkie rozpoznane rozgałęzienia jako wykonane lub niewykonane, wybierz 1–80 kroków i sprawdź przejścia.

Obsługiwany model

Element Zachowanie
Inny opcode, np. LOAD lub ADD Przejdź o wybrany stały rozmiar instrukcji
BR, BRA, BRANCH, BEQ, BNE, BGT, BGE, BLT, BLE, BZ, BNZ, JZ, JNZ Zastosuj globalny wybór wykonane/niewykonane
JMP, JUMP, GOTO Skocz do etykiety lub adresu liczbowego
CALL, JSR, BL / RET, RETURN Odłóż / pobierz symulowany adres powrotu
HALT, HLT, STOP Zatrzymaj się na bieżącym PC

Celem może być etykieta ASCII, adres dziesiętny albo szesnastkowy z 0x. Wartość ze znakiem, np. +8, jest względna wobec następnego sekwencyjnego PC; liczba bez znaku jest bezwzględna. Adresy zawijają się do wybranej szerokości. // i ; rozpoczynają komentarz. Operandy są tylko wyświetlane.

Ograniczenia i prywatność

  • Dane są skracane do 1800 znaków, a analiza kończy się po 200 instrukcjach.
  • Ślad ma 1–80 kroków; wszystkie rozgałęzienia warunkowe współdzielą jeden wybór globalny.
  • Nie są emulowane rejestry, pamięć, flagi, potoki, delay sloty, kodowanie ani zmienne długości instrukcji.
  • Tryb standardowy wysyła listing do tej witryny przez Livewire, a tryb krokowy umieszcza go także w URL. Nie wklejaj poufnego kodu.

Najczęściej zadawane pytania

Nie. Adresuje wiersze instrukcji i śledzi PC; nie liczy wierszy źródłowych, instrukcji ani tokenów.

Nie. Rozpoznaje niewielki ogólny zestaw opcode’ów sterujących. Inne tylko przesuwają PC, a operandy nie są wykonywane.

Przesunięcie jest dodawane do następnego sekwencyjnego PC. Dla 0x1000 i instrukcji 4-bajtowych celem jest 0x100C.

Trafia do tej witryny w celu renderowania Livewire, a w trybie krokowym również do URL. Nie korzysta z zewnętrznego API analizy, ale unikaj poufnego kodu.

Powiązane narzędzia