![]() |
|
|
![]()
|
|
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 2 Всего: 112 |
Можно ли как-нибудь сделать так, чтобы loop использовал не ecx, а cl.
Мне надо, чтобы если ecx=0, то loop делал только 256 циклов, а не 2^32... Может какой-нибудь префикс надо написать или что-нибудь еще ? Ну, понятно, что можно написать db $67; loop label1 и тогда будет использоваться cx, но мне надо cl. И сразу скажу - не надо предлагать написать что-нибудь вроде: test ecx, ecx jnz @label1 mov ecx, 0100h label1: ... loop label1 Это вопрос скорости... -------------------- С уважением, г-н Посол. |
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 2 Всего: 112 |
И еще: как заставить loop делать длинные прыжки, а то +/-128 байт иногда не устраивают. Это я когда-то где-то видел, что можно так сделать...
-------------------- С уважением, г-н Посол. |
|||
|
||||
| oleg1973 |
|
|||
![]() asm fanat ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3283 Регистрация: 16.7.2003 Где: Italy Репутация: 7 Всего: 34 |
cmp cl,255
loopnz метка а вот длинный луп не сделаеш там 8 битный офсет -128 +128 -------------------- SST 465555 icq 200-512-712 |
|||
|
||||
| Unregistered |
|
|||
|
Unregistered |
а если мне надо цикл из 255 шагов сделать ?
странно, но у меня однажды был файлик чо-то типа "coding gems", дак там написана была команда loop с длинным смещением с помощью db... или же это мне померещилось тогда, щас уже трудно вспомнить... |
|||
|
||||
| oleg1973 |
|
|||
![]() asm fanat ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3283 Регистрация: 16.7.2003 Где: Italy Репутация: 7 Всего: 34 |
ну так он и будет из 255
xor ecx,ecx met: тут код всякий cmp cl,255 loopnz met -------------------- SST 465555 icq 200-512-712 |
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 2 Всего: 112 |
Этот цикл выполнится всего 2 раза. Тем более я сказал, что это вопрос скорости, уж лучше перед циклом сделать проверку. -------------------- С уважением, г-н Посол. |
|||
|
||||
| oleg1973 |
|
|||
![]() asm fanat ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3283 Регистрация: 16.7.2003 Где: Italy Репутация: 7 Всего: 34 |
xor ecx,ecx
met: тут код всякий cmp cl,254 loopnz met ^))))))))))))))))) -------------------- SST 465555 icq 200-512-712 |
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 2 Всего: 112 |
cmp cl, 254 - выполнится 3 раза... cmp cl, 253 - 4 раза... cmp cl, 252 - 5 раз... Ладно, забей... -------------------- С уважением, г-н Посол. |
|||
|
||||
| oleg1973 |
|
|||
![]() asm fanat ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3283 Регистрация: 16.7.2003 Где: Italy Репутация: 7 Всего: 34 |
да я в курсе
тода с 1 проверяй а что за операция такая критичная по времени? -------------------- SST 465555 icq 200-512-712 |
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 2 Всего: 112 |
Это циклы - их несколько, только функции в которых сидят эти циклы выполняются очень часто и тут лишняя команда в цикле - сразу заметно будет... -------------------- С уважением, г-н Посол. |
|||
|
||||
| eXz |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 21.7.2003 Репутация: нет Всего: нет |
|
|||
|
||||
| oleg1973 |
|
|||
![]() asm fanat ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3283 Регистрация: 16.7.2003 Где: Italy Репутация: 7 Всего: 34 |
так что ch уже нулевое а есх потому что это 32 битное програмирование -------------------- SST 465555 icq 200-512-712 |
|||
|
||||
| eXz |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 20 Регистрация: 21.7.2003 Репутация: нет Всего: нет |
|
|||
|
||||
| NightGoblin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1021 Регистрация: 24.11.2002 Где: 127.0.0.1 Репутация: 1 Всего: 11 |
кстати, префикс изменения разрядности все равно лишний такт добавит, как ни крути.....
А вот, например, такой код
выполнится быстрее, чем loop. Плюс, так можно использовать любой регистр, а не только cx/ecx. Это сообщение отредактировал(а) NightGoblin - 31.8.2003, 06:42 -------------------- 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 |
|||
|
||||
| p0s0l |
|
||||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 2 Всего: 112 |
это было только на допотопных процессорах. Щас же все префиксы следующей команды просматриваются еще при выполнении текущей. Так что префиксы не будут тормозить.
Замерив время, у меня получилось что loop быстрее... Это сообщение отредактировал(а) p0s0l - 31.8.2003, 11:48 -------------------- С уважением, г-н Посол. |
||||
|
|||||
![]()
|
| Правила форума "Asm: Общие вопросы" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Asm: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |