История изменений
Исправление byko3y, (текущая версия) :
И еще, у авр есть проблемы с ветвлением? Хотя такие короткие прыжки не вызовут проблем даже у современных x86.
У AVR нет предсказания ветвлений, нет кэшей, нет конвейера и вообще это примитивный проц, для него это всё не нужно
Старнно, что никто не упомянул ARM:
https://gcc.godbolt.org/z/n9hrEK — версия с «if» выдает короче код.
https://gcc.godbolt.org/z/hWx4dv — а шланг выдает одинаковый код.
Также для меня странно, что кто-то называет ARM RISC архитектурой на фоне инструкций вроде:
«movn» — сделать битовое отрицание и поместить результат в регистр;
«eon w0, w0, w0, asr 31» — сдвинуть w0 на 31 бит, инвертировать результат, выполнить XOR результата с w0, поместить результат в w0. Или вот:
«ldrh w0,[w1,-w2]!» — прочитать полуслово по адресу w1-w2, и записать его в регистр w0.
Отличный сокращенный набор инструкций, ага. Для справки, спеки инструкций SPARC примерно раз в десять меньше спек ARM. Потому ARM тупо копирует принцип CISC архитектур, вроде x86, но с небольшими и важными изменениями:
— в два раза больше регистров;
— в одной операции не могут сочетаться чтение и запись;
— следствие: атомарные операции заменены на LL/SC.
— следствие: менее строгая модель памяти, поскольку теряется необходимость соблюдения порядка чтение-чтение, чтение-запись, и запись-запись между ядрами.
В остальном ARM — это самая обычная CISC архитектура.
Исправление byko3y, :
И еще, у авр есть проблемы с ветвлением? Хотя такие короткие прыжки не вызовут проблем даже у современных x86.
У AVR нет предсказания ветвлений, нет кэшей, нет конвейера и вообще это примитивный проц, для него это всё не нужно
Старнно, что никто не упомянул ARM:
https://gcc.godbolt.org/z/n9hrEK — версия с «if» выдает короче код.
https://gcc.godbolt.org/z/hWx4dv — а шланг выдает одинаковый код.
Также для меня странно, что кто-то называет ARM RISC архитектурой на фоне инструкций вроде:
«movn» — сделать битовое отрицание и поместить результат в регистр;
«eon w0, w0, w0, asr 31» — сдвинуть w0 на 31 бит, инвертировать результат, выполнить XOR результата с w0, поместить результат в w0. Или вот:
«ldrh w0,[w1,-w2]!» — прочитать полуслово по адресу w1-w2, и записать его в регистр w0.
Отличный сокращенный набор инструкций, ага. Для справки, спеки инструкций SPARC примерно раз в десять меньше спек ARM. Потому ARM тупо копирует принцип CISC архитектур, вроде x86, но с небольшими и важными изменениями:
— в два раза больше регистров;
— в одной операции не могут сочетаться чтение и запись;
— следствие: атомарные операции заменены на LL/SC.
— следствие: менее строгая модель памяти, поскольку теряется необходимость соблюдения порядка чтение-чтение, чтение-запись, и запись-запись между ядрами.
В остальном ARM — это самая обычная CISC архитектура.
Исходная версия byko3y, :
И еще, у авр есть проблемы с ветвлением? Хотя такие короткие прыжки не вызовут проблем даже у современных x86.
У AVR нет предсказания ветвлений, нет кэшей, нет конвейера и вообще это примитивный проц, для него это всё не нужно
Старнно, что никто не упомянул ARM:
https://gcc.godbolt.org/z/n9hrEK — версия с «if» выдает короче код.
https://gcc.godbolt.org/z/hWx4dv — а шланг выдает одинаковый код.
Также для меня странно, что кто-то называет ARM RISC архитектурой на фоне инструкций вроде «movn» — сделать битовое отрицание и поместить результат в регистр; eon w0, w0, w0, asr 31 — сдвинуть w0 на 31 бит, инвертировать результат, выполнить XOR результата с w0, поместить результат в w0. Или вот:
«ldrh w0,[w1,-w2]!» — прочитать полуслово по адресу w1-w2, и записать его в регистр w0.
Отличный сокращенный набор инструкций, ага. Для справки, спеки инструкций SPARC примерно раз в десять меньше спек ARM. Потому ARM тупо копирует принцип CISC архитектур, вроде x86, но с небольшими и важными изменениями:
— в два раза больше регистров;
— в одной операции не могут сочетаться чтение и запись;
— следствие: атомарные операции заменены на LL/SC.
— следствие: менее строгая модель памяти, поскольку теряется необходимость соблюдения порядка чтение-чтение, чтение-запись, и запись-запись между ядрами.
В остальном ARM — это самая обычная CISC архитектура.