Биографии Софтуер Хардуер IT Фирми Речник
 
Начало
Цел
Източници
Връзки
Галерия
Тестове
Форум
За авторите
 

Асемблер

    Асемблерният език или по-просто казано асемблерът е четима за хора система от знаци, заместваща машинния език, които различните компютърни архитектури използват. Машинният език, който представлява структура от единици и нули, зад които се крие кодирания вид на машинните операции, е направен четим чрез заместването на суровите стойности със символи, наречени мнемоника. Например, компютър със съответния процесор ще разбере тази x86/IA-32 машинна инструкция като 10110000 01100001. За програмистите е много по-лесно да запомнят еквивалентната на това преработка в асемблера във вида mov al, 0x61, което означава да се премести шестнадесетичната стойност 61(или десетичното число 91) в регистъра на процесора под името ‘al’. Мнемониката “mov” се използва като съкращение на “move” и обикновено бива последвана от разделен със запетаи списък от аргументи и параметри, като по този начин се получава типичен асемблерен израз. За разлика от програмните езици на високо ниво, при асемблера често се среща 1 към 1 съответствие между простите асемблерни оператори и инструкциите на машинен език. Трансформирането на кода на асемблера в машинен език се осъществява от асемблер, а обратното се получава чрез дисасемблер.

    Всяка компютърна архитектура има свой собствен машинен език и следователно свой собствен асемблерен език. Компютрите се различават по броя и типа на операциите, които поддържат. Те могат да имат различни размер и брой на регистрите, както и могат да имат различни представяния на типовете данни в носителите. Всички съвременни компютри имат почти еднаква функционалност, но те я постигат по различен начин и съответния асемблерен език трябва да отрази тези различия.

    Съществуват много спорове около ползата от асемблера. Често се твърди, че съвременните компилатори могат да представят кода, написан не език на високо ниво за същото време, в което този код може да бъде представен на машинен език от асемблера, но този пример има повече изключения от колкото аналози. Някои лесни пресмятания могат да бъдат осъществени по-бързо чрез асемблер и някои видове програмиране на ниско ниво могат да бъдат осъществени по-лесно с асемблер. В частност, асемблера има голяма ползваемост при изграждането на взаимодействието между операционната система и хардуера, например при съставянето на драйвери за устройствата. Много компилатори също така представят езиците на високо ниво като асемблер преди напълно да ги компилират, като позволяват получения асемблерен код да бъде редактиран и оптимизиран.

    Също така не е рядко явлението в език на сравнително ниско ниво, например C, да се вмъква чист асемблерен код в сорс кода на програмата чрез специален синтаксис. Друга сфера, където се използва асемблера е BIOS-а на компютъра. Този код на ниско ниво се използва, за да инициализира и тества системния хардуер, преди да бъде заредена операционната система. BIOS се съхранява в ROM. След като определено ниво на хардуерна инициализация се е осъществило, кода, написан на език на високо ниво може да се използва, но почти винаги кода, който действа веднага след като компютъра е включен в електрическата мрежа, е съставен на асемблер. Това често се дължи на факта, че оперативната памет може все още да не се е инициализирала при включването, а асемблерният език може да действа без да използва много памет, например под формата на стек. Асемблерният език се ползва с голяма стойност при някои видове инженерство, поради факта, че множество програми се разпространяват само във вид на машинен код, а той много лесно може да бъде преведен и след това изследван на ниво асемблер. Същият този процес става изключително трудно, когато този машинен код трябва да бъде преведен в код на език от високо ниво.