Kod operacji
Kod maszynowy |
---|
Pojęcia ogólne |
Instrukcje |
W informatyce kod operacji (w skrócie kod operacji , znany również jako kod maszynowy instrukcji , kod instrukcji , sylaba instrukcji , pakiet instrukcji lub opstring ) to część instrukcji języka maszynowego , która określa operację do wykonania. Oprócz samego kodu operacyjnego większość instrukcji określa również dane, które będą przetwarzać, w postaci operandów . Oprócz kodów operacyjnych używanych w architektury zestawów instrukcji różnych procesorów , które są urządzeniami sprzętowymi, mogą być również używane w abstrakcyjnych maszynach obliczeniowych jako część ich specyfikacji kodu bajtowego .
Przegląd
Specyfikacje i format kodów operacyjnych są określone w architekturze zestawu instrukcji ( ISA ) danego procesora, którym może być ogólny procesor lub bardziej wyspecjalizowana jednostka przetwarzająca. Kody operacji dla danego zestawu instrukcji można opisać za pomocą tabeli kodów operacji zawierającej szczegółowe informacje o wszystkich możliwych kodach operacji. Oprócz samego kodu operacji, instrukcja zwykle ma również jeden lub więcej specyfikatorów operandów ( tj. danych), na których operacja powinna działać, chociaż niektóre operacje mogą mieć ukryte operandy lub wcale. Istnieją zestawy instrukcji z prawie jednolitymi polami dla specyfikatorów kodu operacyjnego i operandu, a także inne ( na przykład architektura x86 ) o bardziej skomplikowanej strukturze o zmiennej długości. Zestawy instrukcji można rozszerzyć za pomocą przedrostków opcode, które dodają podzbiór nowych instrukcji składających się z istniejących opcodów następujących po zarezerwowanych sekwencjach bajtów. [ potrzebne źródło ]
Operandy
W zależności od architektury, operandy mogą być wartościami rejestrów , wartościami na stosie , innymi wartościami pamięci , portami I/O (które mogą być również mapowane w pamięci ) itp., określonymi i dostępnymi przy użyciu mniej lub bardziej złożonych trybów adresowania . [ potrzebne źródło ] Typy operacji obejmują operacje arytmetyczne , kopiowanie danych, operacje logiczne i kontrolę programu, a także instrukcje specjalne (takie jak CPUID i inni).
Język asemblera lub po prostu asembler to język programowania niskiego poziomu , który używa instrukcji mnemonicznych i operandów do reprezentowania kodu maszynowego . Zwiększa to czytelność, a jednocześnie zapewnia precyzyjną kontrolę nad instrukcjami maszyny. Większość programów jest obecnie wykonywana przy użyciu języków programowania wysokiego poziomu , które są zazwyczaj łatwiejsze do zrozumienia i pisania dla ludzi. Te języki muszą być skompilowane (przetłumaczone na język asemblera) przez kompilator specyficzny dla systemu lub uruchomione przez inne skompilowane programy.
Zestawy instrukcji oprogramowania
Kody operacyjne można również znaleźć w tak zwanych kodach bajtowych i innych reprezentacjach przeznaczonych dla interpretera oprogramowania, a nie urządzenia sprzętowego. Te zestawy instrukcji oparte na oprogramowaniu często wykorzystują typy danych i operacje nieco wyższego poziomu niż większość odpowiedników sprzętowych, niemniej jednak są zbudowane według podobnych zasad. Przykłady obejmują kod bajtowy znaleziony w plikach klas Java , które są następnie interpretowane przez wirtualną maszynę Java (JVM), kod bajtowy używany w GNU Emacs dla skompilowanego kodu Lisp , .NET Common Intermediate Language (CIL) i wielu innych.
Zobacz też
Dalsza lektura
- Hyde, Randall (2004). Napisz świetny kod: myślenie na niskim poziomie, pisanie na wysokim poziomie . Zrozumienie maszyny . Tom. 1. San Francisco, Kalifornia, USA: Prasa bez skrobi . P. passim. ISBN 1-59327003-8 . Źródło 2015-10-10 .