Definicja języka asemblera

Co to jest język asemblera?

Język asemblera to rodzaj języka programowania niskiego poziomu, który jest przeznaczony do bezpośredniej komunikacji ze sprzętem komputera.W przeciwieństwie do języka maszynowego, który składa się ze znaków binarnych i szesnastkowych, języki asemblera są zaprojektowane tak, aby były czytelne dla ludzi.

Języki programowania niskiego poziomu, takie jak język asemblera, są niezbędnym pomostem między podstawowym sprzętem komputera a językami programowania wyższego poziomu — takimi jak Python lub JavaScript — w których napisane są nowoczesne programy.

Kluczowe dania na wynos

  • Język asemblerowy to rodzaj języka programowania, który tłumaczy języki wysokiego poziomu na język maszynowy.
  • Jest niezbędnym pomostem między programami a ich bazowymi platformami sprzętowymi.
  • Język asemblera opiera się na składni języka, etykietach, operatorach i dyrektywach do konwersji kodu na użyteczną instrukcję maszynową.
  • Język asemblera może przechodzić przez asemblery jednoprzebiegowe lub wieloprzebiegowe, każdy z konkretnymi zastosowaniami i korzyściami.
  • Obecnie języki asemblera rzadko są pisane bezpośrednio, chociaż są nadal używane w niektórych niszowych aplikacjach, na przykład gdy wymagania dotyczące wydajności są szczególnie wysokie.

Jak działają języki asemblera

Zasadniczo najbardziej podstawowymi instrukcjami wykonywanymi przez komputer są kody binarne, składające się z jedynek i zer.Kody te są bezpośrednio tłumaczone na stany „włączenia” i „wyłączenia” elektryczności przepływającej przez fizyczne obwody komputera.W istocie te proste kody stanowią podstawę „języka maszynowego”, najbardziej podstawowej odmiany języka programowania.

Oczywiście żaden człowiek nie byłby w stanie skonstruować nowoczesnych programów programowych poprzez jawne programowanie zer i jedynek.Zamiast tego programiści muszą polegać na różnych warstwach abstrakcji, które mogą pozwolić sobie na wypowiadanie swoich poleceń w formacie, który jest bardziej intuicyjny dla ludzi.

W szczególności współcześni programiści wydają polecenia w tak zwanych „językach wysokiego poziomu”, które wykorzystują intuicyjną składnię, taką jak całe angielskie słowa i zdania, a także operatory logiczne, takie jak „i”, „or” i „else”, które są znajomy w codziennym użytkowaniu.

Ostatecznie jednak te polecenia wysokiego poziomu muszą zostać przetłumaczone na język maszynowy.Zamiast robić to ręcznie, programiści polegają na językach asemblerowych, których celem jest automatyczne tłumaczenie między tymi językami wysokiego i niskiego poziomu.Pierwsze języki asemblerowe zostały opracowane w latach 40-tych i chociaż współcześni programiści i współcześni procesory języka naturalnego spędzają bardzo mało czasu na zajmowaniu się językami asemblerowymi, niemniej jednak pozostają one niezbędne dla ogólnego funkcjonowania komputera.

We wczesnych dniach informatyki programowanie systemów i programowanie aplikacji odbywało się całkowicie w języku asemblerowym.Bez języków asemblerowych wiele nowoczesnych komputerów i języków wyższego poziomu, których używamy dzisiaj, nie byłoby możliwe.

Składniki języka asemblera

Składnia

Podczas pisania dowolnego kodu w dowolnym języku programu istnieje obserwowalna, określona kolejność reguł, których należy przestrzegać, aby umożliwić kompilatorowi wykonanie kodu bez błędów.Reguły te są zdefiniowane jako składnia i zawierają kryteria, takie jak maksymalna dozwolona liczba znaków, jakie znaki muszą zaczynać się od linii kodu lub co oznaczają niektóre symbole „np. średnik”.

Etykieta

Etykieta to symbol reprezentujący adres, pod którym przechowywana jest instrukcja lub dane.Jego celem jest działanie jako miejsce docelowe w przypadku odniesienia w instrukcji.Etykiety mogą być używane wszędzie tam, gdzie adres może być użyty w językach asemblerowych.Etykieta symboliczna składa się z identyfikatora, po którym następuje dwukropek, podczas gdy etykiety numeryczne składają się z pojedynczej cyfry, po której następuje dwukropek.

Operatorzy

Nazywane również poleceniami operatory to wyrażenia logiczne występujące po polu etykiety.Dodatkowo musi być poprzedzony co najmniej jednym znakiem odstępu.Operatorami mogą być kody operacyjne lub dyrektywy.Kod operacji odpowiada bezpośrednio instrukcjom maszynowym, a kod operacji zawiera dowolną nazwę rejestru związaną z instrukcją.Alternatywnie, kody operacyjne dyrektywy są instrukcjami znanymi asemblerowi.

Dyrektywa

Dyrektywy są instrukcjami dla asemblera, które mówią, jakie działania muszą mieć miejsce podczas procesu montażu.Dyrektywy mają znaczenie deklarowania lub rezerwowania pamięci dla zmiennych; zmienne te mogą być później przywoływane w procesach w celu wykonywania bardziej dynamicznych funkcji.Dyrektywy są również używane do dzielenia programów na różne sekcje.

Makro

Makro języka asemblera to szablonowy format buta przedstawiający serię lub wzór instrukcji.Ta sekwencja instrukcji języka asemblerowego może być wspólna dla wielu różnych programów.Funkcja makr jest używana do interpretowania definicji makr, podczas gdy wywołanie makra jest wstawiane do kodu źródłowego, w którym zamiast zestawu instrukcji makr zostałby umieszczony „normalny” kod asemblera.

Mnemoniczny

Mnemonik to skrót oznaczający operację.Mnemonik jest wprowadzany do kodu operacji dla każdej instrukcji programu asemblera, aby określić skrócony „opcode”, który reprezentuje większy, kompletny zestaw kodów.Na przykład mnemonik „pomnóż przez dwa” zawiera pełny zestaw kodu, który wykonuje mnemonik.

Handel o wysokiej częstotliwości

Obecnie języki asemblera pozostają przedmiotem badań studentów informatyki, aby pomóc im zrozumieć, w jaki sposób współczesne oprogramowanie odnosi się do leżących u jego podstaw platform sprzętowych.W niektórych przypadkach programiści muszą kontynuować pisanie w językach asemblerowych, na przykład gdy wymagania dotyczące wydajności są szczególnie wysokie, lub gdy dany sprzęt jest niekompatybilny z jakimikolwiek obecnymi językami wysokiego poziomu.

Jednym z takich przykładów, które mają znaczenie dla finansów, są platformy handlu o wysokiej częstotliwości (HFT) używane przez niektóre firmy finansowe.Na tym rynku szybkość i dokładność transakcji ma ogromne znaczenie, aby strategie handlowe HFT okazały się opłacalne.Dlatego, aby zyskać przewagę nad konkurencją, niektóre firmy HFT napisały swoje oprogramowanie handlowe bezpośrednio w językach asemblerowych, przez co niepotrzebne jest czekanie na przetłumaczenie poleceń z języka wyższego poziomu na język maszynowy.

Wielu uważa, że ​​języki asemblerowe mają najbardziej strome krzywe uczenia się i są najtrudniejszymi do nauczenia językami komputerowymi.

Zalety i wady

Język asemblera może być zwykle wykonywany szybciej niż języki wysokiego poziomu.Stosunkowo łatwo jest wstawić lub usunąć komponenty kodu języka asemblerowego, a język asemblerowy zwykle wymaga mniej instrukcji do wykonania zadania w porównaniu z innymi typami języków.

Języki asemblerowe są również często używane przez programistów, którzy chcą mieć większą kontrolę nad swoimi komputerami, ponieważ języki asemblerowe pozwalają bezpośrednio manipulować sprzętem.Ze względu na szybkość i znaczenie, niektóre programy są specjalnie napisane przy użyciu języka asemblerowego, ponieważ kod może zwykle pozostać mniejszy.

Języki asemblerowe mają zwykle kilka wad.Długie programy napisane przy użyciu języka asemblerowego zwykle wymagają większej mocy obliczeniowej i nie mogą być uruchamiane na małych komputerach.Niektórzy mogą uważać składnię języka asemblerowego za trudniejszą do zapamiętania, a kodowanie przy użyciu języka asemblerowego może zająć trochę więcej czasu, ponieważ jest on bardziej złożony.Dodatkowo, język asemblerowy zwykle nie jest przenośny pomiędzy różnymi markami różnych komputerów; podobnie jak w przypadku utraty korzyści przez pracowników podczas zmiany firmy, języki nie mogą być płynnie tłumaczone na różne komputery.

