Symulator licznika rozkazów
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
Wpisz krótki listing
Użyj jednej instrukcji o stałej długości w wierszu i opcjonalnych etykiet ASCII, np. loop:.
-
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
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
Konwerter Base64 na Hex
Konwertuj ciąg Base64 na jego bazowe bajty zapisane szesnastkowo. Przydatne do inspekcji tokenów, kluczy, certyfikatów i JWT.
Konwerter ASCII na binarny
Konwertuj dowolny ciąg ASCII na reprezentację binarną. Każdy znak staje się ośmioma bitami, rozdzielonymi spacjami, gotowymi do wklejenia w ślad protokołu albo zadanie domowe.
Konwerter ASCII na hex
Konwertuj tekst ASCII na szesnastkowe wartości bajtów. Wynik używa dwóch cyfr hex na znak, gotowych do dumpów pamięci, śladów pakietów albo tabel firmware.
Konwerter binarny na hex
Konwertuj wejście binarne na zwykłą wartość szesnastkową wielkimi literami. Znaki inne niż 0 i 1 są ignorowane, a zera wiodące nie są zachowywane.
Generator losowych palet kolorów
Twórz losowe palety od 2 do 15 próbek, wybierz styl żywy, pastelowy, stonowany lub ciemny, a następnie skopiuj kody HEX albo zmienne CSS.
Konwerter binarnego na ósemkowy
Konwertuj binarny na ósemkowy, grupując bity po trzy. Przydatne przy uprawnieniach Unix, starszych systemach i kompaktowym zapisie liczb.