Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как заставить loop работать с CL 
:(
    Опции темы
Chingachguk
Дата 1.9.2003, 10:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва

Репутация: нет
Всего: 18



Цитата

Цитата

dec    cl
jnz      loop_label
выполнится быстрее, чем loop. Плюс, так можно использовать любой регистр, а не только cx/ecx.


Замерив время, у меня получилось что loop быстрее...


Видимо, из-за dec cl (8 бит), а не dec ecx. Эта хрень была еще в 16-ти битном режиме. Вообще я согласен с теми, кто грил про то, что dec + jnz лучше loop. В оптимизированном компиляторе коде я редко видел loop. Попробуй dec al - все же это аккумулятор. Хотя я в это не верю. Или вот еще:

Допустим, у тебя был код:

mov dword ptr [ebp+10h],edx ; Команда не use ecx и не use flags
dec cl
jnz @@Loop

Из-за конвеера лучше:

dec cl
mov dword ptr [ebp+10h],edx ; Команда не use ecx и не use flags
jnz @@Loop

А вообще всегда лучше смотреть весь цикл в целом.


--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
eXz
Дата 7.9.2003, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 21.7.2003

Репутация: нет
Всего: нет



Цитата
А вот, например, такой код
CODE 

dec    cl
jnz      loop_label


выполнится быстрее, чем loop. Плюс, так можно использовать любой регистр, а не только cx/ecx.
Я уже про это писал:
Цитата
dec cl/jnz @met - короче и быстрее.

PM   Вверх
p0s0l
Дата 7.9.2003, 20:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 2
Всего: 112



У меня тут вообще странные дела: вот если мерять по отдельности такое:
inc esi и add esi, ebx (ebx = 1)
(выполнялись где-то раз мильон, замерялось с помощью GetTickCount)
то получилось, что inc esi быстрее (как я и думал). Но вот в процедуре той, почему-то наоборот получается - подставляю вместо add esi, ebx строку inc esi - и получается медленне немного - странно...



--------------------
С уважением, г-н Посол.
PM   Вверх
NightGoblin
Дата 8.9.2003, 06:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1021
Регистрация: 24.11.2002
Где: 127.0.0.1

Репутация: 1
Всего: 11



Хм... во-первых, насколько намного, а во вторых, зачем мерить какой-то GetTickCount, если есть RDTSC?


--------------------
Kernel panic: /dev/null overflow!
GCS/IT/MU/O d-@ s: a- C++$>++++$ ULSB(+++) P+++ L+++>++++ !E W++(-) N o? K w-- O? M>+ V? PS+ PE Y+ PGP+>+++ t- 5 X+ R- !tv b+ DI+ D+ G e++ h--- r++ y?
B4F1 54B6 8738 26CD 5125 0581 B923 9273 FE59 1981
PM MAIL WWW ICQ   Вверх
p0s0l
Дата 8.9.2003, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 2
Всего: 112



Я сказал "немного", а не "намного"...
NightGoblin, а как работает RDTSC ? Вообще можешт ли дать мне линк, please, на описание инструкций какого-нибудь современного пня + всякие sse, mmx и что там еще есть...



--------------------
С уважением, г-н Посол.
PM   Вверх
NightGoblin
Дата 9.9.2003, 03:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1021
Регистрация: 24.11.2002
Где: 127.0.0.1

Репутация: 1
Всего: 11



p0s0l, сори, не так прочитал smile.gif
Описание RDTSC (взято из пресловутой книги Зубкова С.В.):

Цитата

Команда: RDTSC
Назначение: Чтение из счетчика тактов процессора
Процессор: P5

  Помещает в регистровую пару EDX:EAX текущее значение счетчика тактов - 64-битного машинно-специфичного регистра TSC, зачение которого увеличивается на 1 каждый такт процессора с момента его последней перезагрузки. Этот машинно-специфичный регистр доступен для чтения и записи при помощи команд RDMSR/WRMSR как регистр номер 10h, причем на Pentium Pro при записи в него старшие 32 бита всегда обнуляются. Так как машинно-специфичные регистры могут отсутствовать на отдельных моделях процессоров, их наличие всегда следует определять при помощи команды CPUID (бит 4 в EDX - наличие TSC).
  Команда выполняется на любом уровне привилегий, если бит TSD в регистре CR0 равен нулю, и только в реальном режиме или с CPL=0, если бит TSD = 1.


А описание команд... Вообще мне, например, все та же книжка описанием и служит. Если нужно что-то поновее Pentium Pro / Pentium II - смотри официальную документацию процессора Pentium 4 (весь мануал доступен тут)

з.ы. пришлось попариться с дурацким поисковиком Intel'а, пока нашел то, что нужно smile.gif


--------------------
Kernel panic: /dev/null overflow!
GCS/IT/MU/O d-@ s: a- C++$>++++$ ULSB(+++) P+++ L+++>++++ !E W++(-) N o? K w-- O? M>+ V? PS+ PE Y+ PGP+>+++ t- 5 X+ R- !tv b+ DI+ D+ G e++ h--- r++ y?
B4F1 54B6 8738 26CD 5125 0581 B923 9273 FE59 1981
PM MAIL WWW ICQ   Вверх
p0s0l
Дата 9.9.2003, 06:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 2
Всего: 112



Cпасибо! Щас буду качать...



--------------------
С уважением, г-н Посол.
PM   Вверх
NightGoblin
Дата 10.9.2003, 05:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1021
Регистрация: 24.11.2002
Где: 127.0.0.1

Репутация: 1
Всего: 11



p0s0l,
Да, вот мне тут сегодня как раз понадобилось измерить скорость выполнения функции, для чего была написана коротенькая программка... Одна проблема - она под Linux... Надо? В смысле, синтаксис на Intel я переделаю, но как там в виндах делать вывод - я не знаю... точнее, неохота гадать smile.gif Могу под Дос переписать smile.gif

Это сообщение отредактировал(а) NightGoblin - 10.9.2003, 05:08


--------------------
Kernel panic: /dev/null overflow!
GCS/IT/MU/O d-@ s: a- C++$>++++$ ULSB(+++) P+++ L+++>++++ !E W++(-) N o? K w-- O? M>+ V? PS+ PE Y+ PGP+>+++ t- 5 X+ R- !tv b+ DI+ D+ G e++ h--- r++ y?
B4F1 54B6 8738 26CD 5125 0581 B923 9273 FE59 1981
PM MAIL WWW ICQ   Вверх
p0s0l
Дата 10.9.2003, 06:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 2
Всего: 112



NightGoblin - спасибо за предложение, но ты мне уже помог. Мерялку то я и сам уже написал с помощью RDTSC...



--------------------
С уважением, г-н Посол.
PM   Вверх
neutrino
Дата 18.9.2003, 07:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: нет
Всего: 62



У меня в какой-то из книг было написано, что самая быстрая последовательность инструкций должна следовать такому правилу: 1-я инструкция в 1 такт, вторая в 1 такт и третья в 4. Такие последовательности выполняются намного быстрее. Может это имел в виду Чингачгук?


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
p0s0l
Дата 19.9.2003, 01:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 2
Всего: 112



Чингачгук говорил о спаривании команд, а про 1-1-4 не слышал ничего...



--------------------
С уважением, г-н Посол.
PM   Вверх
Chingachguk
Дата 22.9.2003, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва

Репутация: нет
Всего: 18



Про 1-1-4 я тоже не слышал - надо будет как-нибудь попробовать ;)


--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm: Общие вопросы"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0672 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.