(Да, я рассматриваю свой Motorola 68000 Reference с 1979 года.)
Вероятно, то, о чем вы думаете, это довольно странный бит Х 68000. Бит eXtend по сути является копией бита C (переноса), но не подвержен неарифметическим инструкциям.
Предположим, вы добавляете целые числа из 12 слов, например. В x86 вы можете увидеть что-то вроде:
.
.
loop:
ADC AX,[SI] ; recycle carry-out from last iter as carry-in to this one
LEA SI, [SI+2] ; flags untouched
INC BX ; BX is loop index. sets all flags except CF
CMP BX, 12 ; doh, changes carry (BUG)
JB loop
Этот код не работает, потому что инструкция сравнения сбрасывает флаг переноса. Это одна из причин, почему инструкция loop
была исторически полезна, считая CX до нуля без изменения флагов. Обратный отсчет с помощью dec
/ jnz
также работает, но вызывает задержки с частичным флагом на современном x86. К сожалению, loop
сейчас тоже медленный , поэтому не было никакого хорошего способа сделать такой цикл примерно с 486 до Sandybridge.
Но в 68000:
.
.
loop:
ADDX.W (A0)+, D0 ; both C and X set the same
INC.W D7 ; D7 is loop index
CMP.W #12, D7 ; harms C, but X left intact
BCC loop
Motorola думала, что они делают одолжение программистам, но X-битный бизнес в итоге вызвал больше путаницы, чем оно того стоило.