D
Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе
int x;
if( x & 1 )
//нечетное
else
//четное
если не ошибаюсь, товарищ КнутPremature optimization is the root of all evil
if( x & 1 )
Согласен, но я и не настаиваю на его повсеместном применении1. менее очевидная запись
С какой радости? Мой вариант - 1 инструкция (загрузку регистров не считаю). Даже в случае четного числа необходимо дополнительно проверить результат - плюс инструкция и переход. Про нечетное я скромно помолчу.2. предполагаю, что для современных компиляторов записи эквиваленты.
лет этак 10-20 назад может быть. но сейчас обе конструкции будут скомпилированны подобно.С какой радости? Мой вариант - 1 инструкция (загрузку регистров не считаю). Даже в случае четного числа необходимо дополнительно проверить результат - плюс инструкция и переход. Про нечетное я скромно помолчу.
Подобно, но не одинаково. Вернее не совсем подобно. Не нужно компилятор делать умнее платформы x86. И годы здесь не причем.но сейчас обе конструкции будут скомпилированны подобно.
Напиши обе конструкции на асме и посмотри степень подобия
Вот ассемблер здесь очень причем, даже если отвлечься от платформы.и причем здесь асамблер и плаформа х86?!
Если код и будет одинаковым, то ближе к моему вариантуоптимизацию при компиляции никто не отменял
; 210 : int a;
; 211 : if (x%2)
00005 25 01 00 00 80 and eax, -2147483647; 80000001H
0000a 79 05 jns SHORT $LN5@main
0000c 48 dec eax
0000d 83 c8 fe or eax, -2 ; fffffffeH
00010 40 inc eax
$LN5@main:
00011 f7 d8 neg eax
00013 1b c0 sbb eax, eax
00015 f7 d8 neg eax
; 212 : a=1;
; 213 : else
; 214 : a=0;
; 216 : if(x&1)
00005 0f be c0 movsx eax, al
00008 83 e0 01 and eax, 1
; 217 : a=1;
; 218 : else
; 219 : a=0;
Оба варианта привел к сдвигу? А что будет если необходимо проверить на четность отрицательное число? И какой код будет сгенерирован для получения остатка от деления, ну например, на 6?с оптимизировал наславу
if ( x & 1 ) {
printf( "нечетное" );
} else {
printf( "четное" );
}
если не боишься, что члены твоей команды запинают тебя ногами, то можешь продолжать в том же духевот самый простой вариант!!
я не работаю в команде!) я сам по себе...если не боишься, что члены твоей команды запинают тебя ногами, то можешь продолжать в том же духе
Чего же код удалил?я не работаю в команде!) я сам по себе...
Обучение наступательной кибербезопасности в игровой форме. Начать игру!