jcxz 245 26 марта, 2021 Опубликовано 26 марта, 2021 · Жалоба 3 минуты назад, Forger сказал: Повторюсь - изучайте инструмент. Подсказка: короткие asm-вставки ВНУТРИ c/cpp файла. Инлайн-ассемблер - это не "без асма". Если что. Передёргиваете. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 26 26 марта, 2021 Опубликовано 26 марта, 2021 · Жалоба 2 minutes ago, jcxz said: Как на Cortex-M не используя асм эффективно реализовать вытесняющее переключение задач например. Речь шла про startup код, который кстати вызывается всего один после сброса. Не будем отклоняться от темы ) 1 minute ago, jcxz said: Инлайн-ассемблер - это не "без асма". Если что. Передёргиваете. У меня startup файл реализован на c/cpp БЕЗ asm вставок. Код примитивный. Так кто из нас тут передергивает с переключалкой оси, о которой речи изначально не шло? )) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 245 26 марта, 2021 Опубликовано 26 марта, 2021 · Жалоба 8 минут назад, Forger сказал: У меня startup файл реализован на c/cpp БЕЗ asm вставок. Код примитивный. Так кто из нас тут передергивает с переключалкой оси, о которой речи изначально не шло? )) Видимо всё-таки Вы, ибо изначально речь шла не о стартапе, а об ISR. Который кстати может вызываться неоднократно. А вы уже плавно перевели стрелки на стартап. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 26 26 марта, 2021 Опубликовано 26 марта, 2021 · Жалоба Я использую библиотечную версии штатной оси от keil. В коде нет ни одно asm файла, самая большая asm вставка - запрет и разрешение прерываний в критической секции: class CriticalSection // No nested, but very fast - 3 CPU cycles !!! { public: inline CriticalSection() __attribute__((always_inline)) { __asm volatile ("CPSID i"); } inline ~CriticalSection() __attribute__((always_inline)) { __asm volatile ("CPSIE i"); } }; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 245 26 марта, 2021 Опубликовано 26 марта, 2021 · Жалоба 4 минуты назад, Forger сказал: Я использую библиотечную версии штатной оси от keil. В коде нет ни одно asm файла, самая большая asm вставка - запрет и разрешение прерываний в критической секции: И как же в ней всё-таки реализовано переключение контекста? Да причём так эффективно, что это уложилось в одну команду??? 4 минуты назад, Forger сказал: самая большая asm вставка - запрет и разрешение прерываний в критической секции: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 26 26 марта, 2021 Опубликовано 26 марта, 2021 · Жалоба Just now, jcxz said: Видимо всё-таки Вы, ибо изначально речь шла не о стартапе, а об ISR. Который кстати может вызываться неоднократно. А зачем ISR писать на asm? Разве что для особого случая, когда уже больше ничего не помогает. У меня таких случаев не было. Повторюсь: ось в расчет не беру, использую библиотечную версию, что там внутри меня мало волнует. Она работает как надо, меня это полностью устраивает. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 245 26 марта, 2021 Опубликовано 26 марта, 2021 · Жалоба 2 минуты назад, Forger сказал: использую библиотечную версию, что там внутри меня мало волнует. Она работает как надо, меня это полностью устраивает. Ну тогда не надо писать что: 6 минут назад, Forger сказал: Я использую библиотечную версии штатной оси от keil. В коде нет ни одно asm файла, самая большая asm вставка - запрет и разрешение прерываний в критической секции: если вы используете чужой код, где может быть куча асма. Если вы его не видите, это не значит что его нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 26 26 марта, 2021 Опубликовано 26 марта, 2021 · Жалоба 1 minute ago, jcxz said: И как же в ней всё-таки реализовано переключение контекста? Да причём так эффективно, что это уложилось в одну команду??? Идея такого класса честно слита с scmRtos, итоговый код с такой критической секцией действительно выглядит как задумано. Компилятор не идиот, понимает что от него хотят. Just now, jcxz said: Ну тогда не надо писать что: если вы используете чужой код, где может быть куча асма. Если вы его не видите, это не значит что его нет. Ясно, есть желание придраться и все тут. Вот - царь горы прям, не сдамся до последнего. Повторюсь, меня волнует МОЙ код, в нем НЕТ asm файлов и asm-вставок. Работает отлично. Как там написана ось - мне лично до фонаря. Но если ось не использовать, то можно ВЕСЬ код написать также БЕЗ asmа, вообще. И будет отлично работать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SII 0 26 марта, 2021 Опубликовано 26 марта, 2021 · Жалоба 16 minutes ago, Forger said: Повторюсь - изучайте инструмент. Подсказка: короткие asm-вставки ВНУТРИ c/cpp файла. Городить для этого именно asm-файл вовсе необязательно. Во-первых, асм-вставки -- вещь нестандартная по определению, а во-вторых, компилятор может нагенерить код ДО вставок (пролог функции, скажем, где сохранит в стеке регистры). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 26 26 марта, 2021 Опубликовано 26 марта, 2021 · Жалоба Just now, SII said: Во-первых, асм-вставки -- вещь нестандартная по определению, а во-вторых, компилятор может нагенерить код ДО вставок (пролог функции, скажем, где сохранит в стеке регистры). Может, конечно. Вот честно, мне было бы очень интересно узнать, где еще asm так критически полезен, кроме как в переключалке контекста. Почему-то мне ни разу не приходилось применять asm вставки, кроме как критические секции (выше один из вариантов). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SII 0 26 марта, 2021 Опубликовано 26 марта, 2021 · Жалоба 2 hours ago, Forger said: Может, конечно. Вот честно, мне было бы очень интересно узнать, где еще asm так критически полезен, кроме как в переключалке контекста. Почему-то мне ни разу не приходилось применять asm вставки, кроме как критические секции (выше один из вариантов). В переключалке контекста (и ещё паре подобных случаев) он не критически полезен -- он абсолютно необходим. Во всяких атомарных и околоатомарных операциях, барьерах и т.п. может потребоваться -- хотя последние стандарты це++ уже содержат определённые вещи из этой области. Ну и ручная оптимизация особо критичных мест, само собой -- бывает, и возникает такая нужда. 1 hour ago, Forger said: Алилуйя! Ну наконец-то хоть в чем-то у нас совпадающее мнение )) Вот я и предпочитаю им по минимуму -- а посему, если есть возможность, использую отдельный асмофайл, а не встроенный ассемблер. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 26 марта, 2021 Опубликовано 26 марта, 2021 · Жалоба 18 minutes ago, SII said: Вот я и предпочитаю им по минимуму -- а посему, если есть возможность, использую отдельный асмофайл, а не встроенный ассемблер. Ребят, вы не в тренде. В Azure RTOS, а это сейчас одна из самых популярных осей в мире, которая засертифицирована по надежности по самое немогу применяются исключительно ассемблерные вставки! Ни одного чистого файла на ассемблере. Более того, именно когда требуются супернадежные функции для соблюдения требований MISRA применяются ассемблерные вставки, а не файлы. Просто факт. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Arlleex 190 27 марта, 2021 Опубликовано 27 марта, 2021 · Жалоба Не пофиг ли, на какой джумбе написан исходник, если на выхлопе интересно лишь качество дизасма? И то, качество - понятие субъективное. Если то самое качество не устраивает, стороним джумбу и расчехляем скилл в ассемблере. Как писать на том ассемблере - дело десятое. Кому как. P.S. Фееричное появление Александра с азурами я прямо-таки предчувствовал Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
VladislavS 39 28 марта, 2021 Опубликовано 28 марта, 2021 · Жалоба Куда-то вас занесло. У ТС проблема в том что в стартапах от разных тулчейнов разные имена процедур обработки прерываний. В одном из стартапов накосячено, ибо в заголовочном файле от производителя все эти имена есть, надо их использовать. Кто конкретно делал этот косячный стартап дело десятое. Я же предлагаю использовать один стартап для разных тулчейнов, чтобы подобные несоответствия не вылазили. Причём тут RTOS-ы вообще? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 245 28 марта, 2021 Опубликовано 28 марта, 2021 · Жалоба 1 час назад, VladislavS сказал: Куда-то вас занесло. Тут некоторые персонажи начали утверждать, что "ассемблер - это мировое зло и я никогда и за что его не использую, а все кто это делает - нехорошие люди". И что мол "в современном мире можно вообще без него обойтись". Религия у них такая - отрицание ассемблера и ассемблеро-фобия. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться