Сначала немного фона. Процессор z80 имеет команду под названием DJNZ, которая может использоваться аналогично циклу for
. В принципе DJNZ уменьшает регистр B и переходит на метку, если не равен нулю. Например:Эквиваленты инструкции Z80 DJNZ на другие архитектуры?
ld b,96 ; erase all of the line
disp_version_erase_loop:
call _vputblank ; erase pixels at cursor (uses b reg)
djnz disp_version_erase_loop ; loop
Конечно, вы можете сделать то же самое, используя регулярные сравнения и прыжковые инструкции, но часто бывает удобно использовать одну команду.
С учетом этого, мой вопрос заключается в том, что другие архитектуры процессора включают в себя аналогичную инструкцию по управлению?
Это полезно, потому что проверка счетчика циклов не использует никаких флагов. Не нужно путаться, если флаги используются для чего-то в цикле/в любом случае есть только один набор флагов/управление зависимостями регистра не очень умно (например, чипы POWER могут иметь только 1 переименование для регистра условий). Уменьшение - просто удобный бонус для обычного случая. (Например, у ARM есть бит сравнения и ветвления, если нуль/не нуль.) (MIPS, как альтернативный пример, не имеет регистра флагов. Это другой способ решения этой проблемы.) – 2010-05-03 21:07:01