PowerPC имеет bdnz
и специальный регистр обратного отсчета ctr
. Уменьшение ctr
и условное ветвление не зависят от фактического теста условий, поэтому вы можете добавить условие поверх bdnz
, например, bdnzlt cr5, label
(если память служит) проверит, хранится ли младший бит в cr5, и И или ИЛИ что с условием ctr
становится 0.
Как ни странно, ctr
также используется для хранения любого косвенного назначения вызова функции. Таким образом, можно закодировать инструкцию «декремент ctr
и перейти к ее новому значению, если не к нулю», но это специально запрещено. (В любом случае он не будет проверять NULL-указатель.) Довольно существенно, что bdnz
становится довольно бесполезным в цикле с косвенным вызовом.