Синтаксис унифицированного ассемблера , который поддерживает цели A32 и T32, добавил здесь некоторую путаницу.То, что показано в разборке, является более многословным, чем то, что закодировано в кодах операций.
Ваша ITE
инструкция очень похожа на заполнитель набора команд большого пальца, она определяет блок IT, который охватывает следующие две инструкции (и, будучи большим пальцем, эти две инструкции не являются индивидуально условными).С точки зрения микроархитектуры / синхронизации необходимо выполнить только одну инструкцию (но не следует предполагать, что это свертывание всегда происходит).
Синтаксис strle
/ strgt
можетиспользоваться самостоятельно для цели T32, где блок IT не является необходимым, поскольку в наборе команд есть специальное поле кода условия.
Для написания (или дизассемблирования) кода, который может использоваться ассемблерами A32 и T32, здесь у вас есть оба подхода к условному выполнению, написанные вместе.Это дает преимущество в том, что одна и та же процедура сборки может быть более переносимой (даже если результирующий код не идентичен - оптимизации в целевом процессоре также будут другими).
С T32 комбинация it
и одна 16-битная инструкция соответствует плотности команд эквивалентной инструкции A32, если можно объединить более одной условной инструкции, общий выигрыш.