Instrukcja HLT

Z MERA 400 wiki
Wersja z dnia 15:14, 11 maj 2014 autorstwa Amo (dyskusja | edycje) (Utworzono nową stronę "Instrukcja HLT oznacza dla procesora "zatrzymaj wykonywanie kolejnych instrukcji aż do nadejścia następnego niezamaskowanego przerwania". HLT to miejsce, w którym ka...")
(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)
Przejdź do nawigacji Przejdź do wyszukiwania

Instrukcja HLT oznacza dla procesora "zatrzymaj wykonywanie kolejnych instrukcji aż do nadejścia następnego niezamaskowanego przerwania". HLT to miejsce, w którym każdy przyzwoity system operacyjny spędza czas, jeśli nie ma żadnych rzeczy do zrobienia.

Na system przerwań MERY-400 składają się trzy rejestry:

  • rejestru zgłoszeń RZ
  • rejestru masek RM
  • rejestru przyjęć RP

Zawartość rejestru RP odpowiada zawartości rejestru RZ po nałożeniu masek z rejestru RM. Instrukcja HLT reaguje tylko na przerwania przyjęte, pojawiające się w rejestrze RP. W warunkach normalnej pracy HLT może być użyte do oczekiwania aż użytkownik wciśnie klawisz na terminalu, dysk zgłosi koniec transmisji danych, czy timer systemowy "tyknie", budząc planistę systemu operacyjnego. Jeśli natomiast procesor zawiesił swoje działanie po napotkaniu instrukcji HLT, a wszystkie przerwania są zamaskowane, to komputer stanął "na dobre". Takie zachowanie wykorzystywane może być do zatrzymania pracy systemu z powodu awarii (sprzętu lub oprogramowania).

W tym ostatnim przypadku istnieje też prosty sposób na przekazanie użytkownikowi informacji o przyczynie zatrzymiania systemu. Mimo, że formalnie instrukcja HLT jest bezargumentowa, to assemblery ASSK, ASSM i EMAS pozwalają na wywołanie jej z argumentem. Jest to możliwe, ponieważ 7 bitów tego rozkazu (pola D, B i C) nie jest w ogóle branych pod uwagę podczas jego dekodowania. I to właśnie na nich można zapisać dodatkową informację.

Użytkownik komputera, widząc, że system się zatrzymał (zapalony wskaźnik WAIT na pulpicie technicznym), może sprawdzić zawartość rejestru rozkazu i porównać zapisaną tam na nieużywanych polach rozkazu HLT wartość ze "spisem stopów" dostarczanym przez producenta oprogramowania. Przykładem takiego spisu może być Spis stopów systemowych CROOK-5.

Istnieje jeszcze jedno zastosowanie instrukcji HLT, zupełnie nie związane z tym, jak działa ona na prawdziwej MERZE-400. Emulator EM400 skompilowany z debuggerem używa instrukcji HLT z argumentem większym bądź równym 32 jako sygnału do zakończenia swojej pracy. W ten sposób programy będące elementami testów automatycznych emulacji informują emulator o końcu danego testu.