Машински код као програмски језик. Асемблер језик

Рачунари

Језик монтаже (или асемблер) јепрограмски језик ниског нивоа за рачунар или други фирмвер, у којем постоји корелација између језика и инструкције стројева машине архитектуре. Сваки стројно оријентисан језик (у професионалној терминологији - "колектор") односи се на специфичну компјутерску архитектуру. Насупрот томе, већина програмских језика високог нивоа су цросс-платформа, али захтевају тумачење или компилацију.

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

машински код

Користите

Многе операције захтевају једну или вишеоперанди способни да конструишу потпуна упутства, а многи асемблерс могу прихватити изразе бројева и константи, као и регистре и етикете као операнде. Ово ослобађа специјалисте у програмирању на језику машинског кода од мучних понављајућих калкулација. У зависности од архитектуре, ови елементи се такође могу комбиновати за специфична упутства или адресне режиме користећи оффсетс или друге податке, као и фиксне адресе. Многи "колекционари" нуде додатне механизме за олакшавање развоја програма, контролу процеса изградње и дебуг подршку.

Историјска перспектива

Први језик скупштине развијен је 1947. годинеКатхлеен Боотх за АРЦ2 на Универзитету Биркбецк у Лондону, док је радио са Јохном вон Неуманом и Херманом Голдстином на Институту за напредну студију. СОАП (Симболиц Оптимал Ассембли Програм) је био асемблер језик за ИБМ 650, који је створио Стан Поле 1955. године.

Историјски гледано, многа софтверска решења су биланаписана само у асемблеру. ОС-ови су написани искључиво на овом језику пре увођења Бурроугхс МЦП (1961), који је написан на језику Екецутиве Програм Проблем Ориентед Лангуаге (ЕСПОЛ). Многе комерцијалне апликације биле су написане на стројно оријентисаном језику, укључујући и велики број ИБМ-ових маинфраме софтвера који су створили ИТ гиганти. ЦОБОЛ и ФОРТРАН су на крају изгубили већину посла, иако су многе велике организације задржале инфраструктуру апликација асемблера током деведесетих.

шта је бинарни код

Већина раних микрорачунара заснована јена енглеском језику са ручним кодирањем, укључујући и већину оперативних система и великих апликација. Ово је због чињенице да су ови уређаји имали огромна ограничења ресурса, учитали појединачну меморију и архитектуру екрана и пружили ограничене системске услуге са грешкама. Можда је важнији недостатак првокласних компајлера на високом нивоу који су погодни за употребу у микрорачунару, што је отежало рачунарски код за учење.

Обим примене

Језици скупштине елиминишу већину проблема,досадан и дуготрајан програм на састављачима прве генерације, неопходан на првим рачунарима. Ово ослобађа програмера из рутине меморисања нумеричких кодова и рачунања адреса. У почетним фазама, "монтажери" су се широко примењивали за све врсте програмирања. Међутим, до краја осамдесетих. њихова употреба у великој мери су замењена језицима вишег нивоа у потрази за побољшаним програмским перформансама. Данас, асемблер језик се и даље користи за директну хардверску манипулацију, приступ специјализираним упутствима процесора или за решавање критичних проблема са перформансама. Типичне апликације укључују управљачке програме, уграђене системе на ниском нивоу и параметре у реалном времену.

Узорци апликације

Типични примјери великих програма на језику монтаже су ИБМ ПЦ ДОС оперативни системи, компајлер Турбо Пасцал и ране апликације попут програма за табеларне прорачуне Лотус 1-2-3.

оперативни кодови

Машински оријентисани језик - Примарни језикразвој за многе популарне кућне рачунаре 1980-их и 1990-их (као што су МСКС, Синцлаир ЗКС Спецтрум, Цоммодоре 64, Цоммодоре Амига и Атари СТ). Ово је због чињенице да су тумачени БАСИЦ дијалоги о овим системима обезбедили ниску брзину извршавања, као и ограничене могућности за пуну употребу постојеће опреме. Неки системи чак имају интегрисано развојно окружење (ИДЕ) са високо развијеним алатима за дебаговање и макро-објектима. Неки компајлери доступни за Радио Схацк ТРС-80 и његови наследници имали су прилику да комбинују уграђени извор саграђених са програмима високог нивоа. Након компилације, инлине асемблер је генерирао инлине бинарни код.

Машина код лутака. Терминологија

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

Шифре инструкција за машинске машине такође могуизвршити неке једноставне врсте оптимизације у зависности од скупа команди. Један конкретан пример овога може бити популаран к86 "колекционар" различитих произвођача. Већина њих може извршити команде замене транзиције у било ком броју пролаза, на захтев. Такође је способан да изврши једноставно прегруписавање или уметање инструкција, као што су неки асемблерс за РИСЦ архитектуре, који могу помоћи у оптимизацији интелигентног распореда команди како би се максимизирала употреба ЦПУ-а.

