Немного уточню (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 с указанием необходимого флага
@NeirRon823 жыл бұрын
Добрый день. Не планируешь серии видео по stm32?
@veoramid3 жыл бұрын
Спасибо. Когда изучал контроллер 8051, изучил ассемблер, исходную программу 2кб дезасеблировал и потом дописал до 6кб. Когда был выбор между изучением pic или avr ,случайно выбрал avr и вариант написания программ на C - как раз что бы не изучать нюансы и, возможно, портировать код с контроллера на контроллер. А тут, оказывается, такие нюансы...
@ВасилийШумилов-о8ь3 жыл бұрын
на 3:44 услышал про деление у умножение как циклические операции, да по логике это так, но в том же си алгоритмы используют деление и умножение столбиком, в итоге для процессора это операции сравнения сложения вычитания и сдвига
@user-gd9yk9ue53 жыл бұрын
Здравствуйте. Насколько я понимаю, преимущество risс в том, что имея команды одной длины можно несложно организовать конвеер (по сравнению с cisc). В итоге команды , которые исполняются за 3 такта у avr исполняются за один такт. Если бы команды были разной длины , как в cisc, то смысла в конвеере становилось бы меньше. Тут неправильное значение слова Redused. Не сокращенный набор, а набор команд определенной длины. Это где-то встречалось в литературе. Умножение нужно для организации работы с векторами. (особенно умножение с накоплением). Операция clr это операция исключающее или самим с собой по книге Ю. Ревича.
@ВладимирН-ц7ы3 жыл бұрын
У AVR полезно смотреть листинг дизассемблера, и можно выбрать лучший вариант по длине. Когда то переносил код написанный для PIC12 на TINY13 и он не влазил с тем же функционалом, А у PIC с его минимумом команд ассемблера еще оставалось место!
@IP-cu8uz3 жыл бұрын
Когда нужно было переделать прогу с 8к на 4к кристалл, заменял прожорливые команды lds sts на ldd std. Операции сравнения с нолём, загрузки ноля в ОЗУ достойны того, чтобы завести отдельный регистр с сответствующим значением, я делал ZeroReg и иногда OneReg.
@artemhnilov2 жыл бұрын
Нужен такой же обзор на ISA RISC-V.
@Nidvoraich3 жыл бұрын
Может, мышку хотя бы раз в 20 лет стоит менять?)
@Alex_Ekb3 жыл бұрын
Как раз сейчас ковыряюсь с эмулятором Z80. Вот думаю, если бы тогда была в тренде RISC, то было бы гораздо проще. А то эти команды с префиксами из которых ещё незапланировано получились двойные и тройные префиксы. Всё это недокументированные возможности и нигде нормально системно не описаны. Вот у меня, например получается, что проц.как честный выбирает один байт после префикса, но если перед префиксом был ещё один префикс, то надо выбирать через один байт, но тот который мы перепрыгиваем тоже учитывается. Короче мозг сломаешь, пока разберёшься. Понятно, почему CISC взлетела - все серьёзные программы писали в ассемблере или в машинных кодах, а на CISC так писать проще. Сейчас же почти всё равно, т.к. компиляторы дофига умные стали. Да и каждый такт никто уже не считает. Время программиста дороже стоит, просто надо брать проц пожирнее, цена в больших партиях всё равно почти одинаковая.
@ВасилийШумилов-о8ь3 жыл бұрын
Читаю "авр - это всегда риск" :)
@alexmorozov733 жыл бұрын
Так и задумано :)
@nyannyan82432 жыл бұрын
Самая классная архитектура проца и красивая система команд была у Z80!
@alexmorozov732 жыл бұрын
Видимо потому, что у вас она была "первая". :) У меня кажется тоже. Но это вроде бы усовершенствованный i8080, хотя я с Intel знаком только с 8086 и выше.
@kestvvv3 жыл бұрын
Пишу на асме. Часто использую тини 13 как дополнительный контроллер к основному.дешево и сердито. Для ускорения программы к примеру использую один из регистров под нулевое значение.
@Di_Maro3 жыл бұрын
эта фишка компиляторов Studio да и в Arduino... если дизассемблировать любую результирующую программу состряпанную на СИ, то увидим в коде - в теле инициализации R1 очищается (сбрасывается) и используется в дальнейшем как регистр с нулевым значением
@dreamer41043 жыл бұрын
Я ещё под единичку часто использую т.к. inc не изменяет C а сложение константы с обраткой устанавливает C
@euspro3 жыл бұрын
Да бывает туго. Тема норм!
@АндрейК-т9э3 жыл бұрын
Объясните пожалуйста, на сколько это все актуально в эпоху 32-битных МК? Сразу предупрежу, что я жертва ЕГЭ, хоть и родился в той самой уже не существующей стране
@alexmorozov733 жыл бұрын
Для простых задач простые решения всегда будут эффективнее и дешевле.
@parennasubaru3 жыл бұрын
Если у тебя много свободного времени и ты живешь на мамину пенсию это интересное занятие. В реальной жизни нет смысла опускаться на низкий уровень ( это скорее показатель отсутствия профессионализма) , это экономически нецелесообразно.
@ВладимирМ-е6ь3 жыл бұрын
Поколение ЕГЭ пошло в погроммисты.
@АндрейМихайлов-о6я3ц3 жыл бұрын
Автор, если вы не понимаете, почему в микроконтроллере есть команда умножения, но нет команды деления, сразу хочется спросить: а вы точно врач? в смысле а вы точно знаете что-то о микроконтроллерах и процессорах?
@qa3377 ай бұрын
Вот вы высрать высрали, а знаниями не блеснули. Если вы знаете что-то то расскажите или не пишите ничего. Ценность вашего коммента в данный момент около нуля.
@pavlomukosieiev65883 жыл бұрын
Благодаря простоте avr дешев и удобен к применению в простых проектах, сейчас микрочип запускает линейку avr da
@parennasubaru3 жыл бұрын
Это ты смотришь в современных реалиях, на момент создания не все команды были одноактные.
@olexangrstetsiuk30923 жыл бұрын
99,99% компиляторов умнее меня, но Ооочень хочу понимать правильно : определения ,,команда,, для процессора. Спросить больше не у кого , ,,Коменда,, это часть электрической схемы ,состоящая из конкретного набора конкретных триггеров , в которую поступают данные и на выходе получим результат именно только от одного конкретного действия, так ли это???
@alexmorozov733 жыл бұрын
В простейшем случае да, это часть схемы, реагирующая на определенный префикс от декодера команд и знающая, что делать с остальной частью команды (операндом/и). В современных МП (не МК) как правило есть внутренний транслятор, который переводит команды (как правило достаточно высокоуровневые) в более простые низкоуровневые (нередко не 1 к 1), которые уже в силиконе реализованы окончательно. На простых командах проще повышать скорость выполнения (стремясь к 1 такту на команду или даже к нескольким командам за такт) и снижать затраты энергии. Дальше параллельное выполнение, предсказание переходов для кеширования кода и пр. Но это все не про МК! Там чем проще - тем лучше.
@olexangrstetsiuk30923 жыл бұрын
@@alexmorozov73Большое СПАСИБО, что пытаетесь разъяснить непутевому. И ещё догадка: если в микроконтроллер ,, засунуть,, много команд для паралельного исполнения кода ,тогда те части эл. схемы которые не используются в данный момент все равно потребляют энергию , и это значит, что для мобильности (по питанию) нужно минимизировать количество этих ,,команд,, в архитектуре МК ?
@ArtemKAD13 жыл бұрын
Еще внимательней присмотрись. Обращая внимание на то, с какими регистрами каждая из этих команд работает.
@Alex_Ekb3 жыл бұрын
Ну да, для команд с константой доступна только половина регистрового файла. Но это такие мелочи...
@ololololo-l5z3 жыл бұрын
риск это stm чуть пин перегрузил и топаеш на новым мк
@igorovcharov74243 жыл бұрын
буферы применить религия не позволяет? А можно вообще сделать выходные на оптопарах, раз уж так коробит от буферов.
@ololololo-l5z3 жыл бұрын
@@igorovcharov7424 это я просто как факт у меня такой проблеммы небыло(потомучьто я не узаю stm)
@IP-cu8uz3 жыл бұрын
Протестую. Это CISC. Неортогональная система команд. Их слишком много, куча исключений. К сожалению, ядро AVC.
@ciklomat3 жыл бұрын
Это из той серии, что если перевести 0.1 в двоичную систему,переведя обратно в десятичную мы 0.1 уже ни когда не получим.kzbin.info/www/bejne/fV63lXx8hK2Wjbs
@АндрейМихайлов-о6я3ц3 жыл бұрын
те команды, "без которых можно было бы обойтись", в RISC - зачастую просто макросы, для удобства пользователя, реально компилятором может генерироваться тот же двоичный код для DEC, что и для SUB 1, например, просто потому что команды DEC на самом деле не существует.
@alexmorozov733 жыл бұрын
Потрудитесь посмотреть в наборе инструкций для AVR двоичные коды команд DEC и SUBI, чтобы не утверждать, что одна из них мнемоника другой. Тут товарищ Di Maro в комментах верно выписал многие команды, которые суть мнемоники. Вот сразу видно - "врач". :)