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

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

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

27 ответов

22 просмотра

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

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

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. вопрос в этом. а не то что можно обернуть или нет. люди на шаблонах регулярки пишут для компайл тайм. в десятки тысяч строк.

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

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

Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
#include <stdio.h> #include <stdlib.h> #include <time.h> void mass_first_generate(int mass[5][7]) {     for (int N = 0; N < 5; N++) {         for (int A = 0; A < 7; A++) {   ...
Чувак
6
Всем привет! Решаю 99 OCaml Problems и столкнулся со следующей проблемой (прошу палками не забивать, я OCaml практически не трогал до этого момента): open OUnit2 let create_...
К|/|pи/\/\ 6е3yглbIи
2
Точно, оно. У тебя там имена потоков выставляются?
Александр (Rouse_) Багель
11
https://www.linkedin.com/posts/ugama-benedicta-kelechi-codergirl-103041300_mobiledevelopment-fluttertraining-handsonlearning-activity-7263445699227254784-IdHB?utm_source=share...
CoderGirl
16
возможно ли как-то передать в электрон или таури медиа поток с рендера 2д движка? двиг запускается как dll, а дальше надо как-то отправлять рендер кодировать не подходит, зр...
Kyle Nekto
7
Ну вот просто даже давайте вот как. Какой нибудь конкретный кейс, можете в пример привести, где бч работает и приносит прикладную пользу, а не просто что бы было? Не крипту.
Alexander Andreev
22
Помогите пожалуйста. Делаю систему плагинов. Проблема сейчас в такая: плагины загружаются в основном потоке. FLibHandle := SafeLoadLibrary(FFileName) Но нужно еще выполнить фу...
Илья 🤣
10
объясните пожалуйста, почему функция не работает должным образом? вроде должно брать активное окно сравнивать его размер с размером экрана, и если есть совпадение = true прове...
JF
12
лучше скажите, причём тут паскаль?
Alexey Kulakov
36
Карта сайта