Као и рани програмски језици као што суФортран, Алгол, Цобол и Лисп, монтажери су доступни од 1950-их, као и прве генерације текстуалних рачунарских интерфејса. Међутим, колектори су се први пут појавили јер су много лакше писати од компајлера за језике високог нивоа. То је због чињенице да су сваки мнемонички, као и адресни режими и операнди упута, преведени у нумеричке приказе сваке специфичне инструкције без великог контекста или анализе. Било је и више класа преводилаца и полуаутоматских генератора кода са својствима сличним скуповима и језицима на високом нивоу, а код брзине можда је један од најпознатијих примјера.

Број пролаза

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

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

Први разлог за употребуколектори са једним пролазом имали су брзину монтаже - често је други пасус потребан за пребацивање и поновно читање извора програма на траку. Касније рачунари са много већим количинама меморије (посебно за чување дискова) имали су простор да обављају сву потребну обраду без поновног читања. Предност вишеструког асемблера је да одсуство грешака доводи до чињенице да процес везивања (или учитавање програма, ако асемблер директно ствара извршни код) је бржи.

Шта је бинарни код?

Програм написан на скупштинском језикусастоји се од низа мнемоничких упутстава процесора и мета-оператора (познатих као директива, псеудо-инструкција и псеудо-опс), коментари и подаци. Упутства за језик скупштине обично се састоје од опцоде мнемоника. Следи листа података, аргумената или параметара. Они су преведени у инструкције машинаског језика од стране асемблера, који се учитавају у меморију и извршавају.

На пример, доле наведена наредба говориПроцесор к86 / ИА-32 помера 8-битну вриједност за регистрацију. Бинарни код за ову команду је 10110, а затим се користи 3-битни идентификатор за који се користи регистар. Идентификатор АЛ је 000, тако да следећи код уноси АЛ регистар са подацима 01100001.

Поставља се питање: шта је бинарни код? Ово је систем кодирања који користи бинарне цифре "0" и "1" да представљају слово, број или други симбол на рачунару или другом електроничком уређају.

Пример машина код: 10110000 01100001.

Техничке карактеристике

Претварање језика скупа на машински код јемонтажни посао. Реверсе процес се обавља помоћу дисассемблер-а. За разлику од језика високог нивоа, постоји једноставна кореспонденција између скупа једноставних оператора за монтажу и упутстава за језик машине. Међутим, у неким случајевима, асемблер може пружити псеудоинструкције (макрое). Оне покривају неколико упутстава за језичке машине како би обезбедиле функционалност која је обично потребна. Већина целокупних функционалних асемблерса такође нуди богат макро језик који користе произвођачи и програмери да генеришу сложеније шифре података и секвенце.

програмирање на језику монтаже

Свака рачунарска архитектура има својевластити стројни језик. Рачунари се разликују по броју и врстама операција које подржавају, у различитим величинама и броју регистара, као иу приказима података у спремишту. Иако су већина опћих рачунара у стању да изводе скоро исту функционалност, начини на који оне раде су различити. Одговарајући језици састава приказују ове разлике.

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

Дизајн језика

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

  • опцоде мнемониц;
  • дефиниције података;
  • директиве о колектору.

Опцоде мнемоника и проширена мнемоника

Упутства написана на језику монтажеелементарно, за разлику од језика високог нивоа. По правилу, мнемоника (произвољни карактери) је симбол за поједину извршну кодну наредбу. Свака инструкција се обично састоји од опцоде плус нула или више операнда. Већина команди се односи на једну или две вредности.

За то се често користе проширене мнемоникеспецијализовани рад инструкција - у сврхе које нису очигледне из назива приручника. На пример, многи процесори немају експлицитну НОП инструкцију, већ имају уграђене алгоритме који се користе за ту сврху.

платформа оријентисан код

Многи колектори подржавају елементарне уграђене макрое који могу генерисати две или више упутстава за машину.

Директива о подацима

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

Скупштинске директиве

Упуте за колекторе, такође зване псеудо-кодовиили псеудо-опс, су команде које се дају асемблеру и усмеравају их да обављају операције, осим инструкција за монтажу. Директиве утичу на рад асемблера и могу утјецати на објектни код, таблицу симбола, датотеку са листом и вриједности параметара интерног сесија. Понекад је термин псеудоцоде резервисан за директиве које генеришу објектни код.

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

командни систем

Селф-доцументинг цоде

Састављачи знакова омогућавају програмеримаудружити произвољна имена (ознаке или знакове) са меморијским ћелијама и различитим константама. Често се свака стална вриједност и варијабла додељују властитим именом, тако да се упутства могу односити на ове локације по имену, чиме доприносе само-документовању кода. У извршном коду, име било које потпрограма одговара њеној улазној тачки, тако да сви позиви у потпрограму могу користити његово име. Унутар рутина додељене су ознаке ГОТО. Многи колекционари подржавају локалне карактере који су лексички различити од обичних карактера.

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

Језик скупа, као и већина других језикарачунар, омогућавају вам да додате коментаре изворном коду програма, који ће се игнорисати током процеса изградње. Судијско коментирање је важно у програмима на енглеском језику, јер је тешко одредити дефиницију и сврху секвенце инструкција бинарне машине. "Необрађени" (без коментара) језик који је направљен од стране компајлера или растављача је прилично тешко читати када је потребно извршити промјене.