13.12.2013, 12:37 | #1 |
Member
Регистрация: 16.11.2013
Сообщений: 32
Вес репутации: 0 |
Ардуино, оптимизация условия if()
добрый день.
немного оптимизирую код, на данном этапе хочу попробовать заменить "условия" след. образом #define BTN_A 1 #define BTN_B 2 #define BTN_C 3 #define BTN_D 4 if(BTN_PRESS == BTN_A) --> #define BTN_A 1 #define BTN_B 2 #define BTN_C 4 #define BTN_D 8 ... в коде инициализация (BTN_PRESS - это не макрос, а переменная, для дотошных пусть будет беззнаковая целая) BTN_PRESS = BTN_A BTN_PRESS = BTN_В BTN_PRESS = BTN_С etc... ... битовая проверка условия if(BTN_PRESS & BTN_A) ... все бы хорошо пока "идентификаторов нажатий" было мало, вмещалось в байт. дело дошло до: #define BTN_A 1 #define BTN_B 2 #define BTN_C 4 #define BTN_D 8 #define ... #define BTN_XXX 256 #define BTN_XXX 512 #define BTN_XXX 1024 #define ... то есть дело дошло до 2х байт, а так как Atmega328P 8-битный, то возможны "осложнения-утяжеления" перехода на подобное "битное условие" такое сокращение "процессорных команд и ускорение кода" в моем случае очень не помешает, практически необходимо ВОПРОСЫ: 1. правильно ли я думаю, что проверка 2х байтного условия действительно утяжеляет код или на это можно забить? 2. на сколько утяжеляет? 3. какие подводные камни? 4. и вообще, правильно ли я мыслю, в том ли направлении? 5. ну... какие вообще мысли по этому поводу п.с. я не монстр в программировании, поэтому с ассемблером не дружу, и на сколько "это" изменит машинный код пока не знаю :о) спасибо заранее. - проект собирается под Ардуино-IDE - контроллер Atmega328P - Linux, ну и все вытекающие моменты (NO WINDOWS) Последний раз редактировалось sunjob; 13.12.2013 в 13:32. |
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
|
|