потом отменить старое? или я должен имеющие средства через написание тонны шаблонов и т.п просто чтобы поставить битик в регистре... или еще лучше ведь можно же просто ASM заюзать...
Надо было изначально писать абстракциями, а не битики вручную выставлять)
Поставить битик - это ещё фигня. Иногда возникает необходимость писать в регистры определенные последовательности. И надо быть уверенным что компилятор не решит изменить их порядок
ну тут барьер компилятора или на крайний случай барьер памяти вам в руки.
Сдается мне, изначально этот код был вообще на С написан
Не совсем понимаю как можно выставить абстрактный битик на неабстрактной железке. и зачем тут нужен слой абстракции?
какие абстракции? я же приводил пример. вот у меня ригистр уарта в памяти 0x005050 туда мне нужно поставить бит 12. я что должен для этого написать рекурсивный шаблон? мне просто по адресу нужно поставить бит. зачем придумывать ерунду. зачем строить замки. просто бит по указателю все.
Это же не просто рандомное число, оно что то значит, для чего то ты пишешь туда. В крайнем случае, ты можешь сделать абстракцию "выставить бит", уже хоть что то будет. И все эти дизъюнкции будут написаны один раз в одном месте
а зачем в с++ стандарте куча текста про конкретно твой юзкейс если по большому счету это всё равно implementation defined?
я не знаю. про какую абстракцию говорите вы. я говорю у меня вот есть регистр. у него есть адрес ххххх мне туда надо записать один битик все! зачем я должен что-то писать еще? Холивар идет про то что в C++20 сделали устаревшим |= &= += -= и т.п операции с волотайл переменной вот и все.
это вам кажется что надо "просто записать один битик"
слой абстракции нужен, потому что дизъюнкция это одно, а то что ты хочешь это другое
дизъюнкция - ненужный посредник. Хочешь включить лампочку пиши лампочка.включить();. Или хотя бы включить(лампочка). А не абвгд->какая_то_маска |= какая_то_магическая_константа_еёжз
все эти АБВГД который вы не понимаете идут из датошитов! Мне тот же АРМ дал CMSIS вот я что должен его переписать его весь? ибо они же идиоты, кто они все го лишь производители ядра. щас вот будет НВИДЕ да кто она такая. они не умеет в красивый интерфейсы... Ибо код пишут для Си и С++. это раз. АБВГ быстро гуглится по датошиту.
А кто напишет абвгд->какая_то_маска |= какая_то_магическая_константа_еёжз? Оно откуда появится?
Этого вообще не будет, будет какой-нибудь set_bit абстракция с разными фичами, типа compile time проверок и т.д. В её реализации так и быть, будет дизъюнкция. Одна на всю кодобазу
вот выше я код привел он из CMSIS. некоторые производители дают сдк (драйвера) для железа. ибо CMSIS ограничен ядром, железо у всех свое
Скажи, ты писал что-либо низкоуровневое для железок?
Вот это гугление по дэйташиту как раз и лишнее. Нужно выразить логику работу, а не какой конкретный бит, в конкретном регистре устанавливается. Ибо через месяц ты уже не вспомнишь зачем ты выставляешь этот бит. Либо писать комменты напротив каждой строчки, либо самокомментирующие имена давать.
да господи все там поняно. выже понимаете что cos это косинус? и я понимаю что: UART->CTRL |= BDR_57600. вот прям даже к гадалке не иду. и датошит не открываю вижу прям, даже не вижу, а читаю. что в уарте выставили баудрэйт 57600.
Да, к своему сожалению
Видимо неудачный опыт?
Почему не косеканс? Непонятно
Оно не лишнее. Зачастую знать, как "эта хрень с лампочкой" называется в даташите намного важнее, чем то, что это лампочка.
Ага. Только у нас разработчики железок очень любят регистровые модели писать в виде биты-описание битов. в итоге разговор между железнячниками и программистами выглядит так:" запиши 1 в 3 и 7 бит такого-то регистра". причём всё нормально, все привыкли, никто кроме меня особо не возмущается. В итоге я попросил для железки с которой работаю написать в регистровой модели названия битов, как они названы в прошивке для плис...
По своему опыту с атмегами, шаблоны С++ оборачивают регистры и таймеры просто замечательно.
и? в шаблоне я все равно не смогу писать reg |= flags. вопрос в этом. а не то что можно обернуть или нет. люди на шаблонах регулярки пишут для компайл тайм. в десятки тысяч строк.
Обсуждают сегодня