Kluczowa różnica: Opcode jest rodzajem instrukcji języka maszynowego. Dostarcza komputerowi instrukcji wskazujących, co zrobić z dostarczonymi danymi. Kod bajtowy jest podobny do kodu operacyjnego, ponieważ informuje również maszynę, co ma robić. Jednak kod bajtowy nie jest przeznaczony do bezpośredniego przetwarzania przez procesor, lecz przez interpreter programowy, taki jak Java lub CLR.
W zależności od używanej architektury operandy mogą być wartościami rejestrów, wartościami w stosie, innymi wartościami pamięci, portami I / O itd., Określonymi i dostępnymi przy użyciu mniej lub bardziej złożonych trybów adresowania. Operacje mogą być operacjami arytmetycznymi, takimi jak dodawanie lub odejmowanie, kopiowanie danych, operacje logiczne i sterowanie programem, a także specjalne instrukcje, takie jak CPUID lub inne.
Kod bajtowy jest podobny do kodu operacyjnego, ponieważ informuje również maszynę, co ma robić. Jednak kod bajtowy nie jest przeznaczony do wykonywania bezpośrednio przez procesor, lecz przez inny program. Jest on najczęściej używany przez interpreter programowy, taki jak Java lub CLR. Przekształcają one każdą uogólnioną instrukcję maszyny w instrukcję lub instrukcje maszyny, tak aby procesor komputera zrozumiał. W rzeczywistości kod bajtowy nazwy pochodzi z zestawów instrukcji, które mają jednobajtowe kody operacji i opcjonalne parametry.
Byteokody to zwykle zwarte kody numeryczne, stałe i odniesienia. W rzeczywistości są to zwykle adresy numeryczne. Kodują wynik analizy składniowej i semantycznej takich rzeczy jak typ, zakres i zagnieżdżanie głębi obiektów programu. W związku z tym często pozwalają na znacznie lepszą wydajność niż bezpośrednia interpretacja kodu źródłowego. Pozwalają również na uruchamianie tego samego kodu na różnych platformach. To z kolei zmniejsza zależność od sprzętu i systemu operacyjnego.
Zamieszanie między Opkodem i Bytecode wynika z faktu, że opkody można również znaleźć w kodach bajtowych i innych reprezentacjach. Reprezentacje te są często przeznaczone dla interpretera oprogramowania, a nie dla urządzenia sprzętowego. Wykorzystują również nieco wyższe typy danych i operacje niż większość odpowiedników sprzętowych. Są one jednak zbudowane w podobny sposób.
Porównanie między Opcode i Bytecode:
Opcode | Bytecode | |
Typ | Instrukcja języka maszyny | Instrukcja języka maszyny |
Opis | Jest rodzajem kodu, który dostarcza komputerowi instrukcji wskazujących, co zrobić z dostarczonymi danymi. | Jest formą zestawu instrukcji zaprojektowanego do wydajnego wykonywania przez program tłumacza. |
Co to robi | Instrukcje dotyczące operacji na danych | Instrukcje wskazujące, co robić |
Wbiec | Prowadzony przez maszynę | Uruchom na maszynie wirtualnej |
Używany przez | Sprzęt komputerowy | Interpreter oparty na oprogramowaniu, taki jak Java lub CLR. |
Zdjęcie dzięki uprzejmości: en.wikibooks.org, slideshare.net