|
|
  |
STM3210X_LD_VL, табличная инициализация периферии |
|
|
|
Jan 26 2013, 20:43
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Цитата(ReAl @ Jan 27 2013, 02:37)  И ещё команда записи 1-ки (вместе с командой записи 0 полезны для bit-band области). Ну и подэкономить можно на вариации аргумента для записи uint8_t/uint16_t/uint32_t. Только это все интерпретатор утолщает, дольше ждать, когда прибыль пойдёт. Да, тут так сразу не угадаешь  Думаю, после пары-тройки байтовых команд уже будет выигрыш от спец-варианта. Цитата(ReAl @ Jan 27 2013, 02:37)  А у CM0 обращение по невыровненному бывает? А то ведь это имеет смысл для мелких кристаллов. STM3210X_LD_VL - это M3 всё же. Да и вообще, Паша утоптал команду в адрес (я написал, а потом таки удосужился скачать и посмотреть предмет обсуждения :-) )
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Jan 26 2013, 20:45
|
;
     
Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509

|
Цитата(ReAl @ Jan 27 2013, 00:37)  Надо уменьшать интерпретатор :-) Ради такого дела можно и на асме выписать :-) Или switch заменить на массив меток, привязамшись к GCC Или просто лишние сущности выкинуть: чтение из порта и запись в переменную по указателю и по дескриптору, уже легче станет. ps Физика жанра: вот я сейчас пишу одну штучку, дык там надо вначале по ресету твердо назначить некоторые пины в неактивное состояние, чтобы не бросать силовой модуль, потом уже строить клоки, потом вернуться к пинам, кой-чего переключить на ацп, потом слегка протестировать окружающую обстановку, а потом еще раз вернуться к пинам а закончить инит. Пока пишу традиционно, чтобы иметь отправную точку.
Сообщение отредактировал _Pasha - Jan 26 2013, 21:01
|
|
|
|
|
Jan 26 2013, 20:55
|
Гуру
     
Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454

|
Хоть плачь  ... стандартный вариант в регистр записывается адрес в регистр записываются данные сохраняются данные по адресу интерпритаторый варинат выбирается команда-адрес выбираются данные проводиться декодировка команды и вызов функции сохранения данных по адресу сохраняются данные по адресу декодировка - это одна функция ее не считаем, это постоянная издержка которая размажется на кучу команд и пропадет. Но сохранения данных по адресу остается, данные в регистр все равно должны попасть, и выборка команды и данных тоже остается и вроде они занимают столько же сколько сохранения адреса и данных в стандартном варианте... чего я не понимаю  ?
|
|
|
|
|
Jan 26 2013, 21:44
|
Гуру
     
Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454

|
ну все я понял в чем маза. это короче разница такая же как между int arr[3]; arr[0]=0; arr[1]=1; arr[2]=2; и for(int i=0;i<3;i++) arr[i] = i; Спасибо за интересный опыт. Чет я правда долго втыкал в фактически очевидные вещи...
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|