The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Новая версия среды разработки Arduino IDE 2.3 , opennews (??), 11-Фев-24, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


100. "Новая версия среды разработки Arduino IDE 2.3 "  +/
Сообщение от Аноним (102), 12-Фев-24, 10:38 
>У тупого как дрова AVR нету "bad opcode" исключений

Разве компилер C++ может генерить несуществующие опкоды? Сомневаюсь. Или ты прям в машинных кодах прогаешь?

Ответить | Правка | К родителю #72 | Наверх | Cообщить модератору

157. "Новая версия среды разработки Arduino IDE 2.3 "  +1 +/
Сообщение от Аноним (-), 14-Фев-24, 17:45 
> Разве компилер C++ может генерить несуществующие опкоды? Сомневаюсь. Или ты прям в
> машинных кодах прогаешь?

Ubsan - довольно низкоуровнево интегрируется в компилер, и таки - может! Он вообще инструментирует поток команд, добавляя проверки! При том на автомате - програмеру делать ничего не надо, инструментация математики будет сделана компилером.

В полной версии он ловит ряд забавных вещей, типа некоторых выходов за пределы массивов, левых поползновений с типами, переполнения integer'ов и проч. И при обнаружении факапа он вырубает прогу и кидает нехилый стектрейс. В gcc/clang это нечто типа -fsanitize=undefined.

Но у него есть как минимум в GCC и лайтовый режим, спецом для МК, когда вместо полновесного рантайма он в инструментированом коде просто провоцирует Bad Opcode и дальше fault handler сам разбирается что это за фигня. Так оно уже подъемно для МК получается. На cortex M работает, фимрвар конечно несколько жирнее и тормознее из-за проверок, но - разница процентов 30 по размеру кода. Скорость - зависит от алго, может существенно просесть, а может и пофиг быть.

p.s. gcc также может САМ добавить вызовы функций memset/memcpy/memmove между прочим. И это документировано. Для freestanding окружение требование такое - предоставить эту троицу. А как вы думали он допустим один struct другому вообще присваивает?!

Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру