Техника оптимизации под линуха

       

не оптимизированный


       cmp    eax, 0Bh                   ; switch 12 cases

       ; сравниваем a с 11

      

       ja     short loc_80483F5 ; default

       ; если a

>
11 выходим из оператора switch

       ;

       jmp    ds:off_804857C[eax*4] ; switch jump

       ; передаем управление соответствующему case-обработчику

       ; таким образом, мы имеем всего лишь одно сравнение и два ветвления

; // таблица смещений case-обработчиков

off_804857C     dd offset loc_80483F5   ; DATA XREF: main+11^r

       dd offset loc_80483E8   ; jump table for switch statement

       dd offset loc_80483F9

       dd offset loc_8048402

       dd offset loc_804840B

       dd offset loc_8048414

       dd offset loc_804841D

       dd offset loc_8048426

       dd offset loc_804842F

       dd offset loc_8048438

       dd offset loc_8048441

       dd offset loc_804844F



Содержание раздела