Plusy
  • Wykonanie może być prostsze w porównaniu z innymi językami

  • Wykonanie jest zwykle szybsze w porównaniu z innymi językami

  • Pozwala na bezpośrednią kontrolę nad sprzętem

  • Kod może pozostać mniejszy w porównaniu z innymi językami

Cons
  • Programowanie może być trudniejsze do opanowania w porównaniu z językami wysokiego poziomu

  • Składnia języków asemblerowych jest trudna

  • Nieprzenośny między maszynami

Rodzaje monterów

Język asemblera musi zostać przetłumaczony na język maszynowy za pomocą asemblera.Istnieją dwa podstawowe typy asemblerów.

Asembler jednoprzebiegowy skanuje program jeden raz i tworzy równoważny program binarny.Ten typ asemblera sprawdza poprawność kodu języka asemblera, przeszukując kod w tablicy kodów mnemonicznych.Asembler jednoprzebiegowy jest często szybszy niż asembler wieloprzebiegowy i zwykle nie ma potrzeby konstruowania kodu pośredniego.

Asembler wieloprzebiegowy oznacza, że ​​asembler używa więcej niż jednego przebiegu.Asemblery wieloprzebiegowe tworzą tabelę z każdym symbolem i każdą z ich wartości w pierwszym przebiegu, a następnie używają tabeli w przyszłych przebiegach do generowania nowego kodu.Każde oddzielne przejście zwykle obsługuje inne konkretne zadanie.Chociaż zwykle wolniejsze, wieloprzebiegowe asemblery o modułowej strukturze mogą być często ponownie używane w różnych maszynach.

Przykład kodu języka asemblera

Poniżej znajduje się przykład kodu języka asemblera Netwide Assembler (NASM).

Przykład kodu języka asemblera.

Uniwersytet Loyola Marymount

W tym przykładzie instrukcja SYSCALL pod koniec kodu wyzwala część pamięci, w której przechowywane są usługi systemu operacyjnego.Następnie kod RAX jest używany do wywołania kodu do zapisania, a następnie RDI do wyjścia.Funkcja SYSCALL jest używana dwukrotnie do wywołania systemu operacyjnego, a także do wskazania systemowi, kiedy kod się skończył i nadszedł czas wyjścia.

Jaki jest przykład języka asemblera?

Najczęściej używane języki asemblera to ARM, MIPS i x86.

Czy C++ jest językiem asemblera?

C++ nie zawiera kodu asemblera.Język obliczeniowy C++ składa się z kodu C++, który kompilator tłumaczy na wykonywalny kod maszynowy.

Czy Python jest językiem asemblera?

Python jest bardziej zaawansowany niż języki asemblera.Języki asemblerowe są uważane za języki niskiego poziomu, podczas gdy języki wysokiego poziomu, takie jak C, Java lub Python, używają zer i jedynek zamiast liczb, symboli i skrótów.

W jaki sposób obecnie używane są języki asemblera?

Chociaż uważane są za języki niższego poziomu w porównaniu do bardziej zaawansowanych, języki asemblerowe są nadal używane.Język asemblera jest używany do bezpośredniego manipulowania sprzętem, uzyskiwania dostępu do wyspecjalizowanych instrukcji procesora lub oceny krytycznych problemów z wydajnością.Języki te są również używane do wykorzystania przewagi szybkości nad językami wysokiego poziomu w przypadku czynności wymagających czasu, takich jak handel o wysokiej częstotliwości.

Dolna linia

Język asemblera jest kodem niskiego poziomu, który opiera się na silnym związku między wprowadzaniem instrukcji przy użyciu języka kodowania a tym, jak maszyna interpretuje instrukcje kodu.Kod jest konwertowany na wykonywalne akcje za pomocą asemblera, który konwertuje dane wejściowe na instrukcje rozpoznawalne dla maszyny.Chociaż rozpowszechnione we wczesnych dniach informatyki, wiele większych systemów używa języków wyższego poziomu.