В таблицу переходов например + jmp [jump_table+eax] Если веток много, это однозначно будет быстрее чем cmp/jcc/cmp/jcc... даже если их не тупо расставить, а на основании дерева к примеру ветвления делать.
Учитывая что идентификаторы в своей программ ты можешь ставить какие угодно например Код (Text): .const IDYES=0 IDNO=1 IDCANCEL=2 .data handels dd save_file, close, nothing .code jmp handels[eax*4]
Ещё MSVC6 такое делал (особенно в длинном switch (uMsg) в оконной процедуре, где номера сообщений сильно отличались, и таблица переходов была бы слишком длинной): Код (Text): sub eax,ID_CANCEL ; = 2 jz .id_cancel sub eax,ID_YES - 2 ; 6 - 2 = 4 jz .id_yes sub eax,ID_IDNO - (2 + 4); 7 - 6 = 1 jnz .default .id_no: ... Правда, я не уверен, что это быстрее)
угум. таблица переходов. что касается разбросанных идентефикаторов - тут обратите внимание на моё "в некоторых случаях". если прога довольно серьёзная - то наверняка таблицка получится длинной и идентефикаторы будут почти по порядку, что и даст студии возможность заменить условные переходы табличкой. я х.з. делают ли это компиляторы, но если знать частоту вызова case'ов, то можно соптимизировать - на первое место ставить те, которые максимально уменьшат неопределённость выбора.