Показать сообщение отдельно
Старый 13.01.2004, 09:29   #11  
Ruff
Гость
 
n/a
К сожалению, не нашел точного определения "dead code" в руководстве. Может, кто-нибудь подскажет?

Поэтому решил посмотреть на указанный пример с "низкоуровневой" точки зрения. Вспоминается студенческий курсовой по проектированию трансляторов. Ниже приведен грубый перевод указанных фрагментов кода на Ассемблер, как его сделал бы компилятор. Смешно, конечно, проводить такие аналогии, но кое-что интересное в этом можно заметить.

1-Й вариант:
Код:
          TST AX, AX
          JZ  L01
// начало блока if
          MOV RESULT, AX
          RET
// конец блока if
          JMP	L02	// эта команда НИКОГДА не выполнится !!!
L01:	
// начало блока else
          INC	BX
          MOV RESULT, BX	
          RET
// конец блока else
L02:
 ...
2-Й вариант
Код:
          TST AX, AX
          JZ  L01
// начало блока if
          MOV RESULT, AX
          RET
// конец блока if
L01:	
          INC BX
          MOV RESULT, BX	
          RET
Хотя, вцелом, согласен с Юрием насчет строгости и интуитивности...