-
- Насколько я помню такое невозможно сделать в компиляторах, которые не знают что такое стек. Это было актуально для микроконтроллеров PIC16/18(компилятор HI-TECH) в которых стек возврата сделан аппаратно и локальные переменные не располагались на A_F(591 знак., 09.02.2011 16:56, )
- Я недавно делал клавиатуру и светодиодную индикацию к прибору. Там все просто и сделано на сдвиговых регистрах. В прерывании переполнения таймера (которое возникает с определенным периодом) вызываю функцию, которая выдвигает (и одновременно Двоешник(182 знак., 09.02.2011 10:36)
- Вы вопрос неправильно поняли - testerplus(09.02.2011 12:13)
- в вызове подпрограммы из прерывания криминала особого нет. скорее всего в таких советах умеются ввиду причины связанные с дополнительной работой со стеком (как заметил koyodza) или потенциальные проблемы при повторном вызове нереентерабельных Snaky(72 знак., 08.02.2011 08:33)
- Как-то вызывал всегда и не задумывался. А почему нельзя, там написано? - Kit(07.02.2011 21:09)
- Не надо чушь всякую читать. - fk0(07.02.2011 21:03)
- "подстановка байт-кода в обработчик прерывания" - это, простите, кто? - Скрипач(07.02.2011 20:17)
- Может и не так выразился. По терминологии одного человека-управляемый вектор прерывания. Индексный переход. Считывание индекса и переход по нему. Что-то наподобие этого => - mazur(07.02.2011 20:24, ссылка)
- Здесь это принято называть "вызов функции по-указателю". - fk0(07.02.2011 21:14)
- Точно не case? - Скрипач(07.02.2011 21:23)
- не, switch-case не всегда превращается в таблицу переходов. Короткие вообще обычно так и остаются связкой условных переходов, типа развёрнутого if-else-if - koyodza(07.02.2011 21:26)
- Ну да! :) Компилятор Си оптимизирует генерируемый код. Пара if-проверок "дешевле" проверки границ, подготовки индексного перехода и jmp. Только и всего. Скрипач(60 знак., 07.02.2011 21:33)
- именно оптимизирует. Но товарищ упорно не хочет бросать ассемблер. Он, видать, для него как чемодан без ручки: и бросить жалко, и тащить тяжело koyodza(165 знак., 07.02.2011 21:38)
- Ну тогда норм. А то у меня на "байт-код" первая ассоциация - java-интерпретатор :) - Скрипач(07.02.2011 21:41)
- именно оптимизирует. Но товарищ упорно не хочет бросать ассемблер. Он, видать, для него как чемодан без ручки: и бросить жалко, и тащить тяжело koyodza(165 знак., 07.02.2011 21:38)
- Ну да! :) Компилятор Си оптимизирует генерируемый код. Пара if-проверок "дешевле" проверки границ, подготовки индексного перехода и jmp. Только и всего. Скрипач(60 знак., 07.02.2011 21:33)
- не, switch-case не всегда превращается в таблицу переходов. Короткие вообще обычно так и остаются связкой условных переходов, типа развёрнутого if-else-if - koyodza(07.02.2011 21:26)
- Точно не case? - Скрипач(07.02.2011 21:23)
- во времена ВМ80 и Z80 был очень популярен самомодифицирующийся код. Не хотите попробовать? koyodza(53 знак., 07.02.2011 20:48)
- Получится. Vallav(45 знак., 08.02.2011 10:31)
- Какие??? - fk0(08.02.2011 10:37)
- DMB - Data Memory Barrier Vallav(79 знак., 08.02.2011 18:08)
- Ссылка на даташит? Какое это отношение имеет к AVR? - fk0(09.02.2011 13:36)
- Тьфу ты, с АРМами перепутал. Vallav(30 знак., 09.02.2011 16:22)
- Атмеловские АРМы - это AVR с ядром PIC16, пора бы знать уже - MBedder(09.02.2011 16:27)
- пик-контроллеры семейства AVR (C) - fk0(09.02.2011 22:12)
- Атмеловские АРМы - это AVR с ядром PIC16, пора бы знать уже - MBedder(09.02.2011 16:27)
- Тьфу ты, с АРМами перепутал. Vallav(30 знак., 09.02.2011 16:22)
- Ссылка на даташит? Какое это отношение имеет к AVR? - fk0(09.02.2011 13:36)
- На слово "комманды" реагировать надо "Каккие?" - General(08.02.2011 10:42)
- DMB - Data Memory Barrier Vallav(79 знак., 08.02.2011 18:08)
- Какие??? - fk0(08.02.2011 10:37)
- Это да, кстати, нехило экономит байты. Но это всё фигня. Динамическая генерация высоко-оптимизированного по-скорости кода -- вот это дааа. - fk0(07.02.2011 21:14)
- у нас Evgeny_CD спец по этой части :=) - koyodza(07.02.2011 21:19)
- Получится. Vallav(45 знак., 08.02.2011 10:31)
- Компилятор Си собирает "такое" из обычного switch. Или нет? - Скрипач(07.02.2011 20:34)
- Здесь это принято называть "вызов функции по-указателю". - fk0(07.02.2011 21:14)
- Может и не так выразился. По терминологии одного человека-управляемый вектор прерывания. Индексный переход. Считывание индекса и переход по нему. Что-то наподобие этого => - mazur(07.02.2011 20:24, ссылка)
- тут несколько моментов koyodza(668 знак., 07.02.2011 20:15)
- "Если нельзя, но очень хочется, то можно" (с) Главное - чтобы времени хватало. Можно "заинлайнить" (на С). - Vladimir Ljaschko(07.02.2011 19:59)
- "заинлайнить" можно подробнее? - mazur(07.02.2011 20:04)
- тута - Vladimir Ljaschko(07.02.2011 20:07, ссылка)
- Владимир, если не трудно, своими словами. Доходчиво. - mazur(07.02.2011 20:11)
- Функция становится макросом - операторы тела функции вставляются в место ее вызова, сохранение и восстановление программного счетчика исключаются. - Vladimir Ljaschko(07.02.2011 20:14)
- Но на самом деле это проценты потерь времени. Правило не включать функции в прерывания весьма условное. Сам я включаю, т.к. это существенно повышает читаемость программы. - Vladimir Ljaschko(07.02.2011 20:17)
- Иногда эти проценты ох, как важны! aleksey_gregul(201 знак., 08.02.2011 10:58)
- На голом ассемблере - как на тракторе - я выделяю кучку регистров для работы только в прерываниях, maik-vs(509 знак., 08.02.2011 16:57)
- Инлайн имеет смысл, если функция в другом модуле -- из-за оптимизации. Но ассемблеристам это не важно. - fk0(07.02.2011 21:17)
- Иногда эти проценты ох, как важны! aleksey_gregul(201 знак., 08.02.2011 10:58)
- Но на самом деле это проценты потерь времени. Правило не включать функции в прерывания весьма условное. Сам я включаю, т.к. это существенно повышает читаемость программы. - Vladimir Ljaschko(07.02.2011 20:17)
- Функция становится макросом - операторы тела функции вставляются в место ее вызова, сохранение и восстановление программного счетчика исключаются. - Vladimir Ljaschko(07.02.2011 20:14)
- Владимир, если не трудно, своими словами. Доходчиво. - mazur(07.02.2011 20:11)
- тута - Vladimir Ljaschko(07.02.2011 20:07, ссылка)
- "заинлайнить" можно подробнее? - mazur(07.02.2011 20:04)