Сейчас на форуме: Slinger (+6 невидимых)

 eXeL@B —› Основной форум —› Что быстрее выполнится 6 nop или JMP 2 байтовый ???
Посл.ответ Сообщение

Ранг: 214.1 (наставник)
Активность: 0.130
Статус: Участник

Создано: 12 декабря 2006 23:29
· Личное сообщение · #1

В проге имеется определенная инструкция, кот. надо занупить (6 NOP).
Можно ее заменить на JMP XXXXXX (кот. займет 2 байта, а остальные 4 можно не трогать, т.к. через них перепрыгнет однозначно), т.е. EB04
Вопрос: что быстрее выполнится 6 nop или JMP 2 байтовый (5 байтовый - не рассматривается).
Логично вытекает: до какого предела можно нупить по сравнению с JMP (по скорости выполнения)
Проц. Athlon.
Прога нах. в постоянном цикле (содержащим данную инстр-ию), т.е. цикл закончился -> цикл повторяется.
Необходима максимальная производ-ть.
Просьба писать тех, кто знает, а не свои домыслы... (у меня и своих хватает).




Ранг: 392.8 (мудрец), 108thx
Активность: 0.260.01
Статус: Участник
REVENGE сила, БеХоЦе могила

Создано: 12 декабря 2006 23:41 · Поправил: Maximus
· Личное сообщение · #2

gegter бугага, возьми секундомер и замерь

P.S: Ясень пень Nop

-----
StarForce и Themida ацтой!




Ранг: 214.1 (наставник)
Активность: 0.130
Статус: Участник

Создано: 12 декабря 2006 23:53
· Личное сообщение · #3

Maximus
Если nop'ов 126, то тоже "ясень пень Nop" ?




Ранг: 392.8 (мудрец), 108thx
Активность: 0.260.01
Статус: Участник
REVENGE сила, БеХоЦе могила

Создано: 12 декабря 2006 23:55
· Личное сообщение · #4

gegter ты уже забыл что сам написал что ли

gegter пишет:
надо занупить (6 NOP).


-----
StarForce и Themida ацтой!





Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 12 декабря 2006 23:56
· Личное сообщение · #5

jmp будет прибавлять к eip 4, а nop будет 6 раз обменивать регистры AL, что очень быстро. Но еще загрузка в конвеер. Хмм, это надо к процессорным гуру на wasm.ru, здесь вряд ли кто то ответит.

-----
Yann Tiersen best and do not fuck





Ранг: 240.5 (наставник)
Активность: 0.190
Статус: Участник
Author of ACKiller

Создано: 13 декабря 2006 00:19
· Личное сообщение · #6

gegter пишет:
Если nop'ов 126, то тоже "ясень пень Nop" ?

Тебе что нужно? Занопить часть цикла? Тогда просто поставь jmp с начала ненужного участка на его конец.

А разница в скорости выполнения nop и jmp $+4 настолько мала (если вообще есть - попробуй, замерь! ), что в многозадачном Windows она тебе ничего не даст.



Ранг: 88.3 (постоянный), 3thx
Активность: 0.040
Статус: Участник

Создано: 13 декабря 2006 00:50
· Личное сообщение · #7

Как будто трудно пятисек прогу накидать (см. аттач). Первый цикл 6 nop - на моем пенте 3 Гг выполняется около 0,4 сек, второй цикл из 2-х байтового jmp выполняется в 2 раза быстрее! Ответ однозначный - быстрее 2-байтовый jmp (в аттаче исходники, кто хочет может поглумиться с разыми количествами инструкций).

2d5b_13.12.2006_CRACKLAB.rU.tgz - GetTickCount.zip



Ранг: 214.1 (наставник)
Активность: 0.130
Статус: Участник

Создано: 13 декабря 2006 01:21 · Поправил: gegter
· Личное сообщение · #8

Что и требовалось доказать - мнения разделились - из логики одно, из регистров другое, на опыте - третье...

Maximus
Фактически было 2 вопроса: про 6 nop и если быстрее 6 nop, чем JMP, то до какого предела можно увеличивать кол-во последовательных nop, чтобы xx nop = jmp по скорости выполнения - но это уже для общего развития или если кто ранее пробовал, надеялся подскажут.

Enigma
пасиб...



Ранг: 214.1 (наставник)
Активность: 0.130
Статус: Участник

Создано: 13 декабря 2006 01:27
· Личное сообщение · #9

у меня быстрее выполняется jmp
всем спасибо
тему пока не закрываю...



Ранг: 36.1 (посетитель)
Активность: 0.010
Статус: Участник

Создано: 13 декабря 2006 02:17
· Личное сообщение · #10

Быстрее всего будет если поднять конец цикла на место нопов, чтоб ни их ни jmp небыло вообще, а после цикла вставить свой jmp.




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 13 декабря 2006 02:20
· Личное сообщение · #11

Не факт, нада еще учитывать выравнивание

-----
Yann Tiersen best and do not fuck




Ранг: 74.4 (постоянный)
Активность: 0.050
Статус: Участник

Создано: 13 декабря 2006 03:40 · Поправил: WoLFeR
· Личное сообщение · #12

