首先有一點背景。 z80 CPU有一條叫做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
當然,你使用常規的比較和跳轉指令可以做同樣的事情,但往往是得心應手的單指令。
因此,我的問題是,其他CPU架構是否包含類似的控制指令?
這很有用,因爲循環計數器的測試不使用任何標誌。沒有必要混淆標誌是否用於循環中的某些東西/只有一組標誌/寄存器依賴管理不是很聰明(例如,POWER芯片只能爲條件寄存器重命名一次)。這個遞減對於普通情況來說只是一個方便的獎勵。 (例如,ARM只有比較分支如果爲零/非零位)(MIPS,作爲替代示例,沒有標誌寄存器,這是解決此類問題的另一種方法。) – 2010-05-03 21:07:01