|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : George Shepelev 2:461/124 05 Jul 2001 14:26:39 To : Oleg Ponomarev Subject : Коды Гpея --------------------------------------------------------------------------------
Oleg, ты ещё здесь сидишь?
Среда Июль 04 2001 13:03, Oleg Ponomarev wrote to All:
OP> Я протестировал процедуры обратного перевода из кода Грея в
OP> "обычный". Тестировались три варианта:
Более подробно опиши методику "тестирования". Похоже, в ней
какая-то "бага".
OP> Возможно, конечно, что я где-то ошибся, так как перевел
OP> исходники на Паскаль. Среда разработки Delphi 5. Посмотрите,
OP> плиз, я ничего не напутал?
Скомпилированный из паскалевских функций код очень бы не повредил
при анализе...
OP> { Вариант 1 }
OP> { я попытался переделать на 32-разрядный вариант, но это не помогло
OP> }
OP> Function FromGrey(Value : Integer) : Integer; assembler;
OP> asm
В месте вызова "чужеродной" функции Delphi может построить "монстрообразную"
конструкцию, желательно анализировать подробнее.
OP> mov EAX,Value
OP> mov ECX,EAX
OP> @L1:
OP> shr ECX,1
OP> xor EAX,ECX
OP> or ECX,0 // а почему сравние с нулем?
Потому что "пустой" регистр дальше незачем сдвигать ;)
Можно or ECX,ECX , но это ни на что существенно не повлияет
OP> jnz @L1
OP> end;
Более быстрый вариант с "вывернутым" циклом:
asm
MOV ECX,Value
MOV EAX,ECX
JMP @L2
@L1:
XOR EAX,ECX
@L2:
SHR ECX,1
JNZ @L1
end;
Георгий
--- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- ---
* Origin: Какое, милые, у вас тысячелетье на дворе? (c) (2:461/124)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/18153b447d18.html, оценка из 5, голосов 10
|