|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Май 12, 2004 18:19:45 Ув. коллеги! Если я хочу обнулить какие-то биты в регистре, то мне обязательно писать add al, 10000000b или можно использовать десятичный эквивалент (аdd al, 128)? |
|
|
Дата: Май 12, 2004 18:31:30 Может я чего-то не понял... Почему add? Почему не and? Ведь для обнуления битиков лучше and использовать... |
|
|
Дата: Май 12, 2004 18:36:40 add? может and ? а вообще, для обнуления можешь использовать BTR, например, чтобы обнулить третий бит, пишешь: btr eax, 2 ну, а если все-таки через AND хочется, то and al, 0FBh ; 11111011b, т.е. тоже третий бит обнуляем а уж, десятичный, шестнадцатеричный... или двоичный - без разницы |
|
|
Дата: Май 12, 2004 18:37:48 Да, пордон - опечаточка..., но сути вопроса не меняет... |
|
|
Дата: Май 12, 2004 18:38:14 Funbit Что быстрее? and или btr? Я думаю, and. Я прав? |
|
|
Дата: Май 12, 2004 19:13:51 AND быстрее Особенно для Athlon. |
|
|
Дата: Май 12, 2004 19:14:56 точно сказать не могу, но в книжке Юрова обе команды требуют одну микрооперацию. p.s> просто я число с логической точки зрения сказал про btr :) все же, специально для этого она и была создана |
|
|
Дата: Май 12, 2004 19:27:25 btr eax, 2 спасибо я про эту команду и незнал! |
|
|
Дата: Май 12, 2004 21:49:00 Книжка Юрова видимо базируется на информации о Puntium Pro. Зато на том же Puntium Pro AND спаривается в любом пайпе, а BTR - не спаривается совсем. AMD Athlon Processor optimization guide (22007.pdf) : Instruction Mnemonic Decode Type Execute Latency AND mreg16/32, imm16/32 DirectPath 1 ;; может спаривиться BTR mreg16/32, imm8 VectorPath 2 ;; эксклюзивное выполнение С PIV несколько сложнее. Почему-то информации нет в книжке (248966-009). Но думаю, там она тоже медленнее. Но сравнивать эти команды не всегда корректно. BTR имеет отличную от AND ф-цию: Bit Test and Reset. Так что где-то она и лучше будет. |
|
|
Дата: Май 13, 2004 00:54:41 Nos А с точки зрения рекомендаций по написанию кода, числовые константы рекомендуется записывать в том виде в котором их удобно читать, т.е: для битовых операций - в двоичном или hex для символьных - в символьном (не 64 а 'A') для остальных - в десятичном. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.228 |