ßçûêè ïðîãðàììèðîâàíèÿ - êîíöåïöèè è ïðèíöèïû

Ñ òî÷êè çðåíèÿ ýôôåêòèâíîñòè î÷åâèäíî,


L1:    statement_1                                                   Êîìàíäû äëÿ statement_1

          jump                         End_Case

L2:    statement_2                                                    Êîìàíäû äëÿ statement_2

          jump                          End_Case

…                                                                            Êîìàíäû äëÿ äðóãèõ îïåðàòîðîâ

End_Case:

     Ñ òî÷êè çðåíèÿ ýôôåêòèâíîñòè î÷åâèäíî, ÷òî ÷åì áëèæå ê âåðõíåé ÷àñòè îïå­ðàòîðà ðàñïîëàãàåòñÿ àëüòåðíàòèâà, òåì áîëåå ýôôåêòèâåí åå âûáîð; âû ìîæå­òå ïåðåóïîðÿäî÷èòü àëüòåðíàòèâû, ÷òîáû èçâëå÷ü ïîëüçó èç ýòîãî ôàêòà (ïðè óñëîâèè, ÷òî âû íå èñïîëüçóåòå «ïðîâàëû»!).

     Íåêîòîðûå case-îïåðàòîðû ìîæíî îïòèìèçèðîâàòü, èñïîëüçóÿ òàáëèöû ïåðåõîäîâ. Åñëè íàáîð çíà÷åíèé âûðàæåíèÿ îáðàçóåò êîðîòêóþ íåïðåðûâíóþ ïîñëåäîâàòåëüíîñòü, òî ìîæíî èñïîëüçîâàòü ñëåäóþùèé êîä (ïîäðàçóìåâàåò­ñÿ, ÷òî âûðàæåíèå ìîæåò ïðèíèìàòü çíà÷åíèÿ îò 0 äî 3):

                                 compute                 R1,expr

                                 mult                       R1,#len_of_addr                   expr* äëèíà_àäðåñà

                                 add                        R1 ,&table                 + àäðåñ_íà÷àëà_òàáëèöû

                                 jump                     (R1)                           Ïåðåéòè ïî àäðåñó â ðåãèñòðå R1

          



 table:                                                                                    Òàáëèöà ïåðåõîäîâ

                     addr(L1)

                     addr(L2)

                     addr(L3)

                    addr(L4)

L1:              statement_1

                    jump                           End_Case

L2:              statement_2

                   jump                            End_Case

L3:             statement_3

                   jump                            End_Case

L4:            statement_4

End_Case:

     Çíà÷åíèå âûðàæåíèÿ èñïîëüçóåòñÿ êàê èíäåêñ äëÿ òàáëèöû àäðåñîâ îïåðàòî­ðîâ, à êîìàíäà jump îñóùåñòâëÿåò ïåðåõîä ïî àäðåñó, ñîäåðæàùåìóñÿ â ðåãè­ñòðå.

Ñîäåðæàíèå ðàçäåëà