HLA (język programowania)
HLA (ang. High Level Assembl/y/er) – język programowania stworzony przez Randall Hyde’a. Umożliwia on używanie wysokopoziomowych konstrukcji pomocnych zarówno dla początkujących, jak i zaawansowanych programistów assemblera. W pełni wspiera zaawansowane typy danych oraz programowanie zorientowane obiektowo. Używa składni luźno opartej na kilku językach wysokiego poziomu (HLL), takich jak Pascal, Ada, Modula-2 i C++, pozwalając tworzyć programy odczytywane przez język assemblera i pozwalając programistom HLL-ów nauczyć się HLA tak szybko, jak to tylko możliwe.
Nazwa | wysokopoziomowy assembler (HLA) |
Twórca | Randall Hyde |
System operacyjny | Windows, Linux, FreeBSD, Mac OS X |
Początek i cele
[edytuj | edytuj kod]HLA był początkowo stworzony jako narzędzie do nauki asemblera na uniwersytetach. Celem HLA było przyspieszenie nauki asemblera przez studentów tak szybko, jak to tylko możliwe, oraz wykorzystanie ich obecnej wiedzy programistycznej. Większość studentów uczących się programowania w assemblerze była zaznajomiona z wysokopoziomowymi strukturami kontrolnymi takimi jak: IF, WHILE, FOR itd. HLA pozwolił studentom na natychmiastową naukę asemblera, pozwolił im także opanować inne wstępne warunki assemblera przed przystąpieniem do niskopoziomowych struktur kontroli. „The Art of Assembly Language Programming 2nd Edition” Randall Hyde’a używa HLA do tego celu.
Wysokopoziomowy kontra niskopoziomowy asembler
[edytuj | edytuj kod]HLA v2.x wspiera takie same niskopoziomowe instrukcje maszynowe jak niskopoziomowy asembler. Różnica jest taka, że wysokopoziomowe assemblery (takie jak HLA, MASM, lub TASM na x86) wspierają także wysokopoziomowe wyrażenia jak: IF, WHILE, struktury/rekordy, unie, a nawet klasy.
W przeciwieństwie do innych narzędzi assemblera, kompilator HLA włącza bibliotekę standardową: tysiące funkcji, procedur i makr, jakie mogą być użyte do stworzenia aplikacji. Podczas gdy biblioteki asemblera nie są nowe, język włączający bibliotekę standardową sprawia, że skorzystanie z niej jest znacznie bardziej prawdopodobne niż po prostu napisanie własnych funkcji bibliotecznych.
HLA wspiera wszystkie takie same niskopoziomowe maszynowe instrukcje jak pozostałe asemblery x86. Wysokopoziomowe struktury bazują na tych znalezionych w MASM i TASM (którego cechy HLL-owe poprzedzały pojawienie się HLA przez kilka lat). Można pisać niskopoziomowy kod w HLA tak prosto jak w innym assemblerze, po prostu ignorując HLL-owe struktury kontroli. Cechy podobne do HLL-ów pojawiają się w HLA w celu zapewnienia pomocy dla początkujących programistów, zakładając, że zaprzestaną oni stosowania tych wyrażeń, gdy tylko opanują niskopoziomowy zestaw instrukcji (w praktyce sporo doświadczonych programistów kontynuuje używanie HLL-owych wyrażeń w HLA, MASM i TASM długo po tym, jak opanowali niskopoziomowe zestawy instrukcji, jednak to jest zwykle robione dla zwiększenia czytelności).
Możliwe jest pisanie wysokopoziomowych programów, używając HLA, unikając większości nudnego niskopoziomowego języka programowania asemblera. Część programistów asemblera nie akceptuje HLA. Jednak wspieranie zarówno wysokopoziomowego i niskopoziomowego programowania daje rozszerzony zakres zastosowania. Jeśli trzeba, jest możliwe stworzenie jedynie niskopoziomowego kodu, a jeśli trzeba napisać czytelniejszy kod, można użyć wysokopoziomowych wyrażeń.
Charakterystyczne cechy
[edytuj | edytuj kod]Dwie cechy HLA odróżniają go od innych asemblerów x86: potężny system makro oraz Biblioteka Standardowa HLA.
Biblioteka Standardowa
[edytuj | edytuj kod]Biblioteka Standardowa HLA jest obszernym zestawem napisanych makr i procedur, które ułatwiają życie programistom, chroniąc ich przed „odkrywaniem koła na nowo”, za każdym razem pisząc nowy program. Być może tak samo ważne jest to, że Biblioteka Standardowa pozwala programistom pisać przenośne aplikacje, które można uruchomić pod Windowsem lub Linuxem wykonując jedynie ponowną kompilacje kodu źródłowego. Podobnie jak biblioteka standardowa C, Biblioteka Standardowa HLA pozwala trzymać się z dala od niskopoziomowych wywołań OS, więc takie same zestawy OS API mogą służyć do wszystkich systemów operacyjnych, które obsługują HLA. Oczywiście asembler pozwala stworzyć jakiekolwiek potrzebne wywołanie OS, ale tak długo, jak programiści używają Biblioteki Standardowej HLA, napisanie przenośnego kodu jest proste.
Biblioteka Standardowa HLA dostarcza tysiąca funkcji, procedur i makr. W połowie 2010 roku, Biblioteka Standardowa HLA v2.12 zawierała następujące funkcje:
- Tablice: deklaracje i manipulacje
- Operowanie na bitach
- Operowanie na „Blob” (ang. binary large object „duże obiekty binarne”)
- Operowanie na znakach
- Operowanie na zestawach znaków
- funkcje daty i czasu
- Obiektowo-orientowane pliki I/O
- Podstawowe Pliki I/O
- Funkcje operujące na plikach systemowych (np. usuń, zmień nazwę, zmień folder)
- Deklaracje i funkcje powiązane z HLA
- Biblioteka Windows (Objektowo orientowany Framework dla programowania Win32)
- Funkcje matematyczne
- Zarządzanie pamięcią i jej alokacją
- Interfejsy APIs specyficzne dla FreeBSD
- Interfejsy APIs specyficzne dla Linuxa
- Interfejsy APIs specyficzne dla Win32
- Funkcje tekstowe dla konsoli
- Wsparcie zmiennych systemowych
- Wspieranie przechwytywania wyjątków
- Wspieranie pliku mapowania-pamięci
- Wspieranie Gniazd i obiektów client/server
- Wsparcie dla wątków i synchronizacji
- Funkcje Czasomierza (timer)
- Generatory liczb losowych
- Wspieranie zdalnie wywoływanych procedur
- Standardowe Funkcje błędu wyjścia
- Standardowe funkcje wyjścia
- Standardowe funkcje wejścia
- Funkcje String
- Funkcje String zakończone zerem
- Wsparcie tablic (asocjacyjnych)