|
Сопоставление проектов С и АСМ, Немного цифр |
|
|
|
 |
Ответов
|
Feb 20 2008, 18:49
|
;
     
Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509

|
Цитата(defunct @ Feb 20 2008, 17:51)  Стиль значит асмовый используется.. Попробуйте писАть на С, а не на asm сишными словами. Одинаковые значения в eeprom тоже никто не заставляет писать, в функции записи байта сделать вычитку ячейки, совпадает с тем что пишем - выход. 1. Дописываю тот же кусок кода на асме. Для сравнения. Получается в полновесном варианте, со всеми обработками ошибок, с поиском правильной команды и с таблицей - меньше 200 байт. Завтра выложу в аттаче, дабы не превращать тему в "кодовый флуд". По поводу "писАть на С" - я "С" терпеть не могу еще с 1992 года  Проблемы-то начинаются с обращения к памяти программ за данными. Этот процесс нигде не автоматизирован, отсюда сложности. 2. Переопределять стандартные функции НЕ ХОЧУ. Цитата(SasaVitebsk @ Feb 20 2008, 19:25)  Не могу сказать, что я точно понял смысл, но попробую. Хотя если из другой оперы - то извиняй. (Мне кажется я делал что-то подобное) Смысл: Хранение в девайсе настроечных параметров и обращение к ним, например, через команды по последовательному порту. Цитата ... он свой диспетчер кучи написал и работает с занятием/освобождением весьма грамотно. У меня, принципиально, возможны проколы в данном месте - я это знаю. Вот! Там, где дело касается ОЗУ - ессно "С" выиграет.
|
|
|
|
|
Feb 20 2008, 21:06
|
Гуру
     
Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521

