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

Поділитися
Вставка
  • Опубліковано 3 січ 2025

КОМЕНТАРІ • 39

  • @Di_Maro
    @Di_Maro 3 роки тому +10

    Немного уточню (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 роки тому +2

    Добрый день. Не планируешь серии видео по stm32?

  • @ВасилийШумилов-о8ь

    на 3:44 услышал про деление у умножение как циклические операции, да по логике это так, но в том же си алгоритмы используют деление и умножение столбиком, в итоге для процессора это операции сравнения сложения вычитания и сдвига

  • @veoramid
    @veoramid 3 роки тому +1

    Спасибо. Когда изучал контроллер 8051, изучил ассемблер, исходную программу 2кб дезасеблировал и потом дописал до 6кб. Когда был выбор между изучением pic или avr ,случайно выбрал avr и вариант написания программ на C - как раз что бы не изучать нюансы и, возможно, портировать код с контроллера на контроллер.
    А тут, оказывается, такие нюансы...

  • @user-gd9yk9ue5
    @user-gd9yk9ue5 3 роки тому

    Здравствуйте. Насколько я понимаю, преимущество risс в том, что имея команды одной длины можно несложно организовать конвеер (по сравнению с cisc). В итоге команды , которые исполняются за 3 такта у avr исполняются за один такт. Если бы команды были разной длины , как в cisc, то смысла в конвеере становилось бы меньше. Тут неправильное значение слова Redused. Не сокращенный набор, а набор команд определенной длины. Это где-то встречалось в литературе. Умножение нужно для организации работы с векторами. (особенно умножение с накоплением). Операция clr это операция исключающее или самим с собой по книге Ю. Ревича.

  • @artemhnilov
    @artemhnilov 2 роки тому

    Нужен такой же обзор на ISA RISC-V.

  • @Alex_Ekb
    @Alex_Ekb 3 роки тому

    Как раз сейчас ковыряюсь с эмулятором Z80. Вот думаю, если бы тогда была в тренде RISC, то было бы гораздо проще. А то эти команды с префиксами из которых ещё незапланировано получились двойные и тройные префиксы. Всё это недокументированные возможности и нигде нормально системно не описаны. Вот у меня, например получается, что проц.как честный выбирает один байт после префикса, но если перед префиксом был ещё один префикс, то надо выбирать через один байт, но тот который мы перепрыгиваем тоже учитывается. Короче мозг сломаешь, пока разберёшься. Понятно, почему CISC взлетела - все серьёзные программы писали в ассемблере или в машинных кодах, а на CISC так писать проще. Сейчас же почти всё равно, т.к. компиляторы дофига умные стали. Да и каждый такт никто уже не считает. Время программиста дороже стоит, просто надо брать проц пожирнее, цена в больших партиях всё равно почти одинаковая.

  • @Nidvoraich
    @Nidvoraich 3 роки тому +1

    Может, мышку хотя бы раз в 20 лет стоит менять?)

  • @ВасилийШумилов-о8ь
    @ВасилийШумилов-о8ь 3 роки тому +1

    Читаю "авр - это всегда риск" :)

  • @ВладимирН-ц7ы
    @ВладимирН-ц7ы 3 роки тому

    У AVR полезно смотреть листинг дизассемблера, и можно выбрать лучший вариант по длине. Когда то переносил код написанный для PIC12 на TINY13 и он не влазил с тем же функционалом, А у PIC с его минимумом команд ассемблера еще оставалось место!

    • @IP-cu8uz
      @IP-cu8uz 3 роки тому +1

      Когда нужно было переделать прогу с 8к на 4к кристалл, заменял прожорливые команды lds sts на ldd std. Операции сравнения с нолём, загрузки ноля в ОЗУ достойны того, чтобы завести отдельный регистр с сответствующим значением, я делал ZeroReg и иногда OneReg.

  • @ВладимирМ-е6ь
    @ВладимирМ-е6ь 3 роки тому +3

    Поколение ЕГЭ пошло в погроммисты.

  • @kestvvv
    @kestvvv 3 роки тому

    Пишу на асме. Часто использую тини 13 как дополнительный контроллер к основному.дешево и сердито.
    Для ускорения программы к примеру использую один из регистров под нулевое значение.

    • @Di_Maro
      @Di_Maro 3 роки тому

      эта фишка компиляторов Studio да и в Arduino... если дизассемблировать любую результирующую программу состряпанную на СИ, то увидим в коде - в теле инициализации R1 очищается (сбрасывается) и используется в дальнейшем как регистр с нулевым значением

    • @dreamer4104
      @dreamer4104 3 роки тому +1

      Я ещё под единичку часто использую т.к. inc не изменяет C
      а сложение константы с обраткой устанавливает C

  • @АндрейК-т9э
    @АндрейК-т9э 3 роки тому

    Объясните пожалуйста, на сколько это все актуально в эпоху 32-битных МК? Сразу предупрежу, что я жертва ЕГЭ, хоть и родился в той самой уже не существующей стране

    • @alexmorozov73
      @alexmorozov73  3 роки тому

      Для простых задач простые решения всегда будут эффективнее и дешевле.

    • @parennasubaru
      @parennasubaru 3 роки тому

      Если у тебя много свободного времени и ты живешь на мамину пенсию это интересное занятие. В реальной жизни нет смысла опускаться на низкий уровень ( это скорее показатель отсутствия профессионализма) , это экономически нецелесообразно.

  • @nyannyan8243
    @nyannyan8243 2 роки тому

    Самая классная архитектура проца и красивая система команд была у Z80!

    • @alexmorozov73
      @alexmorozov73  2 роки тому

      Видимо потому, что у вас она была "первая". :) У меня кажется тоже. Но это вроде бы усовершенствованный i8080, хотя я с Intel знаком только с 8086 и выше.

  • @ololololo-l5z
    @ololololo-l5z 3 роки тому

    риск это stm чуть пин перегрузил и топаеш на новым мк

    • @igorovcharov7424
      @igorovcharov7424 3 роки тому

      буферы применить религия не позволяет?
      А можно вообще сделать выходные на оптопарах, раз уж так коробит от буферов.

    • @ololololo-l5z
      @ololololo-l5z 3 роки тому

      @@igorovcharov7424 это я просто как факт у меня такой проблеммы небыло(потомучьто я не узаю stm)

  • @parennasubaru
    @parennasubaru 3 роки тому

    Это ты смотришь в современных реалиях, на момент создания не все команды были одноактные.

  • @euspro
    @euspro 3 роки тому

    Да бывает туго. Тема норм!

  • @АндрейМихайлов-о6я3ц

    те команды, "без которых можно было бы обойтись", в RISC - зачастую просто макросы, для удобства пользователя, реально компилятором может генерироваться тот же двоичный код для DEC, что и для SUB 1, например, просто потому что команды DEC на самом деле не существует.

    • @alexmorozov73
      @alexmorozov73  3 роки тому +2

      Потрудитесь посмотреть в наборе инструкций для AVR двоичные коды команд DEC и SUBI, чтобы не утверждать, что одна из них мнемоника другой.
      Тут товарищ Di Maro в комментах верно выписал многие команды, которые суть мнемоники. Вот сразу видно - "врач". :)

  • @olexangrstetsiuk3092
    @olexangrstetsiuk3092 3 роки тому

    99,99% компиляторов умнее меня, но Ооочень хочу понимать правильно : определения ,,команда,, для процессора. Спросить больше не у кого , ,,Коменда,, это часть электрической схемы ,состоящая из конкретного набора конкретных триггеров , в которую поступают данные и на выходе получим результат именно только от одного конкретного действия, так ли это???

    • @alexmorozov73
      @alexmorozov73  3 роки тому

      В простейшем случае да, это часть схемы, реагирующая на определенный префикс от декодера команд и знающая, что делать с остальной частью команды (операндом/и).
      В современных МП (не МК) как правило есть внутренний транслятор, который переводит команды (как правило достаточно высокоуровневые) в более простые низкоуровневые (нередко не 1 к 1), которые уже в силиконе реализованы окончательно. На простых командах проще повышать скорость выполнения (стремясь к 1 такту на команду или даже к нескольким командам за такт) и снижать затраты энергии. Дальше параллельное выполнение, предсказание переходов для кеширования кода и пр. Но это все не про МК! Там чем проще - тем лучше.

    • @olexangrstetsiuk3092
      @olexangrstetsiuk3092 3 роки тому

      @@alexmorozov73Большое СПАСИБО, что пытаетесь разъяснить непутевому. И ещё догадка: если в микроконтроллер ,, засунуть,, много команд для паралельного исполнения кода ,тогда те части эл. схемы которые не используются в данный момент все равно потребляют энергию , и это значит, что для мобильности (по питанию) нужно минимизировать количество этих ,,команд,, в архитектуре МК ?

  • @АндрейМихайлов-о6я3ц

    Автор, если вы не понимаете, почему в микроконтроллере есть команда умножения, но нет команды деления, сразу хочется спросить: а вы точно врач? в смысле а вы точно знаете что-то о микроконтроллерах и процессорах?

    • @qa337
      @qa337 7 місяців тому +2

      Вот вы высрать высрали, а знаниями не блеснули. Если вы знаете что-то то расскажите или не пишите ничего. Ценность вашего коммента в данный момент около нуля.

  • @pavlomukosieiev6588
    @pavlomukosieiev6588 3 роки тому

    Благодаря простоте avr дешев и удобен к применению в простых проектах, сейчас микрочип запускает линейку avr da

  • @ArtemKAD1
    @ArtemKAD1 3 роки тому

    Еще внимательней присмотрись. Обращая внимание на то, с какими регистрами каждая из этих команд работает.

    • @Alex_Ekb
      @Alex_Ekb 3 роки тому

      Ну да, для команд с константой доступна только половина регистрового файла. Но это такие мелочи...

  • @IP-cu8uz
    @IP-cu8uz 3 роки тому

    Протестую. Это CISC. Неортогональная система команд. Их слишком много, куча исключений. К сожалению, ядро AVC.

  • @ciklomat
    @ciklomat 3 роки тому

    Это из той серии, что если перевести 0.1 в двоичную систему,переведя обратно в десятичную мы 0.1 уже ни когда не получим.ua-cam.com/video/G-TdIFOHcWY/v-deo.html