All streams
Search
Write a publication
Pull to refresh
16
0
Send message
Единственное где использую линейный код — это задержки порядка микросекунд и прочие супер тайм-критикал вещи. В тех же местах в топике, которые я привел, быстродействие — самая последняя вещь о которой надо думать, например форматирование SD карты (а именно оно в примере) происходит совсем не часто.

PS. А можно я ваш код чуток пооптимизирую, точнее поизвращаюсь ;)
Исхожу из того что 256 баранов байт лежат в одной банке, что ну уж очень логично, особенно в 16-м семействе пиков (судя по командам), тогда:

    clrf   FSR    ; этого не то чтобы нет в исходном примере, его просто плохо видно :)
start:
    clrf   INDF   ;1 cycle
    incfsz FSR, f ;1(2 if Zero) cycles
    goto   start  ;2 cycles
    ;end

У меня на 256 циклов меньше.
Подумалось тут, надо ввести в свой лексикон выражение «гипотетический факт», классно бы звучал демагог диалог: «А как вы считаете, этот факт не достаточно ли гипотетичен и эфемерен, для того чтобы обсуждать его практические последсвия?»
Искренне восхищен познаниями в столь тонких материях, сам я в них к сожалению как свинья в апельсинах, поэтому индусский для меня это как для римлян варварский — суть — непонятный в первую очередь; ксенос может быть но -фобос никак, я боюсь не кода как такового, или огнепоклонника в чалме с тем что у него в голове такой код, а того что такой код был в моих программах.

И ни в коем случае не хочу обидеть представителей столь древней цивилизации провернувшей сексуальную революцию задолго до того как мои предки начали шариться где-то в лесах и промышлять собирательством, язычеством и прочим воруй-убивай (гусей н ебыло). А слово «шиваизм» просто пришлось кстати, для меня любой набор звуков в противоестественной уху позе, например, «абухрантропия» или «нонемичизм» будет невольно ассоциироваться с тем, что я видел в исходниках микрочипа.
" -1 в том или ином виде", -1 в виде unsigned это 0xF...F по соответствующей ширине, но видимо надо было привести кусок чуть шире:

#if defined __C30__ || defined __C32__
{
   BYTE* localPointer = ioInfo.pBuffer;
   WORD localCounter = ioInfo.wNumBytes;
   // здесь тот самый, приведенный кусок
   // переменные локальнее некуда
}
#endif


Но даже если есть задача написать полный эквивалент, а не функциональный в данном контексте, то достаточно внести декремент внутрь операторных скобок, что увеличит исходный код всего на одну строку.

Данный вариант внес в топик чтобы не было недопониманий, хотя кто-нибудь другой вполне возможно назвал это пустой придиркой. Все-таки тема не про тесты на языке си, хотя такую тоже интересно было бы поднять, интересно кто как берет программистов на работу. Вот у меня, например, накопилось с десяток заданий-тестов.
И все-таки интересно в каком компиляторе второй пример компилируется в более оптимальный код, или это гипотетический пример?
Разница будет в значении localCounter после цикла, в одном случае оно останется 0, а в другом станет -1 в том или ином виде.
Минусминус после переменной, значит проверяется ее значение до декремента, так что проверка на ноль и выход из цикла не начиная его. Эквивалент:

loop:
if (0 != localCounter) { 
    localCounter = localCounter - 1;
    ...
    goto loop;
}

Вероятно при любом компиляторе, memset должен быть вылизан до вас, и тогда зачем изобретать велосипед:

memset(ptr, a, cntr);

Ну а если вопрос действительно в тактах, то это уже про ассемблер, так как компилятор может и поменяться.
Ога, не дописал "--" когда писал, считайте опиской, уже поправил.
Спасибо!
SPIBUF не определен в обоих кусках (на то они и куски — он определен выше и это не суть), а если читать внимательно то уменьшение указателя компенсируется его последующим увеличением. В этом то и фокус — писать код так чтобы никто не разобрался, но выглядело умно'.
А все-таки индусский, ведь скорее исповедование шиваизма, а не действительное гражданство Индии прямой путь к таковому.
Ну культура именований переменных должна быть и так, чтобы понять где глобальная, а где локальная, но можно и параметры в макрос пихнуть и явно потом переменные указывать:

#define getnextpathchar(really, wherewhere, where) ( really ? *++wherewhere : *++where )

Кстати для пика актуальнее вообще вынести в обычную функцию (особенно если переменные глобальны и передается только условие) — значительно компактнее код получится, так как на работу с указателями используется довольно громоздкая обертка и штук пять костылей.
Компиляторы под PIC реализуют стандарт ANSI X3.159-1989 «Язык программирования C», именно эту версию часто называют «ANSI C» или «C89», а 1989 год был чуть раньше чем 13 лет назад, так что inline там нет.
Если воспользоваться конвертером, или каким еще способом получить vcf, а далее сделать как написано в пункте «Импорт в телефон» то в процессе импорта можно будет выбрать куда импортировать контакты: в телефон или аккаунт.
Совет сменить ориентацию он конечно дельный, поговаривают женский оргазм куда более интенсивный. Но все-таки думаю что друзья нужны для того, чтобы помогать в том что мы не можем одолеть сами, а не учить жить, тем более когда это стоит всего полчаса рабочего времени.
Будучи полностью согласным, и абсолютно доверяющим гуглу, признаюсь что у меня просто нет секретов, таких, которые нельзя доверить, например, жене. Но если человек спокойнее спит, когда знает что коварные империалисты (а этот закостенелый сухарь не по наслышке знает такие слова) не получат его персональных данных (пусть по его мнению), то пусть это будет так (как пел Джон Леннон, хотя я далеко и не Мать-Мария).
Человек, который пытался конвертировать контакты довольно не глупый, хорошо владеет английским и умеет искать информацию. Точно не знаю пользовался ли он этими советами, но насколько я вижу эти ребята предлагают свой конвертер, вероятно с блекджеком и девками, а может просто не знающий кириллицу, или не работающий под Ubuntu:
For such stream, we provide you an efficient vCard converter software which will minimize your time, effort and cost. Software will not only export multiple vCard from Outlook 2003 but also import multiple vCard into your Outlook 2003 application. Give a try to us and take sigh of relief from manual process.


Вариант с гуглопочтой был отвергнут первым, по причине того, что человек отказался привязывать контакты к аккаунту гугла, резона я в этом не видел, но не спрашивал — у каждого свои тараканы.
2

Information

Rating
Does not participate
Registered
Activity