|
Поменять местами биты в байте. |
|
|
|
 |
Ответов
|
May 12 2007, 02:01
|

Местный
  
Группа: Свой
Сообщений: 208
Регистрация: 6-07-04
Из: Полтава
Пользователь №: 279

|
Цитата(defunct @ May 12 2007, 03:15)  Позвольте с вами несогласиться. Переносимость в большой мере зависит от нас самих, если хотите чтобы код был переносимым - пишите его таким сразу. ;> Если стоит задача переносимости, то - да. В противном случае - не обязательно. Цитата(defunct @ May 12 2007, 03:15)  Как так писать - создать прослойку между железом и программой - операционку. Писать программу уже не под железо а под ОС. То что код будет невсегда максимально эффективным, кого это волнует? Опять же, зависит от поставленой задачи. "Толстые" задачи на "толстых" чипах удобнее решать таким образом. Но 128-ю Мегу применять там, где и Тиня управится, это как бы из пушки да по воробьям. А тут уж и ужиматься приходится. Инструментов для создания программы фактически всего-то два - ассемблер да Си. Ассемблер позволяет дать максимально эффективный код, но со значительной затратой времени. Си, при соответствующем подходе, может дать код не намного избыточнее, но создание программы идет значительно быстрее, поэтому является вполне разумным компромиссом и для мелких чипов. Вот тут, как раз, и нужны наработанные приемы получения компактного кода, пускай даже в ущерб переносимости. "Кого ЭТО волнует?"©
|
|
|
|
|
May 12 2007, 02:42
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(kv_addr @ May 12 2007, 04:01)  Но 128-ю Мегу применять там, где и Тиня управится, это как бы из пушки да по воробьям. А тут уж и ужиматься приходится. Инструментов для создания программы фактически всего-то два - ассемблер да Си. Ассемблер позволяет дать максимально эффективный код, но со значительной затратой времени. Си, при соответствующем подходе, может дать код не намного избыточнее, но создание программы идет значительно быстрее, поэтому является вполне разумным компромиссом и для мелких чипов. Вот тут, как раз, и нужны наработанные приемы получения компактного кода, пускай даже в ущерб переносимости. Противоречие у Вас получается ;> C одной стороны Вы говорите о Tiny с 1-2-4Kb памяти, с другой говорите о затратах времени при написании программы на ассемблере. 2Kb на C заполнить - дурное дело не хитрое - полчаса и вся память занята - это не просто сокращенные трудозатраты, это можно сказать их вообще нет. Но и функциональность такой программы в тиньке также получится "никакой". Хотите функциональности - будьте добры потрудитесь - либо то 8k-16k на C выдавить, либо, что сравнимо по трудозатратам - 1-2k ассемблере. При этом на ассемблере вы получите оптимальный вариант кода естессно непереносимый на другие платформы. На C поизвращавшись тоже втиснете нечто сравнимое по функциональности но не в 2k, а скажем в 4k, при этом получить мало того, что непереносимый код, так еще и неоптимальный. Не проще уже тогда сделать переносимый и поставить более толстый чип? Так что или asm в руки и программим тиньки, или C - но тогда уж начинаем с M16.
|
|
|
|
|
May 12 2007, 04:01
|

Местный
  
Группа: Свой
Сообщений: 208
Регистрация: 6-07-04
Из: Полтава
Пользователь №: 279

|
Цитата(defunct @ May 12 2007, 05:42)  Противоречие у Вас получается ;> C одной стороны Вы говорите о Tiny с 1-2-4Kb памяти, с другой говорите о затратах времени при написании программы на ассемблере. 2Kb на C заполнить - дурное дело не хитрое - полчаса и вся память занята - это не просто сокращенные трудозатраты, это можно сказать их вообще нет. Но и функциональность такой программы в тиньке также получится "никакой".
Хотите функциональности - будьте добры потрудитесь - либо то 8k-16k на C выдавить, либо, что сравнимо по трудозатратам - 1-2k ассемблере. При этом на ассемблере вы получите оптимальный вариант кода естессно непереносимый на другие платформы. На C поизвращавшись тоже втиснете нечто сравнимое по функциональности но не в 2k, а скажем в 4k, при этом получить мало того, что непереносимый код, так еще и неоптимальный. Не проще уже тогда сделать переносимый и поставить более толстый чип?
Так что или asm в руки и программим тиньки, или C - но тогда уж начинаем с M16. IMHO, ложное впечатление. Не так давно рисовал программу для одного измерительного прибора. Изначально предполагалось выполнить на Меге8 как минимум, хоть алгоритм не очень сложный, но громозкой таблица получалась. Проанализировав таблицу, увидел, что зависимость достаточно близка к корню 4-й степени. После извлечения корня зависимость получилась значительно линейнее, поэтому таблица, учитывая, что для вычисления промежуточных результатов была применена кусочно-линейная аппроксимация, оказалась совсем маленькой. Вычисления все целочисленные. Только там, где необходимо было, использовались long. Поэтому сама математика много места не заняла. В результате все уместилось на Тини26 и даже чуть-чуть места осталось. Просмотр ассемблерного листинга показал, что компилятор достаточно грамотно распорядился программной памятью и врядли чисто ассемблерный код оказался бы намного компактнее. Естественно, оптимизация по размеру была выбрана максимальной. Правда пришлось попробовать разные варианты сишного кода, и далеко не всегда более компактный сишный давал более компактный ассемблерный. Но в результате получилось все значительно быстрее и удобнее, чем если бы это всё выполнялось на ассемблере. Поэтому и для "тонких" чипов Си вполне идет. PS: Да, кстати, забить 2 килобайта на Си всякой хренью за полчаса действительно - дурное дело нехитрое. Вот разумно распорядиться - заметно дольше получается. Но все же - получается. А относительно ассемблера, я отнюдь не являюсь ассемблерофобом. Напротив, знать его и уметь на нем код писать считаю необходимым.
|
|
|
|
Сообщений в этой теме
ps1x Поменять местами биты в байте. May 9 2007, 09:43 zltigo Цитата(ps1x @ May 9 2007, 12:43) Допустим... May 9 2007, 10:22 ps1x Цитата(zltigo @ May 9 2007, 13:22) xxx = ... May 9 2007, 10:36  zltigo Цитата(ps1x @ May 9 2007, 13:36) да нет, ... May 9 2007, 10:46  haker_fox Цитата(ps1x @ May 9 2007, 18:36) да нет, ... May 9 2007, 11:47   ps1x Цитата(haker_fox @ May 9 2007, 14:47) А к... May 9 2007, 12:16    haker_fox Цитата(ps1x @ May 9 2007, 21:16) У меня е... May 11 2007, 02:41 Serg76 Цитата(zltigo @ May 9 2007, 13:22) xxx = ... May 9 2007, 12:23  ps1x Цитата(Serg76 @ May 9 2007, 15:23) Как мн... May 9 2007, 13:24   Serg76 Цитата(ps1x @ May 9 2007, 16:24) Я это сд... May 9 2007, 14:44    zltigo Цитата(Serg76 @ May 9 2007, 17:44) ....то... May 9 2007, 15:16    Edmundo Цитата(Serg76 @ May 9 2007, 18:44) 1. Сдв... May 9 2007, 15:30    IgorKossak Цитата(Serg76 @ May 9 2007, 17:44) Прошу ... May 10 2007, 20:36 Laksus Цитата(Serg76 @ May 9 2007, 14:23) Как мн... May 9 2007, 15:00 xemul Тупое решение в лоб
Кодt = x;
x &= 0x3f;
if... May 9 2007, 15:27 Visor Есть такой флаг "Т", вот через него можн... May 10 2007, 13:07 kv_addr Цитата(Visor @ May 10 2007, 16:07) Есть т... May 11 2007, 00:34  singlskv Цитата(kv_addr @ May 11 2007, 04:34) На а... May 11 2007, 15:27   kv_addr Цитата(singlskv @ May 11 2007, 18:27) Дли... May 11 2007, 15:50    singlskv Цитата(kv_addr @ May 11 2007, 19:50) Пыта... May 11 2007, 16:39     kv_addr Цитата(singlskv @ May 11 2007, 19:39) Дык... May 11 2007, 20:13      singlskv Цитата(kv_addr @ May 12 2007, 00:13) IAR-... May 11 2007, 21:05       kv_addr Цитата(singlskv @ May 11 2007, 23:20) А у... May 11 2007, 21:07        singlskv Цитата(kv_addr @ May 12 2007, 01:07) Пров... May 11 2007, 21:22         kv_addr Цитата(singlskv @ May 12 2007, 00:22) А в... May 11 2007, 22:35         Александр Куличок Цитата(singlskv @ May 12 2007, 00:22) А в... May 12 2007, 15:33          singlskv Цитата(Александр Куличок @ May 12 2007, 19... May 12 2007, 21:12 Punk Цитата(ps1x @ May 9 2007, 12:43) Допустим... May 10 2007, 14:06 Dog Pawlowa Два порта контроллера закольцевать еще не предлага... May 10 2007, 14:20 ae_ Цитата(ps1x @ May 9 2007, 18:43) Допустим... May 11 2007, 02:04 kv_addr Цитата(ae_ @ May 11 2007, 05:04) асм, три... May 11 2007, 14:47    defunct Цитата(kv_addr @ May 12 2007, 06:01) IMHO... May 12 2007, 12:16 singlskv Видимо самый быстрый вариант на С будет таким:
Код... May 12 2007, 12:05 sensor_ua Цитатапрограммная реализация encoder'a/decoder... May 12 2007, 15:09 kv_addr Цитата(sensor_ua @ May 12 2007, 18:09) Ду... May 12 2007, 23:08 Александр Куличок ЦитатаВсе правильно, в варианте с битом 7, компиля... May 13 2007, 07:05
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|