Содержание статьиИщем операторы switch-case-break в бинарном кодеОтличия switch от оператора case языка PascalОбрезка длинных деревьевСложные случаи балансировки, или оптимизирующая балансировкаВетвления в case-обработчикахИтогиВ этой статье мы изу­чим опе­ратор выбора switch. Давай раз­берем­ся, какие фор­мы он может при­нять в дво­ичном коде, как раз­ные ком­пилято­ры тран­сли­руют его и как его най­ти в дизас­сем­бли­рован­ном коде по харак­терным приз­накам. Ищем операторы switch-case-break в бинарном кодеДля улуч­шения читабель­нос­ти прог­рамм в язык C был вве­ден опе­ратор мно­жес­твен­ного выбора — switch. В Delphi с той же самой задачей справ­ляет­ся опе­ратор CASE, более гиб­кий, чем его C-ана­лог, но об их раз­личи­ях мы погово­рим поз­днее.Лег­ко показать, что switch экви­вален­тен такой конс­трук­ции:IF (a == x1) THEN опе­ратор1
ELSE IF (a == X2) THEN опе­ратор2
IF (a == X2) THEN опе­ратор2
IF (a == X2) THEN опе­ратор2
ELSE ... опе­ратор по умол­чаниюЕс­ли изоб­разить это вет­вле­ние в виде логичес­кого дерева, то обра­зует­ся харак­терная «косич­ка».Тран­сля­ция опе­рато­ра switch в общем слу­чаеКа­залось бы, иден­тифици­ровать switch никако­го тру­да не сос­тавит — даже не строя дерева, невоз­можно не обра­тить вни­мание на длин­ную цепоч­ку гнезд, про­веря­ющих истинность усло­вия равенс­тва некото­рой перемен­ной с сери­ей непос­редс­твен­ных зна­чений

Скачать:









Важно:


Все статьи и материал на сайте размещаются из свободных источников. Приносим свои глубочайшие извинения, если Ваша статья или материал была опубликована без Вашего на то согласия.
Напишите нам, и мы в срочном порядке примем меры.





Заходи на mc.foxygame.ru:25565

Советуем прочитать