Использование ИЛИ вместо сложения как минимум уберет условный переход и формирование переноса. Вообще в данном случае использование сложения незачем.
Да это понятно, я с "или" и начинал, просто уже всё подряд пробовал и последнее в форум и процитировал. С "или" у него даже хуже вышло, тоже с rlwa/rrwa (и ведь знает, гад, эти команды, почему не использовал их так, как я после двух дней чтения доки на STM8 смог?).
Вариант с разбивкой на байты и занесением через указатель... В принципе, можно слепить такой макрос LOAD_SFRW(var,sfraddr) и им пользоваться. Но там дальше с этой локальной переменной дальше вычисления идут, принудительно кидать её в память означает вязать руки оптимизатору. Хотя такому оптимизатору... Да и не люблю я такие привяки с тех пор, когда пришлось для AVOCET C51 15+ лет назад лепить
Код:
#define EQU(a,b) (((a)^(b))==0) if (EQU(a,b)) {...}
потому что на if (a==b) он такую жуть генерил... Неправильно это, так прогибаться перед компилятором. А через пару лет, когда его поправят -- опять макросы и привычки менять.
Во всех вариантах компилирутся в жуть с загрузкой PB_ODR в аккумулятор и разные вычисления вместо банального BCPL. Мало того, что длинно и долго, так ещё и неатомарно
Космики с резонансами выглядят лучше. IAR, конечно, допилят со временем, но...
_________________ Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
IAR придумал себе «виртуальные регистры» -- 16 байт в начале области короткой адресации, в смысле в самом начале ОЗУ, выделены в секцию .vregs, в которой размечено шестнадцать байтовых "регистров", накрывающихся восемью словными и четырьмя двухсловными. Везде, где не хватает A,X,Y -- используются эти виртуальные регистры.
Из-за этого на входе в обработчик прерываний стоит горсть push тих байтов вместо SUB SP, #сколько_надо_для_локальных_обработчика ...
Из-за этого контекст вырос, переключение задач (речь идёт о порте scmRTOS под STM8) резко удлинняется...
_________________ Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Использование модульных источников питания открытого типа широко распространено в современных устройствах. Присущие им компактность, гибкость в интеграции и высокая эффективность делают их отличным решением для систем промышленной автоматизации, телекоммуникационного оборудования, медицинской техники, устройств «умного дома» и прочих приложений. Рассмотрим подробнее характеристики и особенности трех самых популярных вариантов AC/DC-преобразователей MW открытого типа, подходящих для применения в промышленных устройствах - серий EPS, EPP и RPS представленных на Meanwell.market.
С виртуальными регистрами -- похоже, они решил так себе упростить жизнь, у AVR/MCS51/ARM/... регистров валом и середина компилятора может быть просто рассчитана на их наличие. Если так, а не какая-то умная задумка, которую я ещё не понял и не вижу от неё выиграша, то ждать улучшений не приходится, модель работы компилятора -- не оптимизатор, меняться не будет.
Да, кстати, показали космик, а резонанса нету?
_________________ Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
А может у IAR есть какая-то настройка, чтобы локальные переменные на стек кидались? Raisonance скачал, но не ставил, поскольку любовь к халяве на генетическом уровне заставила искать пилюлю, которая быстрее нашлась для космика. (Может и не понадобится, но "шоб було")) ЗЫ: А что мешает на другом компиляторе писать? (Хотя, если деньги "уплочены", то придется, иначе можно и триал от резонанса использовать, если кода не больше 32к).
_________________ - Если вы такие умные, то почему тогда строем не ходите? ἓν οἶδα ὅτι οὐδὲν οἶδα (с) Σωκράτης
А может у IAR есть какая-то настройка, чтобы локальные переменные на стек кидались?
Меняется только количество виртуальных регистров -- 12 или 16 байт. Исходя из того, что размер секции .vregs по map-е от этой настройки не зависит, я подозреваю, что у библиотеки на этот счёт может быть своё мнение (кстати, при «просьбе кинуть на стек» и библиотеки подменять нужно было бы).
По поводу IAR -- да никаких проблем, просто человек, попросивший меня «спортить» scmRTOS, просил IAR. Но без фанатизьмы, эта тема уже заставила задуматься
Мне так вообще всё равно, я в ближайшее время stm8 не собираюсь нигде ставить. Разве что
DrWatson писал(а):
можно и триал от резонанса использовать, если кода не больше 32к.
Юридический и технический вопросы. Юр: как там с триалом -- в серию можно на нём делать? Техн: оно только под win ?
Исключительно из соображений «чтобы не даром толочься вокруг stm8» мне сейчас есть куда поставить STM8L151 (нужны 12 бит АЦП и ЦАП), кода там врядли больше 8К будет. Но туда с тем же успехом и ~в те же деньги станет STM32F100. Компилироваться будет тем же gcc и зашиваться той же FT2232 и под той же убунтой, что и для STM32F103, который в том же изделии будет стоять. Да, у него и АЦП и ЦАП будут, но там удобнее и логичнее часть работы вынести на другую плату со своим микроконтроллером. Так что для оправдания возни с STM8 можно туда его поставить, но только если это не потребует большого дополнительного геморроя.
_________________ Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
С триалом коммерческие проекты, думаю вряд-ли. Насколько я понимаю он чисто для ознакомления, изучения. Экономически и тд целесообразнее ИМХО делать весь проект на кортексах - одна среда, один программатор и т.п. На счет Ride7 и COSMIC под линукс не помню (не задавался этим вопросом), на их сайтах я думаю эта информация должна быть.
_________________ - Если вы такие умные, то почему тогда строем не ходите? ἓν οἶδα ὅτι οὐδὲν οἶδα (с) Σωκράτης
Экономически и тд целесообразнее ИМХО делать весь проект на кортексах - одна среда, один программатор и т.п.
В том-то и дело. Хотя «одна среда» (GCC + C::B или эклипса, наконец-то) и «один программатор» (FT2232) возможны и для связки Cortex-M3 + AVR
_________________ Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Из-за этого на входе в обработчик прерываний стоит горсть push тих байтов вместо SUB SP, #сколько_надо_для_локальных_обработчика ...
Из-за этого контекст вырос, переключение задач (речь идёт о порте scmRTOS под STM8) резко удлинняется...
Не так всё страшно (контекст всё равно переключается ощутимо быстрее, чем для AVR при той же тактовой) и не так всё просто. У STM8 не нашлось адресации, косвенной по ячейке со смещением к стеку. Т.е. чего-то такого [(offset,SP)]. А вот по ячейке памяти косвенно [shortmem.w] и косвенно-индексно ([shortmem,w],X) обращаться можно. Виртуальные регистры дают кучку указателей c достаточно компактным и быстрым обращением без дёрганья туда-сюда X/Y. Так что после допиливания оптимизатора должно быть нормально. Только вот когда?
_________________ Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Сделано сразу под scmRTOS v4.00, но пока: - переключатель контекстов только прямым вызовом - нет возможности задать отдельный стек для прерываний
Модели памяти кода работают все. Модель памяти данных LARGE очень уж неэффективна (код примера 1-EventFlag распухает с ~1850 байт до ~3050), так что не вижу причин и заморачиваться с ней.
Примеры 1-EventFlag (в объёме этой статьи, чтобы легче сравнивать с AVR) и 4-Debug (пример использования новых возможностей ОС v4.00) рабочие. Только при максимальной оптимизации на скорость 4-Debug показывает цену на дрова, а не % времени. При максимальной-сбалансированной, максимальной-на-размер, средней -- всё нормально. Глюк мой или компилятора -- ещё не разбирался.
p.s. Оно «в процессе», я уже сократил на несколько байт и тактов переключатель контекста, где-то что-то по мелочам подправил... Но всё то мелочи и архив на сайте пока не менял. Что-то существнное будет, тогда уже дополню.
_________________ Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Хех... Ну вот нашлось опять немного времени для темы «scmRTOS для STM8»... Глянул ближе на COSMIC, а он без плюсов. Я среди всех этих gcc/IAR/Keil уже как-от отвык от такого На С-шный их компилятор для общего развития посмотрю, конечно. Но «космического порта scmRTOS» не будет.
Хочу gcc/stm8
_________________ Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
любовь к халяве на генетическом уровне заставила искать пилюлю, которая быстрее нашлась для космика
здравствуйте! а не подскажете, где её (рабочую) взять? в своё время накачал даже несколько версий космика, но ни одна из пилюль ни с одной из версий так и не взлетела :(
_________________ don't believe what u see,
don't believe what u read
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения