170 похожих чатов

Ну ок, может тогда надо было создать это средство, а

потом отменить старое? или я должен имеющие средства через написание тонны шаблонов и т.п просто чтобы поставить битик в регистре... или еще лучше ведь можно же просто ASM заюзать...

27 ответов

9 просмотров

Надо было изначально писать абстракциями, а не битики вручную выставлять)

Поставить битик - это ещё фигня. Иногда возникает необходимость писать в регистры определенные последовательности. И надо быть уверенным что компилятор не решит изменить их порядок

Stas-Koynov Автор вопроса
🐈
Поставить битик - это ещё фигня. Иногда возникает ...

ну тут барьер компилятора или на крайний случай барьер памяти вам в руки.

Kirill Bolshakov
Надо было изначально писать абстракциями, а не бит...

Сдается мне, изначально этот код был вообще на С написан

Kirill Bolshakov
Надо было изначально писать абстракциями, а не бит...

Не совсем понимаю как можно выставить абстрактный битик на неабстрактной железке. и зачем тут нужен слой абстракции?

Stas-Koynov Автор вопроса
Kirill Bolshakov
Надо было изначально писать абстракциями, а не бит...

какие абстракции? я же приводил пример. вот у меня ригистр уарта в памяти 0x005050 туда мне нужно поставить бит 12. я что должен для этого написать рекурсивный шаблон? мне просто по адресу нужно поставить бит. зачем придумывать ерунду. зачем строить замки. просто бит по указателю все.

Stas Koynov
какие абстракции? я же приводил пример. вот у меня...

Это же не просто рандомное число, оно что то значит, для чего то ты пишешь туда. В крайнем случае, ты можешь сделать абстракцию "выставить бит", уже хоть что то будет. И все эти дизъюнкции будут написаны один раз в одном месте

Stas Koynov
какие абстракции? я же приводил пример. вот у меня...

а зачем в с++ стандарте куча текста про конкретно твой юзкейс если по большому счету это всё равно implementation defined?

Stas-Koynov Автор вопроса
Андрей Руссков
а зачем в с++ стандарте куча текста про конкретно ...

я не знаю. про какую абстракцию говорите вы. я говорю у меня вот есть регистр. у него есть адрес ххххх мне туда надо записать один битик все! зачем я должен что-то писать еще? Холивар идет про то что в C++20 сделали устаревшим |= &= += -= и т.п операции с волотайл переменной вот и все.

Stas Koynov
я не знаю. про какую абстракцию говорите вы. я гов...

это вам кажется что надо "просто записать один битик"

🐈
Не совсем понимаю как можно выставить абстрактный ...

слой абстракции нужен, потому что дизъюнкция это одно, а то что ты хочешь это другое

🐈
Подробнее

дизъюнкция - ненужный посредник. Хочешь включить лампочку пиши лампочка.включить();. Или хотя бы включить(лампочка). А не абвгд->какая_то_маска |= какая_то_магическая_константа_еёжз

Stas-Koynov Автор вопроса
Kirill Bolshakov
дизъюнкция - ненужный посредник. Хочешь включить л...

все эти АБВГД который вы не понимаете идут из датошитов! Мне тот же АРМ дал CMSIS вот я что должен его переписать его весь? ибо они же идиоты, кто они все го лишь производители ядра. щас вот будет НВИДЕ да кто она такая. они не умеет в красивый интерфейсы... Ибо код пишут для Си и С++. это раз. АБВГ быстро гуглится по датошиту.

Kirill Bolshakov
дизъюнкция - ненужный посредник. Хочешь включить л...

А кто напишет абвгд->какая_то_маска |= какая_то_магическая_константа_еёжз? Оно откуда появится?

🐈
А кто напишет абвгд->какая_то_маска |= какая_то_ма...

Этого вообще не будет, будет какой-нибудь set_bit абстракция с разными фичами, типа compile time проверок и т.д. В её реализации так и быть, будет дизъюнкция. Одна на всю кодобазу

Stas-Koynov Автор вопроса
🐈
А кто напишет абвгд->какая_то_маска |= какая_то_ма...

вот выше я код привел он из CMSIS. некоторые производители дают сдк (драйвера) для железа. ибо CMSIS ограничен ядром, железо у всех свое

Kirill Bolshakov
Этого вообще не будет, будет какой-нибудь set_bit ...

Скажи, ты писал что-либо низкоуровневое для железок?

Stas Koynov
все эти АБВГД который вы не понимаете идут из дато...

Вот это гугление по дэйташиту как раз и лишнее. Нужно выразить логику работу, а не какой конкретный бит, в конкретном регистре устанавливается. Ибо через месяц ты уже не вспомнишь зачем ты выставляешь этот бит. Либо писать комменты напротив каждой строчки, либо самокомментирующие имена давать.

Stas-Koynov Автор вопроса
ilynxy
Вот это гугление по дэйташиту как раз и лишнее. Ну...

да господи все там поняно. выже понимаете что cos это косинус? и я понимаю что: UART->CTRL |= BDR_57600. вот прям даже к гадалке не иду. и датошит не открываю вижу прям, даже не вижу, а читаю. что в уарте выставили баудрэйт 57600.

Kirill Bolshakov
Да, к своему сожалению

Видимо неудачный опыт?

ilynxy
Вот это гугление по дэйташиту как раз и лишнее. Ну...

Оно не лишнее. Зачастую знать, как "эта хрень с лампочкой" называется в даташите намного важнее, чем то, что это лампочка.

Stas Koynov
да господи все там поняно. выже понимаете что cos ...

Ага. Только у нас разработчики железок очень любят регистровые модели писать в виде биты-описание битов. в итоге разговор между железнячниками и программистами выглядит так:" запиши 1 в 3 и 7 бит такого-то регистра". причём всё нормально, все привыкли, никто кроме меня особо не возмущается. В итоге я попросил для железки с которой работаю написать в регистровой модели названия битов, как они названы в прошивке для плис...

Stas Koynov
да господи все там поняно. выже понимаете что cos ...

По своему опыту с атмегами, шаблоны С++ оборачивают регистры и таймеры просто замечательно.

Stas-Koynov Автор вопроса
Гласси
По своему опыту с атмегами, шаблоны С++ оборачиваю...

и? в шаблоне я все равно не смогу писать reg |= flags. вопрос в этом. а не то что можно обернуть или нет. люди на шаблонах регулярки пишут для компайл тайм. в десятки тысяч строк.

Похожие вопросы

Обсуждают сегодня

Anyone here suffers from unexplained aural migraines, who would be up for talking for a bit? Doesn't *have* to be aural, but I am not asking about headaches, I mean actual mi...
Martin Rys
55
Вопрос по WIN32: Насколько я понимаю то все функции win32 привязаны к объектам операционной системы. Например консоль, файл, кисть, окна итд. Следовательно функции win32 упра...
Tommy Vercetti
6
Hello, can I install macOS and run flutter on a virtual machine? Is it possible to print for iphone?
Mazones
11
кто-то пользуется компонентами rx ? как их лучше ставить, через OPM? (lazarus)
Iluha Companets
15
подскажите пожалуйста, как мне освободить результат записанный в переменную result? в чем проблема подскажите если МОЖЕТЕ?
Михаил Helper
28
Дороу! У кого-нибудь есть в загашнике проверенная функция экранирования, аналог re.escape в Python? Из доки: » Escape all the characters in pattern except ASCII letters and n...
Daniil Smolyakov
9
В смысле более затратная? Общая стоимость владения лошадью меньше, чем автомобиля. В среднем.
Sergej R
10
есть тут кто-то , кто только начал изучать си? если проходите курс на степике или как-то сами изучаете, пишите, может, скооперируемся?..
Eule
25
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
Скажите, тут нет проблемы? IMyInterface1 = interface function GetInterface2: IInterface2; ... function TMyInterface.GetInterface2: IInterface2; begin Result := TI...
Ruslan aka DUDE
18
Карта сайта