|
|
 |
Ответов
|
Jun 25 2010, 13:56
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
QUOTE (ViKo @ Jun 25 2010, 16:43)  Это у вас ошибка в посте №18 Ну это да, предлог 'в отличие' и существительное в предложном падеже с предлогом 'в'  попутал. Я же говорю - забывается  . Язык не прост. Не 'C'  , ну и форум не филологический, а "сишный", к счастью. QUOTE (ViKo @ Jun 25 2010, 16:43)  Единственное, что я вынес из разговора - надо с указателем повозиться. А то, что ДВЕ операции деление и взятие остатка от деления замного будет, не вынесли
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jun 25 2010, 14:10
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
QUOTE (ViKo @ Jun 25 2010, 17:04)  О! А как... ? Ну, например, как у Genadi. И, если выбирать из двух, то тогда уж оставлять деление, а не остаток он него - много менее громоздко в подавляющем большинстве случаев.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jun 26 2010, 09:04
|

Нечётный пользователь.
     
Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417

|
Цитата(Genadi Zawidowski @ Jun 25 2010, 23:33)  После аппаратного (или программного) деления и частное и остаток обычно присутствуют в регистрах процессора и структура ldiv_t (div_t) эти самые регистры впрямую и отображает. Вот именно. Просто всё-таки нужно представлять себе, во что выливается операция / или %, даже если пишешь для x86, как вообще деление реализуется. Цитата(Genadi Zawidowski @ Jun 25 2010, 23:33)  Так было на x86. На ARM и AVR не интересовался. Да так же. Только для AVR в библиотеке компилятора есть функции для деления, которые вызываются и для /, %, только при этом берётся половина результата. А div просто переназначено на эту функцию, возвращающую на регистрах обе части результата деления. avr-gcc, stdlib.h Код /* __divmodhi4 and __divmodsi4 from libgcc.a */ extern div_t div(int __num, int __denom) __asm__("__divmodhi4") __ATTR_CONST__; extern ldiv_t ldiv(long __num, long __denom) __asm__("__divmodsi4") __ATTR_CONST__; Так что применение div и тут в два раза сокращает затраты времени на деление по сравнению с раздельной парой /, %. Оптимизатор сам не видит, что можно было бы вызвать еление один раз. Хотя для данной конкретной задачи для AVR другие способы побыстрее всё равно. Вариант с div, кажется, немного компактнее для случая, когда деление в программе всё равно есть и __divmod* всё равно линкуются.
--------------------
Ну, я пошёл… Если что – звоните…
|
|
|
|
|
Jun 26 2010, 09:23
|

Любитель
    
Группа: Свой
Сообщений: 1 864
Регистрация: 20-08-06
Из: Тольятти
Пользователь №: 19 695

