|
FAT16/32 для ARM, FatFS, efs писали PC-программисты |
|
|
|
Sep 12 2012, 14:33
|
Местный
  
Группа: Свой
Сообщений: 207
Регистрация: 26-01-06
Из: СПб
Пользователь №: 13 659

|
Цитата(aaarrr @ Sep 12 2012, 18:18)  Если бы код файловой системы преимущественно состоял из подобных операций, тогда еще можно было бы понять Ваше удивление. Но на деле их мало, выполняются достаточно редко. Так зачем пытаться отжать пол-копейки, усложняя при этом код? в FatFs их много, и это операции деления на степень 2, которые просто заменяются сдвигом. Если в остальном проекте нет операций деления то нет и смысла тащить для этого библиотеку из за избыточности в реализации файловой системы. Да и просто когда в коде встречается abc/4 вместо abc>>2 это как то неприятно :-)
|
|
|
|
|
Sep 12 2012, 20:08
|

Ally
     
Группа: Модераторы
Сообщений: 6 232
Регистрация: 19-01-05
Пользователь №: 2 050

|
Цитата(Sagittarius @ Sep 12 2012, 17:04)  К проекту на LPC2378 надо подключить FAT16/32 на SD. Функции для самой SD написал, выбираю библиотеку файловой системы...
Неприятно удивило использование операций деления и взятия остатка от деления вместо сдвигов и наложения маски... Keil умножения и деления на степени двойки однозначно поменяет на сдвиги автоматически. Лучшая библиотека, ИМХО, будет от Micrium-а. Сравнивал по скорости и стабильности с двумя другими коммерческими. Сравнивать лучше на хорошо изношенных SD картах (после записи и стирания 1000 и более файлов). Тогда все особенности FS ярче проявляются.
|
|
|
|
|
Sep 16 2012, 20:26
|
Гуру
     
Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521

|
Цитата(AlexandrY @ Sep 12 2012, 23:08)  Keil умножения и деления на степени двойки однозначно поменяет на сдвиги автоматически. IAR также. Причём, даже сложнозапутанные, совсем не явные. Я недавно столкнулся с куском дерьмокода. Показал ребятам, как нельзя делать. Переписал, как правильно ... Кроме красоты, сэкономил пару байт. На приличном куске. Не поверил. Переписывал несколько раз, самыми разными способами. Результат практически не менялся.
|
|
|
|
|
Sep 17 2012, 06:20
|
Местный
  
Группа: Свой
Сообщений: 207
Регистрация: 26-01-06
Из: СПб
Пользователь №: 13 659

|
Цитата(SasaVitebsk @ Sep 17 2012, 00:26)  IAR также. Причём, даже сложнозапутанные, совсем не явные. Если значение известно при компиляции то да, но если делитель берется из переменной, то уже вызов udiv, udivmod. То что в этой переменной будет только степень 2 компилятор предугадать уже не может. Или такое выражение (из FatFS): if (ifptr > 0 && (ofs - 1) / bcs >= (ifptr - 1) / bcs ){...} деление вызывается 2 раза. Так что пока пользую FatFS, потом руками все поправлю.
|
|
|
|
|
Sep 26 2012, 19:58
|
Частый гость
 
Группа: Участник
Сообщений: 147
Регистрация: 18-05-12
Пользователь №: 71 915

|
Цитата армы давно деление на уровне инструкций имеют не все.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|