|
Цитата(_Pasha @ Feb 20 2008, 22:49)  Проблемы-то начинаются с обращения к памяти программ за данными. Этот процесс нигде не автоматизирован, отсюда сложности. 2. Переопределять стандартные функции НЕ ХОЧУ. Смысл: Хранение в девайсе настроечных параметров и обращение к ним, например, через команды по последовательному порту. Вот! Там, где дело касается ОЗУ - ессно "С" выиграет. Никаких проблем при обращении к памяти программ за данными я не заметил. Обращаешься так же как и к обычной переменной. Более того код получается очень эффективным. Пересылать абсолютно ничего не надо. По крайней мере в IAR. В редких случаях, когда идут разнотипные данные компилятору приходится явно указывать что идёт обращение к flash. Например Код // Знакогенераторы const void __flash *symbol[MAX_FONTS] = {&fnt0_6x8,&fnt1_8x8,&fnt2_10x10,&fnt3_11x13,&fnt4_9x14,&fnt5_16x16,&fnt6_16x16,&fnt7_12x13,&fnt8_16x15,&fnt9_14x16}; .... uint8_t __flash *addr; ..... addr = ((uint8_t __flash *)symbol[tekfonts])+(Znak*Fonts[tekfonts][1]); ..... А обычно и этого делать не приходится Код // структура данных по символам struct CharZnak { uint16_t sm; // Смещение от начала фонта uint8_t width; // Ширина символа };
//extern uint16_t __checksum; // CHECKSUM; //const __flash uint16_t EndFlashAdr @0xe5 = & __checksum;
extern const uint8_t __flash Fonts[MAX_FONTS][2]; extern const __flash struct CharZnak struct_fnt[MAX_FONTS-2][223]; .... symbolx=struct_fnt[tekfonts-2][Znak].width + tekkern; Вот пример компиляции Код 1038 symbolx=struct_fnt[tekfonts-2][Znak].width + tekkern; \ 0000002C .... LDI R30, LOW((struct_fnt - 1336)) \ 0000002E .... LDI R31, HIGH((struct_fnt - 1336)) \ 00000030 5221 SUBI R18, 33 \ 00000032 E003 LDI R16, 3 \ 00000034 9F02 MUL R16, R18 \ 00000036 0DE0 ADD R30, R0 \ 00000038 1DF1 ADC R31, R1 \ 0000003A E90D LDI R16, 157 \ 0000003C E012 LDI R17, 2 \ 0000003E 9F14 MUL R17, R20 \ 00000040 2D10 MOV R17, R0 \ 00000042 9F04 MUL R16, R20 \ 00000044 0D11 ADD R17, R1 \ 00000046 0DE0 ADD R30, R0 \ 00000048 1FF1 ADC R31, R17 \ 0000004A 9104 LPM R16, Z \ 0000004C 0F06 ADD R16, R22 \ ??ZnakWidth_1:
|
|
|
|
Сообщений в этой теме
SasaVitebsk Сопоставление проектов С и АСМ Feb 17 2008, 20:18 _Pasha Для меня лично есть одно НО:
вот я использую мульт... Feb 18 2008, 07:58 Dog Pawlowa Цитата(_Pasha @ Feb 18 2008, 11:58) Для м... Feb 19 2008, 06:54  _Pasha Цитата(Dog Pawlowa @ Feb 19 2008, 09:54) ... Feb 19 2008, 07:59   Dog Pawlowa Цитата(_Pasha @ Feb 19 2008, 11:59) Продо... Feb 19 2008, 10:42    _Pasha Цитата(Dog Pawlowa @ Feb 19 2008, 13:42) ... Feb 19 2008, 10:57 KRS Это все не показатель.
Если код на С заточить напр... Feb 18 2008, 08:32 SasaVitebsk 2 _pasha.
Да с наработками не хочется расставаться... Feb 18 2008, 15:45 Qwertty Цитата(SasaVitebsk @ Feb 18 2008, 18:45) ... Feb 18 2008, 18:33  SasaVitebsk Цитата(Qwertty @ Feb 18 2008, 22:33) Изви... Feb 18 2008, 20:17 Rst7 Цитатаи использовать его фичи:#pragma inline=force... Feb 18 2008, 16:19 Т.Достоевский ИМХО. Написать С код соизмеримый с асмом можно, но... Feb 18 2008, 23:25 IgorKossak Цитата(Т.Достоевский @ Feb 19 2008, 01:25... Feb 19 2008, 06:37 SasaVitebsk Цитата(Т.Достоевский @ Feb 19 2008, 03:25... Feb 19 2008, 11:42  _Pasha Цитата(SasaVitebsk @ Feb 19 2008, 14:42) ... Feb 19 2008, 12:04 Igor26 ЦитатаНаписать С код соизмеримый с асмом можно, но... Feb 19 2008, 06:45 Rst7 ЦитатаА вот интеретно, использовали ли Вы такие пр... Feb 19 2008, 06:50 forever failure Цитата(SasaVitebsk @ Feb 19 2008, 16:42) ... Feb 19 2008, 13:13 SasaVitebsk Цитата(forever failure @ Feb 19 2008, 17... Feb 19 2008, 17:00 _Pasha Теперь немного о другом. Рискую утомить читателя, ... Feb 20 2008, 08:15 defunct Цитата(_Pasha @ Feb 20 2008, 10:15) Могу ... Feb 20 2008, 14:51 SasaVitebsk Не могу сказать, что я точно понял смысл, но попро... Feb 20 2008, 16:25 _Pasha Вот это совсем другое дело!
Че-то WINAVR торм... Feb 21 2008, 01:19 AHTOXA Цитата(_Pasha @ Feb 21 2008, 06:19) Вот э... Feb 21 2008, 07:20  _Pasha Цитата(AHTOXA @ Feb 21 2008, 10:20) WINAV... Feb 21 2008, 07:34   defunct Цитата(_Pasha @ Feb 21 2008, 09:34) Блин,... Feb 21 2008, 11:52    _Pasha Вернемся к нашей баранине. "Не умеешь-научим,... Feb 21 2008, 16:57     singlskv Цитата(_Pasha @ Feb 21 2008, 19:57) Кодvo... Feb 21 2008, 17:49      _Pasha Цитата(singlskv @ Feb 21 2008, 20:49) Нес... Feb 22 2008, 07:41 ReAl Цитата(_Pasha @ Feb 21 2008, 03:19) Вот э... Feb 21 2008, 08:43  singlskv Цитата(ReAl @ Feb 21 2008, 11:43) Ну изви... Feb 21 2008, 22:37   Petka Цитата(singlskv @ Feb 22 2008, 01:37) Воп... Feb 22 2008, 07:25    singlskv Цитата(Petka @ Feb 22 2008, 10:25) Велоси... Feb 22 2008, 09:45 _Pasha Цитата(defunct @ Feb 21 2008, 14:52) стил... Feb 21 2008, 19:09 Artak Ребята, может бить мой вопрос покажетса смехотwорн... Feb 21 2008, 23:25 ReAl Цитата(Artak @ Feb 22 2008, 01:25) На C п... Feb 22 2008, 15:27 Rst7 ЦитатаА есть вообще грамотный способ решения таких... Feb 22 2008, 06:29 Artak Цитата(Rst7 @ Feb 22 2008, 10:29) В IAR... Feb 26 2008, 20:26 _Pasha Теперь про асм.
В контексте многопоточного програм... Feb 22 2008, 10:47 _Pasha В общем, наигрался я с "С". Память закан... Feb 22 2008, 23:10 defunct Цитата(_Pasha @ Feb 23 2008, 01:10) В общ... Feb 22 2008, 23:37 singlskv Цитата(_Pasha @ Feb 23 2008, 02:10) В общ... Feb 22 2008, 23:55  Alex B._ Цитата(singlskv @ Feb 23 2008, 02:55) я н... Feb 23 2008, 00:03   singlskv Цитата(Alex B._ @ Feb 23 2008, 03:03) хм,... Feb 23 2008, 00:08  defunct Цитата(singlskv @ Feb 23 2008, 01:55) Вот... Feb 23 2008, 00:10   singlskv Цитата(defunct @ Feb 23 2008, 03:10) А чт... Feb 23 2008, 00:43    defunct Цитата(singlskv @ Feb 23 2008, 02:43) Как... Feb 23 2008, 01:10     singlskv Цитата(defunct @ Feb 23 2008, 04:10) Я ко... Feb 24 2008, 18:47      SasaVitebsk Цитата(singlskv @ Feb 24 2008, 22:47) Ска... Feb 24 2008, 19:50       singlskv Цитата(SasaVitebsk @ Feb 24 2008, 22:50) ... Feb 24 2008, 22:23        SasaVitebsk Цитата(singlskv @ Feb 25 2008, 02:23) Уве... Feb 25 2008, 13:23      defunct Цитата(singlskv @ Feb 24 2008, 20:47) Ска... Feb 24 2008, 21:03 SasaVitebsk А мне просто супер нравится С. По-моему, для МК эт... Feb 23 2008, 00:58 SasaVitebsk Из приведенного мной первого поста видно, что прои... Feb 23 2008, 11:09 Rst7 ЦитатаpChan->vAverage = (pChan->vSum + 4) ... Feb 23 2008, 20:18 defunct Цитата(Rst7 @ Feb 23 2008, 22:18) Мне дру... Feb 24 2008, 04:54 Rst7 Все... Туплю. Уже и ответ пространный написал, хор... Feb 24 2008, 10:40 Непомнящий Евгений По-моему, с heap основная проблема в том, как расс... Feb 26 2008, 09:29 singlskv Цитата(Непомнящий Евгений @ Feb 26 2008, 12... Feb 26 2008, 10:39  SasaVitebsk Цитата(singlskv @ Feb 26 2008, 14:39) Про... Feb 26 2008, 11:50 defunct Цитата(Непомнящий Евгений @ Feb 26 2008, 11... Feb 26 2008, 11:21
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|