Не удалось найти 32-битные пакеты DEBIAN ARMv8 -в Интернете

Я рекомендую использовать такой формат:

foo() {
  # Limit scope of variables
  local 'opt1' 'opt2' 'opt3' 'operands'

  # Default values
  opt1='default1'
  opt2='default2'
  opt3='false'
  operands=()

  # Arguments handling
  while (( ${#} > 0 )); do
    case "${1}" in
      ( '--opt1='* ) opt1="${1#*=}" ;;           # Handles --opt1
      ( '--opt2='* ) opt2="${1#*=}" ;;           # Handles --opt2
      ( '--opt3='* ) opt3="${1#*=}" ;;           # Handles --opt3
      ( '--' ) operands+=( "${@:2}" ); break ;;  # End of options
      ( '-'?* ) ;;                               # Discard non-valid options
      ( * ) operands+=( "${1}" )                 # Handles operands
    esac
    shift
  done

 ...
}

Таким образом, функция будет более надежной и читабельной:

$ foo
Options:
  opt1: [default1]
  opt2: [default2]
  opt3: [false]
$ foo --opt1='value1' --opt2='value2' --opt3='true' 'foo' 'bar' 'baz'
Options:
  opt1: [value1]
  opt2: [value2]
  opt3: [true]
Operands:
  1: [foo]
  2: [bar]
  3: [baz]

Плюсы:

  • Легко читать и понимать.
  • Синтаксис подобен любой типичной утилите командной -строки.
  • Можно легко добавить дополнительные параметры, не нарушая совместимости.

Минусы:

  • Может быть излишним для небольших и простых скриптов.
  • Трудно написать переносимый и совместимый с POSIX -эквивалент, который также обрабатывает длинные -опции и операнды.
1
05.08.2020, 23:59
1 ответ

Технически ARMv8 состоит из 64-битной -архитектуры, называемой Aarch64, и 32-битной -архитектуры, называемой Aarch32. Некоторые чипы ARMv8 имеют только 32-битную архитектуру -. Но на практике «ARMv8» обычно используется для обозначения Aarch64. Aarch32 обратно совместим с ARMv7 и добавляет к нему очень мало расширений. Так что я полагаю, что нет особой потребности в оптимизированных для ARMv8 32 -битных двоичных файлах.

Единственная функция Aarch32, отсутствующая в ARMv7, которую я могу назвать без исследований, — это криптографическое ускорение (для AES, SHA -1, SHA -2 и GCM ), но это наблюдение. предвзятость с моей стороны, и, насколько я помню, есть несколько других незначительных расширений (, может быть, какие-то новые SIMD-инструкции? ). Кроме того, в Aarch32 всегда присутствуют некоторые дополнительные функции ARMv7, такие как регистры с плавающей запятой -/ SIMD.

На практике armhfдвоичные файлы (для ARMv7 с плавающей запятой и SIMD )хорошо работают для Aarch32.

Если вы хотите анализировать существующие двоичные файлы, вам потребуются инструменты, поддерживающие любые функции, используемые этими двоичными файлами. На практике, большинство из 32 -бинарных файлов, которые вы найдете, используют только инструкции из набора, предназначенного для armhf.

Между прочим, существует еще одно широко распространенное использование неточной терминологии, которая не имеет значения, если вы рассматриваете дистрибутивы Unix, но может появиться при просмотре названий архитектур в таких инструментах, как флаги компилятора. Полные названия ARMv7 и ARMv8 — «ARMv7 -A» и «ARMv8 -A». Суффикс «-A» указывает на «высокие -конечные» процессоры с MMU. В контексте Unix это единственные релевантные процессоры Arm, поскольку остальные не имеют MMU.Но есть два других класса архитектур Arm, которые не имеют MMU (, но могут иметь MPU ):R (, микроконтроллер реального времени -)и M (). У них разные характеристики; например, ARMv8 -M — это всего лишь 32-разрядная -битная архитектура.

2
18.03.2021, 23:14

Теги

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