- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
00614A77 |. 8BF0 MOV ESI,EAX
00614A79 |. BB 01000000 MOV EBX,1
00614A7E |. EB 01 JMP SHORT 00614A81
00614A80 |> 43 /INC EBX
00614A81 |> 3BF3 CMP ESI,EBX
00614A83 |. 7C 07 |JL SHORT 00614A8C
00614A85 |. 807C1F FF 20 |CMP BYTE PTR DS:[EDI+EBX-1],20
00614A8A |.^ 76 F4 \JBE SHORT 00614A80
TarasB 22.04.2011 13:20 # 0
Govnocoder#0xFF 22.04.2011 17:26 # 0
Вот аналогичный код на Delphi:
Как видно из кода, конечное значение ЕВХ будет равно кол-ву чисел в массиве, которые меньше или равны 20.
Вывод: Ничего говенного (кроме использования регистра ESI в качестве счётчика, вместо которого можно было использовать ЕАХ) в коде нет.
Govnocoder#0xFF 22.04.2011 17:29 # 0
TheCalligrapher 22.04.2011 20:32 # +4
Код не занимается никаким подсчетом количества числе меньше 20. Код занимается поиском первого числа, большего 20. Никакого "подсчета" там нет и в помине. Регистр 'EBX' используется только как индекс элемента массива (при том, что размер элемента, очевидно, равен одному байту). Его конечное значение будет равно индексу найденного элемента (если таковой найдется).
Аналогичный код будет выглядеть так
Удивляться тут можно лишь неестественному порядку инструкций и манипуляциям с 'ESI' и 'EAX' (зачем было копировать 'EAX' в 'ESI'?), но компилятор - он есть компилятор.
Govnocoder#0xFF 22.04.2011 20:48 # 0
guest 12.05.2011 16:10 # 0
"Неестественный порядок" инструкций в цикле как раз очень даже естественный. Я где-то даже целую статью читал, зачем в цикл делается короткий джамп, только не помню уже ничего. :)
Копирование EAX в ESI - тоже понятно: в EAX пришел аргумент функции.
guest 23.04.2011 00:29 # −3
MAGnit 22.04.2011 14:05 # 0
SadKo 22.04.2011 15:29 # +4
guest 22.04.2011 17:05 # 0
bugmenot 22.04.2011 20:58 # 0
guest 23.04.2011 00:23 # −2
|.^ - бреинфак или птичий язык смайликов?
eth0 23.04.2011 11:02 # +1
guest 23.04.2011 11:04 # −1
Xekep 07.05.2011 09:10 # 0
MOV ESI,EAX
XOR EBX,EBX
@@:
INC EBX
CMP ESI,EBX
JL SHORT 00614A8C
CMP BYTE PTR DS:[EDI+EBX-1],20
JBE @b
guest 07.05.2011 12:14 # 0
похапешник детектед
Govnocoder#0xFF 07.05.2011 12:42 # 0
Это его глаза, после 30 часов отладки.
guest 09.05.2011 09:37 # +2
эт анон метки
guest 07.06.2011 00:30 # 0
bugmenot 07.06.2011 00:47 # 0