|
![]() |
#1 |
Гость
|
К сожалению, не нашел точного определения "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: ... Код: TST AX, AX JZ L01 // начало блока if MOV RESULT, AX RET // конец блока if L01: INC BX MOV RESULT, BX RET |
|