Studopediya

КАТЕГОРИЯ:


Астрономия- (809) Биология- (7483) Биотехнологии- (1457) Военное дело- (14632) Высокие технологии- (1363) География- (913) Геология- (1438) Государство- (451) Демография- (1065) Дом- (47672) Журналистика и СМИ- (912) Изобретательство- (14524) Иностранные языки- (4268) Информатика- (17799) Искусство- (1338) История- (13644) Компьютеры- (11121) Косметика- (55) Кулинария- (373) Культура- (8427) Лингвистика- (374) Литература- (1642) Маркетинг- (23702) Математика- (16968) Машиностроение- (1700) Медицина- (12668) Менеджмент- (24684) Механика- (15423) Науковедение- (506) Образование- (11852) Охрана труда- (3308) Педагогика- (5571) Полиграфия- (1312) Политика- (7869) Право- (5454) Приборостроение- (1369) Программирование- (2801) Производство- (97182) Промышленность- (8706) Психология- (18388) Религия- (3217) Связь- (10668) Сельское хозяйство- (299) Социология- (6455) Спорт- (42831) Строительство- (4793) Торговля- (5050) Транспорт- (2929) Туризм- (1568) Физика- (3942) Философия- (17015) Финансы- (26596) Химия- (22929) Экология- (12095) Экономика- (9961) Электроника- (8441) Электротехника- (4623) Энергетика- (12629) Юриспруденция- (1492) Ядерная техника- (1748) Arhitektura- (3434) Astronomiya- (809) Biologiya- (7483) Biotehnologii- (1457) Военни бизнесмен (14632) Висока technologies- (1363) Geografiya- (913) Geologiya- (1438) на държавата (451) Demografiya- ( 1065) Къща- (47672) журналистика и смирен (912) Izobretatelstvo- (14524) външен >(4268) Informatika- (17799) Iskusstvo- (1338) историята е (13644) Компютри- (11,121) Kosmetika- (55) Kulinariya- (373) културата е (8427) Lingvistika- (374) Literatura- (1642) маркетинг-(23702) математиците на (16968) Механична инженерно (1700) медицина-(12668) Management- (24684) Mehanika- (15423) Naukovedenie- (506) образователна (11852) truda- сигурност (3308) Pedagogika- (5571) Poligrafiya- (1312) Politika- (7869) Лево- (5454) Priborostroenie- (1369) Programmirovanie- (2801) производствено (97 182 ) индустрия- (8706) Psihologiya- (18388) Religiya- (3217) Svyaz (10668) Agriculture- (299) Sotsiologiya- (6455) на (42831) спортист строително (4793) Torgovlya- (5050) транспорт ( 2929) Turizm- (1568) физик (3942) Filosofiya- (17015) Finansy- (26596) химия (22929) Ekologiya- (12095) Ekonomika- (9961) Electronics- (8441) Elektrotehnika- (4623) Мощност инженерно ( 12629) Yurisprudentsiya- (1492) ядрена technics- (1748)

операции RPN




Б, 10)

P, D)

B, C)

4. - T2. A 3)

5 .: = (А, 4)

Тук, операцията, определен от знака (заданието е и операцията), и символ означава позоваване триада операнд от друг резултат.


операции RPN

Свържи (постфиксната) полски запис - много удобен за изчисляване на израз под формата на операции и операнди. Тази форма се предвижда, че сделките се записват след знаците на операндите.

Повече детайли RPN разгледани по-нататък.

Инструкциите за сглобяване код и машини

машинни инструкции са удобни с това, че ако се използва вътрешно представяне на програмата е в пълно съответствие с не се изисква обектен код и комплексна реализация. инструкции за монтаж са само една форма на машинни инструкции за запис (виж "преводачи, компилатори и преводачи. - общата схема на работа", глава 13), и следователно като форма на вътрешно представяне на програмата на практика не се различават от тях.

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

Независимо от това, машинни команди - е езикът, на който в резултат на програмата, за да се запише. Поради това, компилаторът трябва все пак да се работи с тях. Освен това, само инструкциите за обработка на машинни (или тяхното представяне под формата на инструкции монтажен) могат да бъдат постигнати най-ефективно в резултат на програмата (вж. Forth в "Код оптимизация. Основни методи за оптимизация"). От това следва, че всеки компилатор работи с представителството на получената програма под формата на компютърни инструкции, но ще се обработват, като правило, в крайните етапи на етапа на генериране на код.

RPN - една постфиксната нотация на операциите. Той е бил предложен от полски математик J. Lukashevich, откъдето идва и името му [6, кн. 2, 23, 82] 1.

Това пише на знаците се записват веднага след операнди. В сравнение с нормалната (въвирам) запис в полския пише операнди следват в същия ред, както и операции признаци - строго в реда, в който са

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




I Глава 14. I eneratsin и код за оптимизация

допълва. Фактът, че в тази форма за отчитане на всички операции, извършвани по реда, в който са написани, го прави изключително лесно да се оцени изрази на компютър. Полската влизане не изисква да се вземат предвид приоритетните дейности, то не се използва скоби, и това е основната му предимство.

Той е изключително ефективен в случаите, когато се използва за изчисляване на стека. По-долу ще бъдат разгледани на алгоритъм за изчисляване на изрази под формата на RPN стека използване.

Основният недостатък на RPN също произтича от метода на изчисляване на изрази в това: тъй като ние използваме стека, а след това да се работи с него е винаги на разположение само върха на стека, което го прави изключително трудно да се оптимизира израз в RPN форма. Практически израз под формата на RPN почти невъзможно да се оптимизира.

