Врсте инструкција

Инструкције се могу класификовати по операцијама које извршавају и по броју адресних поља које користе за своје извршавање. Стога разликујемо операције које се користе за:
– Обраду података (аритметичке и логичке инструкције),
– Складиштење података (меморијске инструкције),
– Померање података (У/И инструкције),
– Управљање (тестирање и гранање).
По броју адреса разликујемо следеће операције:
– Безадресне (имају само код операције без адреса операнада),
– Једноадресне (имају код операције и простор за један операнд),
– Двоадресне (имају код операције и простор за два операнда),
– Троадресне (имају код операције и простор за три операнда).

На слици

програми за израчунавање израза Y = (A – B) / [C + (D * E)] 

програми за израчунавање израза Y = (A – B) / [C + (D * E)]

су упоређене типичне једноадресне, двоадресне и троадресне инструкције, које би могле да се употребе да би се израчунала вредност израза Y = (A – B) / [C + (D * E)].

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

Троадресни формати инструкција нису уобичајени зато што захтевају релативно дугачак формат инструкције да би се сместиле три адресне референце. Овде треба запазити да је јако битан редослед извршавања ових инструкција: најпре се израчунава разлика A-B која се смешта на локацију Y. Након тога се израчунава производ D*E, затим збир тог производа и операнда C који се смешта у привремену локацију T. На крају се израчунава количник разлике смештене у Y и збира смештеног у T и добијени резултат се смешта на локацију Y.
Код двоадресних инструкција за бинарне операције, једна адреса мора да има двоструку улогу, као операнд и као резултат. Према томе, инструкција SUB Y, B изводи рачунање Y–B и складишти резултат у Y. Двоадресни формат смањује количину меморије потребне за смештање инструкција, али уноси и извесну незграпност у програм.
Да би се избегло мењање вредности операнда, користи се инструкција MOVE како би се једна од вредности пребацила у локацију за резултат или привремену локацију пре него што се изведе операција.
У овом примеру, програм се шири на шест инструкција.
Још једноставнија је једноадресна инструкција. Да би она радила, друга адреса мора да буде имплицитна. Имплицитна адреса је обично регистар у процесору који се назива акумулатор (Acc).
Акумулатор садржи један од операнада и користи се за складиштење резултата. У овом примеру, потребно је осам инструкција да би се извршио задатак.
Безадресне инструкције се могу користити код рачунара који поседују специјалну организацију меморије која се зове стек. Стек је скуп локација са којима се ради по правилу LIFO (Last In, First Out), последњи податак који се смести на стек се први чита. Податак се смешта на стек инструкцијом PUSH, а узима са стека инструкцијом POP.

Advertisements

Оставите одговор

Попуните детаље испод или притисните на иконицу да бисте се пријавили:

WordPress.com лого

Коментаришет користећи свој WordPress.com налог. Одјавите се / Промени )

Слика на Твитеру

Коментаришет користећи свој Twitter налог. Одјавите се / Промени )

Фејсбукова фотографија

Коментаришет користећи свој Facebook налог. Одјавите се / Промени )

Google+ photo

Коментаришет користећи свој Google+ налог. Одјавите се / Промени )

Повезивање са %s