|
Цитата(ReAl @ Jun 26 2010, 13:04)  Оптимизатор сам не видит, что можно было бы вызвать деление один раз. Да, я тоже замечал, что функция деления вызывается именно два раза (сначала остаток, потом деление), несмотря на то, что достаточно было бы единственного вызова. Хотя это было, вроде бы, ещё на AVR. Не знаю, как это будет компилироваться под кортекс и RealView.
|
|
|
|
Сообщений в этой теме
badik Вопрос С Jun 24 2010, 18:29 DRUID3 atoi()/itoa(); Или что-то отсюда... Jun 24 2010, 18:43 Genadi Zawidowski Тут или пользоваться sprintf (или её вариантами - ... Jun 24 2010, 18:57 ViKo В свое время я задавал такой же вопрос. Получил не... Jun 25 2010, 11:29 zltigo QUOTE (ViKo @ Jun 25 2010, 14:29) Сам нап... Jun 25 2010, 11:38  sonycman Цитата(zltigo @ Jun 25 2010, 15:38) Совет... Jun 25 2010, 12:15  ViKo Цитата(zltigo @ Jun 25 2010, 14:38) Совет... Jun 25 2010, 12:21 jorikdima Цитата(ViKo @ Jun 25 2010, 15:29) В свое ... Jun 25 2010, 12:17 defunct Цитата(ViKo @ Jun 25 2010, 14:29) Сам нап... Jun 25 2010, 16:48  ssvSerge Цитата(defunct @ Jun 25 2010, 19:48) Друг... Jun 25 2010, 17:26 zltigo QUOTE (sonycman @ Jun 25 2010, 15:15) Что... Jun 25 2010, 12:24 ViKo Цитата(zltigo @ Jun 25 2010, 15:24) ...ли... Jun 25 2010, 12:31  sonycman Цитата(ViKo @ Jun 25 2010, 16:31) Оставил... Jun 25 2010, 12:38   zltigo QUOTE (sonycman @ Jun 25 2010, 15:38) Осо... Jun 25 2010, 12:57    ViKo Цитата(zltigo @ Jun 25 2010, 15:57) В дан... Jun 25 2010, 13:06    sonycman Цитата(zltigo @ Jun 25 2010, 16:57) Ну дл... Jun 25 2010, 13:13     aaarrr Цитата(sonycman @ Jun 25 2010, 17:13) Нер... Jun 25 2010, 13:14 ViKo Цитата(zltigo @ Jun 25 2010, 15:24) лучше... Jun 25 2010, 12:50  zltigo QUOTE (ViKo @ Jun 25 2010, 15:50) У вас е... Jun 25 2010, 13:28   ViKo Цитата(zltigo @ Jun 25 2010, 16:28) как и... Jun 25 2010, 13:34    zltigo QUOTE (ViKo @ Jun 25 2010, 16:34) нужно п... Jun 25 2010, 13:39     ViKo Цитата(zltigo @ Jun 25 2010, 16:39) Про ... Jun 25 2010, 13:43      aaarrr Цитата(ViKo @ Jun 25 2010, 17:43) И к код... Jun 25 2010, 14:49 aaarrr Просто как пример:
Кодunsigned int short2str(c... Jun 25 2010, 12:41     ViKo Цитата(Genadi Zawidowski @ Jun 25 2010, 23... Jun 25 2010, 21:29      demiurg_spb Цитата(ReAl @ Jun 26 2010, 13:04) Так что... Jun 27 2010, 18:51 sonycman Цитата(zltigo @ Jun 25 2010, 17:56) А то,... Jun 25 2010, 14:55  zltigo QUOTE (sonycman @ Jun 25 2010, 17:55) Буд... Jun 25 2010, 16:30 Goodefine Когда то для дисплея (отсюда фиксированное число ц... Jun 25 2010, 16:19 ViKo Цитата(Goodefine @ Jun 25 2010, 19:19) vo... Jun 25 2010, 17:16 ViKo Пролистал K&R второе издание от корки до корки... Jun 25 2010, 19:15 aaarrr Цитата(ViKo @ Jun 25 2010, 23:15) Найти б... Jun 25 2010, 19:20 dimka76 Цитата(ViKo @ Jun 25 2010, 23:15) Пролист... Jun 26 2010, 04:36 zltigo QUOTE (ViKo @ Jun 25 2010, 22:15) Пролист... Jun 26 2010, 08:11  ViKo Цитата(zltigo @ Jun 26 2010, 11:11) Не об... Jun 26 2010, 09:08   zltigo QUOTE (ViKo @ Jun 26 2010, 12:08) А я для... Jun 26 2010, 09:18 sigmaN K&R не Ымбеддеры. А zltigo дело говорит вам. К... Jun 25 2010, 19:27 ViKo Покопался в своих проектах, нашел преобразование д... Jun 25 2010, 19:52 Непомнящий Евгений В свое время написал такое:
CODE
/**
* "Указ... Jun 26 2010, 09:16 ViKo Следуя рекомендациям, слегка модернизировал код.
К... Jun 26 2010, 10:24 ssvSerge Цитата(ViKo @ Jun 26 2010, 14:24) Следуя ... Jun 26 2010, 11:31 zltigo QUOTE (ViKo @ Jun 26 2010, 13:24) Для все... Jun 26 2010, 15:05  ViKo Цитата(zltigo @ Jun 26 2010, 18:05) // За... Jun 26 2010, 16:28   zltigo QUOTE (ViKo @ Jun 26 2010, 19:28) Sign - ... Jun 26 2010, 16:40   aaarrr Цитата(ViKo @ Jun 26 2010, 20:28) 2 aaarr... Jun 26 2010, 16:51 ViKo 2 ssvSerge
В ваших алгоритмах число записывается з... Jun 26 2010, 13:55 ssvSerge Цитата(ViKo @ Jun 26 2010, 16:55) В алгор... Jun 26 2010, 14:19  ViKo Цитата(ssvSerge @ Jun 26 2010, 17:19) ну ... Jun 26 2010, 14:42   ssvSerge Цитата(ViKo @ Jun 26 2010, 18:42) для мен... Jun 26 2010, 15:12   aaarrr Цитата(ViKo @ Jun 26 2010, 18:42) В данны... Jun 26 2010, 15:14 ViKo Спасибо всем! На сегодня и завтра - умолкаю. ... Jun 26 2010, 17:00 sonycman Цитата(ViKo @ Jun 26 2010, 21:00) Возраду... Jun 27 2010, 17:02 badik Господа всем огромный привет, ни как не думал, что... Jun 28 2010, 17:43 ViKo Прежде, чем писать новое, изучил в отладчике работ... Jun 28 2010, 21:09 zltigo QUOTE (ViKo @ Jun 29 2010, 00:09) Заносит... Jun 28 2010, 21:33  ViKo Цитата(zltigo @ Jun 29 2010, 00:33) Их у ... Jun 28 2010, 21:57   zltigo QUOTE (ViKo @ Jun 29 2010, 00:57) Перед ... Jun 28 2010, 22:03    ViKo 2 zltigo
Непременно.
Выставил две "галки... Jun 29 2010, 08:29 ViKo Кодvoid itoad(int number, uint8_t *string... Jun 29 2010, 13:48 Сергей Борщ Цитата(ViKo @ Jun 29 2010, 16:48) Код *... Jun 29 2010, 14:18  ViKo Цитата(Сергей Борщ @ Jun 29 2010, 17:18) ... Jun 29 2010, 14:29  zltigo QUOTE (Сергей Борщ @ Jun 29 2010, 17:18) ... Jun 29 2010, 14:34   ViKo Цитата(zltigo @ Jun 29 2010, 17:34) *(uin... Jun 29 2010, 14:39    zltigo QUOTE (ViKo @ Jun 29 2010, 17:39) Кавычки... Jun 29 2010, 14:45   ViKo Цитата(zltigo @ Jun 29 2010, 17:34) Код ... Jun 29 2010, 17:23    zltigo QUOTE (ViKo @ Jun 29 2010, 20:23) Так - н... Jun 29 2010, 17:40     ViKo Цитата(zltigo @ Jun 29 2010, 20:40) Код ... Jun 29 2010, 18:29      zltigo QUOTE (ViKo @ Jun 29 2010, 21:29) В смысл... Jun 29 2010, 18:38       ViKo Цитата(zltigo @ Jun 29 2010, 21:38) Вот к... Jun 29 2010, 19:52        zltigo QUOTE (ViKo @ Jun 29 2010, 22:52) Во всех... Jun 29 2010, 21:13  ViKo Цитата(Сергей Борщ @ Jun 29 2010, 17:18) ... Jul 1 2010, 08:55   zltigo QUOTE (ViKo @ Jul 1 2010, 10:55) Только в... Jul 1 2010, 11:57    ViKo Цитата(zltigo @ Jul 1 2010, 14:57) Это де... Jul 1 2010, 12:34     zltigo QUOTE (ViKo @ Jul 1 2010, 14:34) Давайте ... Jul 1 2010, 12:38      ViKo Цитата(zltigo @ Jul 1 2010, 15:38) Думае... Jul 1 2010, 12:52       zltigo QUOTE (ViKo @ Jul 1 2010, 14:52) Хочу зна... Jul 1 2010, 12:55        ViKo Цитата(zltigo @ Jul 1 2010, 15:55) Посчит... Jul 1 2010, 13:59         zltigo QUOTE (ViKo @ Jul 1 2010, 15:59) 2 zltigo... Jul 1 2010, 14:11         sonycman Цитата(ViKo @ Jul 1 2010, 17:59) А SDIV r... Jul 1 2010, 15:24 ViKo Выкладываю ваш вариант.
Последнее, что вы написали... Jun 30 2010, 08:00 ViKo "Шеф, все пропало!..."
По команде ... Jun 30 2010, 09:22 zltigo QUOTE (ViKo @ Jun 30 2010, 11:22) На всяк... Jun 30 2010, 19:02  ViKo Цитата(zltigo @ Jun 30 2010, 22:02) Ну ес... Jun 30 2010, 20:29   zltigo QUOTE (ViKo @ Jun 30 2010, 22:29) У вас в... Jun 30 2010, 21:14 ViKo 16-битовая версия (на основе 32-битовой)
Кодvoid ... Jun 30 2010, 11:26 MrYuran Вот никак не могу понять, почему никто до сих пор ... Jun 30 2010, 11:31 ViKo Цитата(MrYuran @ Jun 30 2010, 14:31) Вот ... Jun 30 2010, 11:35 ViKo Напоследок - проверил вариант с преобразованием в ... Jun 30 2010, 13:12 aaarrr Цитата(ViKo @ Jun 30 2010, 17:12) Получил... Jun 30 2010, 13:34  ViKo Цитата(aaarrr @ Jun 30 2010, 15:34) Ну, э... Jun 30 2010, 13:44 _Pasha Цитата(MrYuran @ Jun 30 2010, 14:31) Тяжё... Jun 30 2010, 21:42 ViKo Перепробовал все "извращения" со сравнен... Jul 2 2010, 09:07 ViKo Думаю, хуже не станет, если я доложу, что уменьшил... Jul 2 2010, 18:43
2 страниц
1 2 >
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|