Co to jest montaż liniowy?
Asembler wbudowany - zwany także językiem asemblera wbudowanego lub asemblerem - to blok kodu asemblera wstawiany bezpośrednio do funkcji i kodu źródłowego dla innego języka. Pozwala to programiście wstawić blok czystego języka asemblera do programu, w którym reszta programu używa języka innego niż asembler. Ta zdolność jest obsługiwana w niektórych językach - takich jak C, C ++ i Pascal - ale jest funkcją konkretnego używanego kompilatora i niekoniecznie jest częścią standardu językowego. W wielu przypadkach wbudowany zestaw służy do uzyskiwania dostępu do specjalnych funkcji w centralnej jednostce przetwarzania (CPU), do optymalizacji kodu lub wykonywania operacji na bardzo niskim poziomie, takich jak blokowanie pamięci. Chociaż pewien kompilator lub język programowania może obsługiwać tworzenie plików wykonywalnych między platformami, użycie zestawu wbudowanego zwykle ogranicza program do systemów, które mogą stosować określone instrukcje asemblera lub mają pasującą architekturę.
Istnieje kilka sposobów, w jakie język lub kompilator pozwala na dołączenie zestawu wbudowanego do standardowego pliku kodu źródłowego. Jedną z najprostszych metod jest po prostu zdefiniowanie początku bloku zestawu, po czym wszystkie polecenia są interpretowane jako bezpośredni zestaw. Niektóre zintegrowane środowiska programistyczne (IDE) i kompilatory pozwalają kodowi wbudowanemu na używanie zmiennych zdefiniowanych w programie lub funkcji bez uprzedniego jawnego ładowania ich do rejestrów.
Innym sposobem definiowania zestawu wbudowanego w pliku źródłowym jest użycie dedykowanej funkcji tylko w asemblerze. W takim przypadku kodu wbudowanego zwykle nie można łączyć z kodem niepasującym, takim jak pętla sterująca lub instrukcja return. Po zaimplementowaniu w ten sposób funkcja wbudowana zwykle musi również jawnie wypychać i przenosić zmienne na stosie i poza nim, aby używać zmiennych lokalnych lub przekazywać wartości poza funkcję.
Jednym z najczęstszych zastosowań kodu asemblera jest precyzyjna optymalizacja małych segmentów programu. W zależności od tego, jak zintegrowany jest kod wbudowany, może to oznaczać użycie bardziej zrozumiałych dla użytkownika komend językowych umieszczonych wokół kodu wbudowanego, który bezpośrednio wykonuje pewne czynności bardzo szybko i skutecznie. Dodatkowo, jeśli znany jest system docelowy, kod może wykorzystywać rejestry i polecenia specyficzne dla sprzętu, które mogą znacznie przyspieszyć działanie programu.
Zespołu wbudowanego można używać do uzyskiwania bezpośredniego dostępu do części systemu operacyjnego, procesora, a nawet portów sprzętowych, gdy inne metody mogą zawieść lub spowodować błąd systemu. Można tego użyć do szybkiej zmiany ramek na karcie graficznej lub do wysyłania sygnałów bezpośrednio do określonego przerwania lub portu sprzętowego. Jednym z niebezpieczeństw korzystania z kodu asemblera w ten sposób jest to, że małe błędy mogą być trudne do znalezienia lub spowodować nieoczekiwany awarię programu w niektórych systemach.