Enigma пишет:
Первый цикл 6 nop - на моем пенте 3 Гг выполняется около 0,4 сек

Пипец скоростень больше чем скорость света . У меня мобила пошутрее будет.
Для таких замеров юзается RDTSC а не GetTickCount.

ТЕОРИЯ:
3 ггц - это 3 миллиарда тактов в секунду.
и того у нас из масмовой хелпы:
Для джампа:

Operands rel32 (relative) 486 Clocks (3)

А для одного нопа:

Operands 486 Clocks (1)
90 NOP No operation

И того 6 нопов - 6 тактов
Джамп 3 такта.

Теперь время с нопами 6/6миллиардов=0,0000000002с а не 0.4
джампы в 2 раза быстрее.

RTFM друзья



Ранг: 214.1 (наставник)
Активность: 0.130
Статус: Участник

Создано: 13 декабря 2006 05:00
· Личное сообщение · #13

Malice
ага всю прогу под отладчиком править из-за одного jmp в центре цикла.
не забудь, что обращения внутрь цикла идут абсолютные, т.е. было где-то
jmp 4А8027 в цикл, а я изменю цикл и где прога будет искать этот 4А8027-6=4А8021 ???
думай...



Ранг: 516.1 (!), 39thx
Активность: 0.280
Статус: Участник

Создано: 13 декабря 2006 05:29
· Личное сообщение · #14

WoLFeR, самый оптимальный вариант здесь имхо юзать таймер на базе QueryPerformanceCounter или timeGetTime



Ранг: 88.3 (постоянный), 3thx
Активность: 0.040
Статус: Участник

Создано: 13 декабря 2006 05:54
· Личное сообщение · #15

Не мог не ответить челу "WoLFeR", вот ту бадягу которую ты написал в прошлом посте, ты действительно уверен в своих словах! Чел, а чем ты объяснишь разницу во времени выполнения двух одинаковых (почти одинаковых) циклов из примера? Если 1 ноп выполняется за 2 E-10 секунды, чем ты объяснишь разницу в циклах, и такую ЗНАЧИТЕЛЬНУЮ разницу!!! По твоим словам значит что 1 такт процессора это выполнение одной инструкции процессора? Мягко говоря ты не прав!!!, И еще, раз уж разговор зашел про RDTSC - не работает она у меня на компе: excaption: INVALID_INSTUCTION!



Ранг: 88.3 (постоянный), 3thx
Активность: 0.040
Статус: Участник

Создано: 13 декабря 2006 06:01
· Личное сообщение · #16

Av0id - timeGetTime - как помню функция из winmm.dll, постомри, этож и есть прототип GetTickCount...



Ранг: 74.4 (постоянный)
Активность: 0.050
Статус: Участник

Создано: 13 декабря 2006 06:11 · Поправил: WoLFeR
· Личное сообщение · #17

вот ту бадягу которую ты написал в прошлом посте, ты действительно уверен в своих словах!
Бодягу написал ты я привел описание и пример, укажи где ошибка.
Чел, а чем ты объяснишь разницу во времени выполнения двух одинаковых (почти одинаковых) циклов из примера?
Если тебе нужно чтото обьеснять записывайся на курсы по архитектуре.

Enigma
Чувак для школьников есть другие форумы.
Enigma пишет:
Если 1 ноп выполняется за 2 E-10 секунды, чем ты объяснишь разницу в циклах, и такую ЗНАЧИТЕЛЬНУЮ разницу!!!


Я помоему написал что есть мануал в котором написано сколько тактов какая команда занимает.

Enigma пишет:
И еще, раз уж разговор зашел про RDTSC - не работает она у

Это проблема твоих кривых рук.

Enigma пишет:
Мягко говоря ты не прав!!!

Мягко говоря прежде чем утвержать такое туфтовое мнение, нужно привести доказательства а не тупо ляпнуть.
Ты хочеш сказать что ты прав что у тебя комнада ноп выполняется 0.4 секунды?

Тогда если в твоем пятом класе тебя учительница не научила математики пощитаем:
1секунда=1000мс
0.4с=400мс
тогда получается что в твоем случае за 1.6 секунду выполнится 4 байта программы.

А теперь домашнее задание:
Пощитать сколько времени уйдет на загрузку 100килобайтного Пе файла.
*Пощитать сколько времени уйдет на загрузку 100килобайтного Пе файла учитывая выполнение системных функций.

П.С. А теперь подотри сопли, на горшек и за уроки. Читаем мануал интера, и прилагающююся литературу.
Если возникают такие иллюзии как "Чувак ты неправ, но почему я хз" сюда плиз не постить, тут и без тебя хватает пионеров.



Ранг: 214.1 (наставник)
Активность: 0.130
Статус: Участник

Создано: 13 декабря 2006 06:22
· Личное сообщение · #18

WoLFeR
Але че за бодягу развели.
За 0,4 сек. выполняется весь цикл, состоящий из 10'000'000.
А не 6 nop. Все споры и перебрасывания любезностями туда... куда подальше.

Всем спасибо. Тема закрыта.


 eXeL@B —› Основной форум —› Что быстрее выполнится 6 nop или JMP 2 байтовый ???
Эта тема закрыта. Ответы больше не принимаются.
   Для печати Для печати