Шта је скупштински језик?

Понекад се назива монтажа или АСМ, асемблерски језик је програмски језик ниског нивоа.

Програми написани на скупштинским језицима су састављени од стране асемблера. Сваки асемблер има сопствени асемблерски језик, који је дизајниран за једну специфичну архитектуру рачунара.

Машински језик је само низ бројева, који људима није лако читати. Користећи АСМ, програмери могу да пишу људски читљиве програме који одговарају готово тачно машинском језику.

Недостатак је да све што рачунало ради мора бити описано експлицитно, прецизно и детаљно. Предност је што програмер има максималну контролу над оним што рачунар ради.

Зашто је АСМ језик "ниског нивоа"?

Скупштина се назива програмски језик ниског нивоа, јер постоји (скоро) један-на-један однос између онога што говори компјутеру и онога што рачунар ради. Уопштено, један редак скупног програма садржи највише једну инструкцију за рачунар.

Како се АСМ разликује од језика "високог нивоа"?

Језици на високом нивоу обезбеђују апстракције операција ниског нивоа које омогућују програмеру да се више фокусира на описивање онога што желе да раде, а мање на начин на који то треба да се уради . Програмирање на овај начин је практичније и чини програме лакшим за читање при жртвовању контроле ниског нивоа.

Програми написани на језицима високог нивоа никада неће одговарати сировој брзини и ефикасности програма написаних у скупштини. Примери језика високог нивоа укључују Питхон, Јава, ЈаваСцрипт, Цлојуре и Лисп.

Шта је "средњи" језик?

Језици средњег или нижег нивоа пружају неке апстракције на високом нивоу како би живот програмера био лакши, а да ипак омогући приступ операцијама ниског нивоа. Често се користе за писање оперативних система, па се понекад називају системски програмски језици .

Програми написани на језицима средњег нивоа такође могу да функционишу или скоро као и програми написани на асемблерском језику. Примери програмских језика средњег нивоа укључују Ц, Ц ++, Ада, Ним и Руст.

Да ли је АСМ преносив?

Не. Зато што су језици за састављање повезани са једном специфичном архитектуром рачунара, они нису преносиви. Програм који је написан на једном асемблерском језику би требао бити потпуно преписан да би се изводио на другом типу строја.

Преносивост је једна од главних предности језика вишег нивоа. Ц програмски језик се често назива "преносни склоп" јер Ц компајлери постоје за скоро сваку модерну архитектуру система. Програм који је написан у Ц може захтијевати неке промјене прије него што ће се компајлирати на другом рачуналу, али језички језик је преносив.

Уопштено говорећи, језик на вишем нивоу, мање промена треба да се уради да би се покренуо на другој архитектури. Језици најнижег нивоа - машински језик и асемблерски језик - нису преносиви.

Примјер: Здраво, Свијет! у 32-битном склопу, за Виндовс

Овде је "Хелло, Ворлд" написан за 32-битни Интел процесор. Такође ће радити на 64-битном процесору. Ми ћемо је компајлирати и покренути на Виндовс 10.

 глобал _маин ектерн _принтф сецтион .тект _маин: пусх мессаге цалл _принтф додај есп, 4 рет порука: дб 'Хелло, Ворлд!', 10, 0 

Да бисте започели, отворите Бележницу. Копирајте и налепите горњи код у нову текстуалну датотеку и сачувајте датотеку као хелло.асм .

Да бисмо саставили скуп, користићемо НАСМ, Нетвиде Ассемблер. Може се преузети на адреси //ввв.насм.ус/.

 насм -ф вин32 хелло.асм 

Када покренете ову команду, НАСМ креира објектну датотеку. Објектни фајл садржи машински код, али није сасвим извршна датотека. Наш објектни фајл се зове хелло.обј .

Да бисмо креирали извршну датотеку, користићемо 32-битну верзију МинГВ-а (Минимално ГНУ за Виндовс) која ће обезбедити гцц компајлер. Може се преузети на адреси //ввв.мингв.орг/.

 гцц -о хелло.еке хелло.обј 
 Здраво 
 Здраво Свете! 

Примјер: Здраво, Свијет! у 64-битном скупу, за Линук

Овде је "Хелло, Ворлд" написано за 64-битни Интел процесор. Ми ћемо је компајлирати и покренути на 64-битном Линуку.

 ектерн принтф; Ц принтф функцију, која се зове секција .дата; Дата секција, иницијализоване варијабле мсг: дб "Хелло, ворлд!", 0; Ц стринг завршава са 0 фмт: дб "% с", 10, 0; Принтф формат, "\ т Почните секцију кода глобал маин; стандардна улазна тачка гцц главна:; ознака програма за улазну тачку пусх рбп; сет уп стацк фраме, муст бе ускладен мов рди, фмт мов рси, мсг мов рак, 0; може бити и: кор рак, рак цалл принтф; Позовите функцију Ц принтф поп рбп; ресторе стацк мов рак, 0; нормално, без грешке, повратна вредност рет; повратак 

Копирајте и налепите овај програм у нову датотеку под називом хелло.асм .

Затим саставите скуп с НАСМ-ом, који можете инсталирати са вашим пакет менаџер. На пример, на Убунту или Дебиан, можете инсталирати НАСМ користећи апт:

 судо апт упдате & & судо апт инсталл насм 

Покрените ову команду да бисте креирали објектни фајл:

 насм -ф елф64 хелло.асм 

Објектни фајл се зове хелло.о .

Затим употребите гцц да повежете ову датотеку објекта са неопходним библиотекама на рачунару и преведите је у извршну датотеку која се зове хелло :

 гцц хелло.о -о здраво 

На крају покрените извршну датотеку:

 ./Здраво 
 Здраво Свете! 

За референцу, ово је исти програм, написан у Ц:

 #инцлуде инт маин () {цхар мсг [] = "Поздрав свет \ т принтф ("% с", мсг); ретурн 0; } 

  • Погледајте рутине отклањања грешака за друге примјере кодова ниског нивоа и додатне информације о томе што свака рутина ради.
  • За додатне примере асемблерског језика, погледајте веб страницу Хаппи Цодингс.

2ГЛ, асемблер, језик ниског нивоа, машински језик, програмски термини