Но когато оптимизирането на оценката израз не се изисква или не е голяма работа, RPN е много удобен метод за вътрешно представяне на програмата.

RPN първоначално беше предложено да се напише аритметични изрази. Това обаче не се ограничава само с неговото прилагане. Компилаторът може да генерира код под формата на RPN за изчисляване на почти всички изрази 1. Това е достатъчно, за да въведете знаците, предоставяне за изчисляване на съответните операции. По-специално, то е възможно да се въведе работата на условно и безусловно прехвърляне, включваща промяна изчислителна разбира последователност и да се движат напред или назад за редица стъпки в зависимост от резултата на върха на стека [6, кн. 2, 74, 82]. Този подход се използва широко обратен полски запис.

Предимства и недостатъци на RPN и определят неговия обхват. Значи, това е много широко използван, за да се оцени изрази в преводачески и командни процесори, където оптимизиране на компютри или отсъства или не е значителна.

Изразяване Оценка използване RPN

Изчисление изрази RPN е елементарно просто чрез комин. За този израз може да се види от ляво на дясно, и е установено, в това, че елементите са преработени в съответствие със следните правила:

1. Ако се установи, операнда, тя се поставя в стека (качва на върха
стек).

2. Ако се установи, че маркировката на едноместно операция (операция, която изисква един оператор
ранд), операнда избран от върха на купчината, се извършва операцията
и резултатът е поставен в стека (отива до върха на комина).

1 Forth език за програмиране е един добър пример за език, който да се изчисли всеки израз изрично използва стека и RPN операции.


методи поколение код MJM < »

3. Ако общ признак на бинарна операция (операция, която изисква два операнда), на два операнда са избрани от горната част на стека, операцията се извършва и в резултат се поставя върху стак (отива до върха на купчината).

Изчисление на изразяване свършва, когато достигне края на влизането на изразяване. Където резултат на изчисление е винаги на върха на стека.

Очевидно е, че алгоритъмът може лесно да бъде удължен за по-сложни операции, които изискват три или повече операнди.

Фиг. 14.4 разгледани примери за изразяване на изчисление в обратната полски запис.

6 7 10 4 + +


Изчисление изрази 6 + 7 * (10 + 4) = 104

/ + * +

Изчисление изрази 6+ (7 + 10) * 4 = 74 6 7 + 10 4



Изчисление изрази 6 + 7 + 10 * 4 = 53

Фиг. 14.4. Изчисление изрази RPN стека използване

Шофиране SU-компилация да преведат изрази, до RPN

Има много алгоритми, които ви позволяват да конвертирате израз на нормален (въвирам) нотация да RPN.

На следващо място, помисли за алгоритъма, изградена на базата на схема за SU-компилация за езика на аритметични изрази с операции +, -, * и /. В основата на алгоритъм избран граматиката на аритметични изрази, които многократно са били разгледани преди това като пример.

Тази граматика е показано по-долу.


622 Глава 14. Generation и код за оптимизация

G ({+, - / * AB ...} {STE} Р, S ..): P:

а _> S + T | S-т | т

T - * T * E | T / E | EE -> (S) | а | б

Схема SU-компилация ще се изгради по такъв начин, че има верига от изходните символи R и знам текущата позиция на курсора в р верига. Затварянето извършване конволюция или избора на алтернатива, съгласно правилото на граматиката може да напише герои в изходна верига и промените текущата позиция на курсора в него.

Така конструирана схема SU-компилация за преобразуване на аритметичен израз в обратната полски нотация е много проста [6, кн. 2]. Това е показано по-долу. В него всяко правило граматика включва някои действия, които са записани чрез; (Точка и запетая) точно зад дясната ръка на всяко правило. Ако не се изисква действие, празен низ (X) следва да бъде записано.

S -> S + T; R (р) = "+" • P = P + 1
S -> ST: R (р) = "-" ■ P = P + 1
S - »T; X
T -> T * E; R (п) - "*" P = P + L
T - * T / E; R (п) - "/" P = P + L
T -> E: X
E -> (S): X
Е - »A: R (P) =" A ". р = р + L
Е - »б: R (D) =" б ". D = D + 1

Тази схема SU-компилация може да се използва за всеки разпознаване без възвращаемост, което позволява анализ на струните на входните въз основа на правилата на граматиката (например, резолвера-базирани предимство граматика оператор обсъдено в "Изгряващи разпознаване на ченге езици без замяна", глава 12). След това, в съответствие с принципа на SU-Perevi, да, всеки път, извършване на извивка на базата на определени правила, резолвера ще се извърши действията, свързани с това правило. В резултат на работата му ще бъде изградена верига от R, съдържащ изображение на оригиналната форма на изразяване в обратната полски запис (по-точно казано, в този случай машината ще бъде не само резолвера, и веригите инверторни [6, 42]).

Тази схема е SU компилации, от една страна, показва как просто конвертирате изрази RPN форма, от друга страна, той показва как да практикува принципа работи SU компилации.





; Дата: 27.06.2015; ; Прегледи: 287; Нарушаването на авторските права? ;


Ние ценим Вашето мнение! Беше ли полезна публикуван материал? Да | не



ТЪРСЕНЕ:


Вижте също:



zdes-stroika.ru - Studopediya (2013 - 2017) на година. Тя не е автор на материали, и дава на студентите с безплатно образование и използва! Най-новото допълнение , Al IP: 66.102.9.24
Page генерирана за: 0.053 сек.