AVR - это всегда RISC

  Рет қаралды 6,478

Arduino и прочие питомцы

Arduino и прочие питомцы

Күн бұрын

Пікірлер: 39
@Di_Maro
@Di_Maro 3 жыл бұрын
Немного уточню (8:38 на видео)... инструкция CLR не существует как отдельная группа команд в AVR Это всего лишь мнемонический вариант команды EOR. т.е. CLR R1 и EOR R1,R1 всегда будут откомпилированы в 0x2411 код команды EOR - 0x2400, код R1 в качестве результирующего регистра - 0x0010, код R1 в качестве исходного регистра - 0x0001 получаем 0x2400 & 0x0010 & 0x0001 = 0x2411 продолжу список несуществующих команд... SER R => LDI R,0xFF TST R => AND R,R LSL R => ADD R,R ROL R => ADC R,R CBR R,bit => ANDI R,~bit SBR R,bit => ORI R,bit далее, вся группа условных переходов типа BRNE, BRNC, BRCC... (всего 16 команд) ни что иное, как BRBC и BRBS с указанием флага и метки и еще 16 несуществующих команд сброса и установки флагов в регистре SREG (CLC, SEС и т.д.) выполняются двумя командами BCLR и BSET с указанием необходимого флага
@NeirRon82
@NeirRon82 3 жыл бұрын
Добрый день. Не планируешь серии видео по stm32?
@veoramid
@veoramid 3 жыл бұрын
Спасибо. Когда изучал контроллер 8051, изучил ассемблер, исходную программу 2кб дезасеблировал и потом дописал до 6кб. Когда был выбор между изучением pic или avr ,случайно выбрал avr и вариант написания программ на C - как раз что бы не изучать нюансы и, возможно, портировать код с контроллера на контроллер. А тут, оказывается, такие нюансы...
@ВасилийШумилов-о8ь
@ВасилийШумилов-о8ь 3 жыл бұрын
на 3:44 услышал про деление у умножение как циклические операции, да по логике это так, но в том же си алгоритмы используют деление и умножение столбиком, в итоге для процессора это операции сравнения сложения вычитания и сдвига
@user-gd9yk9ue5
@user-gd9yk9ue5 3 жыл бұрын
Здравствуйте. Насколько я понимаю, преимущество risс в том, что имея команды одной длины можно несложно организовать конвеер (по сравнению с cisc). В итоге команды , которые исполняются за 3 такта у avr исполняются за один такт. Если бы команды были разной длины , как в cisc, то смысла в конвеере становилось бы меньше. Тут неправильное значение слова Redused. Не сокращенный набор, а набор команд определенной длины. Это где-то встречалось в литературе. Умножение нужно для организации работы с векторами. (особенно умножение с накоплением). Операция clr это операция исключающее или самим с собой по книге Ю. Ревича.
@ВладимирН-ц7ы
@ВладимирН-ц7ы 3 жыл бұрын
У AVR полезно смотреть листинг дизассемблера, и можно выбрать лучший вариант по длине. Когда то переносил код написанный для PIC12 на TINY13 и он не влазил с тем же функционалом, А у PIC с его минимумом команд ассемблера еще оставалось место!
@IP-cu8uz
@IP-cu8uz 3 жыл бұрын
Когда нужно было переделать прогу с 8к на 4к кристалл, заменял прожорливые команды lds sts на ldd std. Операции сравнения с нолём, загрузки ноля в ОЗУ достойны того, чтобы завести отдельный регистр с сответствующим значением, я делал ZeroReg и иногда OneReg.
@artemhnilov
@artemhnilov 2 жыл бұрын
Нужен такой же обзор на ISA RISC-V.
@Nidvoraich
@Nidvoraich 3 жыл бұрын
Может, мышку хотя бы раз в 20 лет стоит менять?)
@Alex_Ekb
@Alex_Ekb 3 жыл бұрын
Как раз сейчас ковыряюсь с эмулятором Z80. Вот думаю, если бы тогда была в тренде RISC, то было бы гораздо проще. А то эти команды с префиксами из которых ещё незапланировано получились двойные и тройные префиксы. Всё это недокументированные возможности и нигде нормально системно не описаны. Вот у меня, например получается, что проц.как честный выбирает один байт после префикса, но если перед префиксом был ещё один префикс, то надо выбирать через один байт, но тот который мы перепрыгиваем тоже учитывается. Короче мозг сломаешь, пока разберёшься. Понятно, почему CISC взлетела - все серьёзные программы писали в ассемблере или в машинных кодах, а на CISC так писать проще. Сейчас же почти всё равно, т.к. компиляторы дофига умные стали. Да и каждый такт никто уже не считает. Время программиста дороже стоит, просто надо брать проц пожирнее, цена в больших партиях всё равно почти одинаковая.
@ВасилийШумилов-о8ь
@ВасилийШумилов-о8ь 3 жыл бұрын
Читаю "авр - это всегда риск" :)
@alexmorozov73
@alexmorozov73 3 жыл бұрын
Так и задумано :)
@nyannyan8243
@nyannyan8243 2 жыл бұрын
Самая классная архитектура проца и красивая система команд была у Z80!
@alexmorozov73
@alexmorozov73 2 жыл бұрын
Видимо потому, что у вас она была "первая". :) У меня кажется тоже. Но это вроде бы усовершенствованный i8080, хотя я с Intel знаком только с 8086 и выше.
@kestvvv
@kestvvv 3 жыл бұрын
Пишу на асме. Часто использую тини 13 как дополнительный контроллер к основному.дешево и сердито. Для ускорения программы к примеру использую один из регистров под нулевое значение.
@Di_Maro
@Di_Maro 3 жыл бұрын
эта фишка компиляторов Studio да и в Arduino... если дизассемблировать любую результирующую программу состряпанную на СИ, то увидим в коде - в теле инициализации R1 очищается (сбрасывается) и используется в дальнейшем как регистр с нулевым значением
@dreamer4104
@dreamer4104 3 жыл бұрын
Я ещё под единичку часто использую т.к. inc не изменяет C а сложение константы с обраткой устанавливает C
@euspro
@euspro 3 жыл бұрын
Да бывает туго. Тема норм!
@АндрейК-т9э
@АндрейК-т9э 3 жыл бұрын
Объясните пожалуйста, на сколько это все актуально в эпоху 32-битных МК? Сразу предупрежу, что я жертва ЕГЭ, хоть и родился в той самой уже не существующей стране
@alexmorozov73
@alexmorozov73 3 жыл бұрын
Для простых задач простые решения всегда будут эффективнее и дешевле.
@parennasubaru
@parennasubaru 3 жыл бұрын
Если у тебя много свободного времени и ты живешь на мамину пенсию это интересное занятие. В реальной жизни нет смысла опускаться на низкий уровень ( это скорее показатель отсутствия профессионализма) , это экономически нецелесообразно.
@ВладимирМ-е6ь
@ВладимирМ-е6ь 3 жыл бұрын
Поколение ЕГЭ пошло в погроммисты.
@АндрейМихайлов-о6я3ц
@АндрейМихайлов-о6я3ц 3 жыл бұрын
Автор, если вы не понимаете, почему в микроконтроллере есть команда умножения, но нет команды деления, сразу хочется спросить: а вы точно врач? в смысле а вы точно знаете что-то о микроконтроллерах и процессорах?
@qa337
@qa337 7 ай бұрын
Вот вы высрать высрали, а знаниями не блеснули. Если вы знаете что-то то расскажите или не пишите ничего. Ценность вашего коммента в данный момент около нуля.
@pavlomukosieiev6588
@pavlomukosieiev6588 3 жыл бұрын
Благодаря простоте avr дешев и удобен к применению в простых проектах, сейчас микрочип запускает линейку avr da
@parennasubaru
@parennasubaru 3 жыл бұрын
Это ты смотришь в современных реалиях, на момент создания не все команды были одноактные.
@olexangrstetsiuk3092
@olexangrstetsiuk3092 3 жыл бұрын
99,99% компиляторов умнее меня, но Ооочень хочу понимать правильно : определения ,,команда,, для процессора. Спросить больше не у кого , ,,Коменда,, это часть электрической схемы ,состоящая из конкретного набора конкретных триггеров , в которую поступают данные и на выходе получим результат именно только от одного конкретного действия, так ли это???
@alexmorozov73
@alexmorozov73 3 жыл бұрын
В простейшем случае да, это часть схемы, реагирующая на определенный префикс от декодера команд и знающая, что делать с остальной частью команды (операндом/и). В современных МП (не МК) как правило есть внутренний транслятор, который переводит команды (как правило достаточно высокоуровневые) в более простые низкоуровневые (нередко не 1 к 1), которые уже в силиконе реализованы окончательно. На простых командах проще повышать скорость выполнения (стремясь к 1 такту на команду или даже к нескольким командам за такт) и снижать затраты энергии. Дальше параллельное выполнение, предсказание переходов для кеширования кода и пр. Но это все не про МК! Там чем проще - тем лучше.
@olexangrstetsiuk3092
@olexangrstetsiuk3092 3 жыл бұрын
@@alexmorozov73Большое СПАСИБО, что пытаетесь разъяснить непутевому. И ещё догадка: если в микроконтроллер ,, засунуть,, много команд для паралельного исполнения кода ,тогда те части эл. схемы которые не используются в данный момент все равно потребляют энергию , и это значит, что для мобильности (по питанию) нужно минимизировать количество этих ,,команд,, в архитектуре МК ?
@ArtemKAD1
@ArtemKAD1 3 жыл бұрын
Еще внимательней присмотрись. Обращая внимание на то, с какими регистрами каждая из этих команд работает.
@Alex_Ekb
@Alex_Ekb 3 жыл бұрын
Ну да, для команд с константой доступна только половина регистрового файла. Но это такие мелочи...
@ololololo-l5z
@ololololo-l5z 3 жыл бұрын
риск это stm чуть пин перегрузил и топаеш на новым мк
@igorovcharov7424
@igorovcharov7424 3 жыл бұрын
буферы применить религия не позволяет? А можно вообще сделать выходные на оптопарах, раз уж так коробит от буферов.
@ololololo-l5z
@ololololo-l5z 3 жыл бұрын
@@igorovcharov7424 это я просто как факт у меня такой проблеммы небыло(потомучьто я не узаю stm)
@IP-cu8uz
@IP-cu8uz 3 жыл бұрын
Протестую. Это CISC. Неортогональная система команд. Их слишком много, куча исключений. К сожалению, ядро AVC.
@ciklomat
@ciklomat 3 жыл бұрын
Это из той серии, что если перевести 0.1 в двоичную систему,переведя обратно в десятичную мы 0.1 уже ни когда не получим.kzbin.info/www/bejne/fV63lXx8hK2Wjbs
@АндрейМихайлов-о6я3ц
@АндрейМихайлов-о6я3ц 3 жыл бұрын
те команды, "без которых можно было бы обойтись", в RISC - зачастую просто макросы, для удобства пользователя, реально компилятором может генерироваться тот же двоичный код для DEC, что и для SUB 1, например, просто потому что команды DEC на самом деле не существует.
@alexmorozov73
@alexmorozov73 3 жыл бұрын
Потрудитесь посмотреть в наборе инструкций для AVR двоичные коды команд DEC и SUBI, чтобы не утверждать, что одна из них мнемоника другой. Тут товарищ Di Maro в комментах верно выписал многие команды, которые суть мнемоники. Вот сразу видно - "врач". :)
Лекция 4. Архитектура AVR. Ассемблер
47:13
Computer Science Center
Рет қаралды 36 М.
Написание библиотеки для Arduino на примере AHT10
32:14
Arduino и прочие питомцы
Рет қаралды 12 М.
Cheerleader Transformation That Left Everyone Speechless! #shorts
00:27
Fabiosa Best Lifehacks
Рет қаралды 16 МЛН
REAL or FAKE? #beatbox #tiktok
01:03
BeatboxJCOP
Рет қаралды 18 МЛН
The Best Band 😅 #toshleh #viralshort
00:11
Toshleh
Рет қаралды 22 МЛН
黑天使只对C罗有感觉#short #angel #clown
00:39
Super Beauty team
Рет қаралды 36 МЛН
Небольшая экономия ОЗУ с помощью шаблонов классов
15:29
Arduino и прочие питомцы
Рет қаралды 2,4 М.
UART вывод для Attiny13
17:14
Arduino и прочие питомцы
Рет қаралды 3,5 М.
ИВТ-23М. Л12. Архитектура RISC-V
1:27:14
Архитектуры процессорных систем
Рет қаралды 8 М.
Введение в AVR микроконтроллеры
17:49
Михаил Копычев
Рет қаралды 10 М.
Архитектура MIPS
11:29
Академия разработчиков
Рет қаралды 6 М.
BLE Advertising как средство передачи данных
26:55
Arduino и прочие питомцы
Рет қаралды 6 М.
ESP-C3 как видовое разнообразие серии ESP
22:23
Arduino и прочие питомцы
Рет қаралды 18 М.
Cheerleader Transformation That Left Everyone Speechless! #shorts
00:27
Fabiosa Best Lifehacks
Рет қаралды 16 МЛН