Какие принципиальные отличия между набором команд Intel/AMD и ARM?
хм, ну если в двух словах, у ARM команд мало, и «сделать пиздато работающий софт» была задача компилятора (а в лохматые времена компилятор был тупой и не мог). У x86_64 команд разных дофига, и низкоуровневый софт сложный было писать проще.
Сейчас 86_64 не выполняет свои сложные команды как есть, внутри стоит такой же RISC-исполнитель, как и у ARM, НО.
у ARM'ов текущих математическая часть чуть проще (не сильно), а вот часть, отвечающая за магию «предсказания ветвлений» и «внеочерёдного исполнения инструкций» сильно проще.