ПЕРЕУПОРЯДОЧЕНИЕ СОСТАВНЫХ УСЛОВНЫХ ВЫРАЖЕНИЙ ДЛЯ БОЛЕЕ БЫСТРОГО ЗАКОРАЧИВАНИЯ

1. Вычислительное устройство, содержащее процессор, выполненный с возможностью:
принимать исходный код в компиляторе, при этом исходный код включает в себя:
по меньшей мере одно составное условное выражение, имеющее множество условий, и
для каждого условия из данного множества условий соответствующий кодовый блок, включающий в себя одну или более инструкций для того, чтобы оценивать это условие;
для каждого упорядочения из множества упорядочений упомянутого множества условий определять, что данное упорядочение удовлетворяет одному или более ограничениям по допустимости;
для каждого упорядочения из множества упорядочений, которые удовлетворяют одному или более ограничениям по допустимости, определять соответствующие оценочные вычислительные затраты для этого упорядочения; и
переупорядочивать упомянутое множество условий таким образом, чтобы иметь упорядочение, которое имеет наименьшие оценочные вычислительные затраты из множества упорядочений, которые удовлетворяют одному или более ограничениям по допустимости.
2. Вычислительное устройство по п.1, в котором исходный код дополнительно включает в себя кодовый блок первого ветвления, включающий в себя одну или более инструкций оценки первого ветвления, приспособленных исполняться, когда упомянутое множество условий является истинными, и кодовый блок второго ветвления, включающий в себя одну или более инструкций оценки второго ветвления, приспособленных исполняться, когда по меньшей мере одно условие из упомянутого множества условий является ложным.
3. Вычислительное устройство по п.2, при этом упомянутые одно или более ограничений по допустимости включают в себя такое ограничение, что исходный код включает в себя один кодовый блок первого ветвления и один кодовый блок второго ветвления.
4. Вычислительное устройство по п.1, при этом упомянутые одно или более ограничений по допустимости включают в себя такое ограничение, что соответствующий кодовый блок каждого условия включает в себя инструкцию перейти к общему целевому кодовому блоку.
5. Вычислительное устройство по п.4, при этом упомянутые одно или более ограничений по допустимости включают в себя такое ограничение, что часть исходного кода после последнего кодового блока из соответствующих кодовых блоков множества условий и перед общим целевым кодовым блоком имеет одну точку входа и одну точку выхода.
6. Вычислительное устройство по п.1, при этом упомянутые одно или более ограничений по допустимости включают в себя такое ограничение, что ни одна инструкция не вызывает неопределенную переменную.
7. Вычислительное устройство по п.1, при этом каждый кодовый блок представляет собой базисный блок.
8. Вычислительное устройство по п.1, при этом по меньшей мере один кодовый блок включает в себя множество базисных блоков.
9. Вычислительное устройство по п.1, в котором процессор выполнен с возможностью определять соответствующие оценочные вычислительные затраты для каждого упорядочения, по меньшей мере, отчасти посредством присвоения количественного показателя оценочных затрат каждой инструкции, включенной в упорядочение, и суммирования соответствующих количественных показателей оценочных затрат, присвоенных каждой инструкции.
10. Вычислительное устройство по п.1, при этом упомянутое составное условное выражение включает в себя три или более условий.
11. Способ, осуществляемый посредством процессора вычислительного устройства, при этом способ содержит этапы, на которых:
принимают исходный код в компиляторе, при этом исходный код включает в себя:
по меньшей мере одно составное условное выражение, имеющее множество условий, и
для каждого условия из данного множества условий соответствующий кодовый блок, включающий в себя одну или более инструкций для того, чтобы оценивать это условие;
для каждого упорядочения из множества упорядочений упомянутого множества условий определяют, что это упорядочение удовлетворяет одному или более ограничениям по допустимости;
для каждого упорядочения из множества упорядочений, которые удовлетворяют одному или более ограничениям по допустимости, определяют соответствующие оценочные вычислительные затраты для этого упорядочения; и
переупорядочивают множество условий таким образом, чтобы иметь упорядочение, которое имеет наименьшие оценочные вычислительные затраты из множества упорядочений, которые удовлетворяют одному или более ограничениям по допустимости.
12. Способ по п.11, в котором исходный код дополнительно включает в себя:
кодовый блок первого ветвления, включающий в себя одну или более инструкций оценки первого ветвления, приспособленных исполняться, когда упомянутое множество условий является истинными; и
кодовый блок второго ветвления, включающий в себя одну или более инструкций оценки второго ветвления, приспособленных исполняться, когда по меньшей мере одно условие из упомянутого множества условий является ложным.
13. Способ по п.11, в котором упомянутые одно или более ограничений по допустимости включают в себя такое ограничение, что соответствующий кодовый блок каждого условия включает в себя инструкцию перейти к общему целевому кодовому блоку.
14. Способ по п.11, в котором упомянутые одно или более ограничений по допустимости включают в себя такое ограничение, что ни одна инструкция не вызывает неопределенную переменную.
15. Способ по п.11, в котором упомянутое определение соответствующих оценочных вычислительных затрат для каждого упорядочения включает в себя этапы, на которых присваивают количественный показатель оценочных затрат каждой инструкции, включенной в упорядочение, и суммируют соответствующие количественные показатели оценочных затрат, присвоенные каждой инструкции.