Отговори на тема  [ 9 мнения ] 
C { if ( !(COUNT % 8) ) } = ASM { ? } 
Автор Съобщение
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Пет Авг 19, 2005 11:38 am
Мнения: 978
Местоположение: Europe -> BG
Мнение C { if ( !(COUNT % 8) ) } = ASM { ? }
_space_
_space_
_space_


if ( !( COUNT % 8 ) ) - ако COUNT е кратно на 8


как - на асемблер , аз в момента мисля по въпроса,но реших ,че въпроса е интересен и затова да питам и Вас :)

:weedman:

edit:

всъщност идеята е на всеки прочетени 8 бита да се записват в REGNUMBER++, та хрумна ми по-лесно от това горе (но си мисля , че това горе пък е чистата логика , която се търси).

regs:

8bitscount
allbitscount

logic:

пълним първия count reg с 8 на всеки 8 и го следим ; стигне ли 0 (запис рег номер) ; след това вадим 8 от allbitscount и така докато станат 0

едит2:

разбрах , че на С това са 30 реда на асм (PIC C) , но пък сигурно там функцията е унифицирана , т.е при каквито и да е y % x да работи ок :) (логично де :) ).

--
оказа се , че всъщност това кратно не ми трябва, защото се сетих , че на мене винаги ще ми е кратно на 8 , така че просто трябва да си броя. Но все пак темата е интересна относно % на асм как ще изглежда :)

_________________
един факт :-)
Съжалявам , че исках да помогна ...


Пет Ное 18, 2005 7:56 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Окт 31, 2004 9:19 pm
Мнения: 4464
Местоположение: Stara Zagora
Мнение 
Ами сигурно е по кратко да си вкараш един 2 ри брояч дето да го качваш заедно с COUNT и да проверяваш него. за 16 битов COUNT и нагоре със сигурност е по бързо.


Пет Ное 18, 2005 8:22 pm
Профил
Ранг: Почетен член
Ранг: Почетен член
Аватар

Регистриран на: Съб Сеп 03, 2005 11:31 am
Мнения: 766
Местоположение: Пловдив
Мнение 
.DEF count = R30

ANDI count, 0x07
BRNE NOEQUAL
{
Изпълнено условие
JMP END
}
NOEQUAL:
{
Неизпълнено условие
}
END:


Това е ако Count e BYTE и % е кратно на 2 // 2 , 4 , 8, 16, 32 ......


Пет Ное 18, 2005 11:05 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Сеп 25, 2004 12:32 pm
Мнения: 8382
Местоположение: София
Мнение 
С други думи, интересуват ни младшите 3 бита - ако са равни на 0, то цялото число нататък е кратно на 8. :) От тук нататък е очевидно как се проверява кратност на степен на 2-ката.


Пон Ное 21, 2005 12:59 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Окт 31, 2004 9:19 pm
Мнения: 4464
Местоположение: Stara Zagora
Мнение 
Интересно как не го видях това решение.
Стана ми интересно по какъв математически метод може да се провери за възможност за подобна оптимизация при конкретно зададено число за делител. Някои има ли идея?


Пон Ное 21, 2005 1:17 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Сеп 25, 2004 12:32 pm
Мнения: 8382
Местоположение: София
Мнение 
Ако не е степен на 2-ката, тая оптимизация не важи. :)


Пон Ное 21, 2005 1:22 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Сеп 26, 2004 4:11 pm
Мнения: 3750
Местоположение: София
Мнение 
Ами в някои случаи минава и ако не е точна степен на 2. Но иска едно-две команди в повече.
Задачка - закачка. :roll: :wink:


Последна промяна bateAz на Пон Ное 21, 2005 1:31 am, променена общо 1 път



Пон Ное 21, 2005 1:29 am
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Окт 31, 2004 9:19 pm
Мнения: 4464
Местоположение: Stara Zagora
Мнение 
Да това че става с всички степени на двоиката го разбрах а дали все пак и за някои други делители няма подобни трикове?
Като нищо ако се бях сблъскал с проблема и имах int16 щях да вкарам 2 ри брояч. :)


Пон Ное 21, 2005 1:29 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Окт 31, 2004 9:19 pm
Мнения: 4464
Местоположение: Stara Zagora
Мнение 
За 3 почнах да разсъждавам но ми се вижда че бърз метод няма.


Пон Ное 21, 2005 1:38 am
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 9 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 1 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни