30.3.1.1. РЕГИСТР ФЛАГОВ И УСЛОВИЯ



Микропроцессор содержит регистр флагов.
Флаги ставятся ALU по результатам операций и используются в операциях
условных переходов.

Как правило практически любой микропроцессор содержит флаги:

	Carry		Переноса
	Zero		Нуля
	Overflow	Переполнения 
	Sign		Знака

Пример регистра флагов для Zilog Z80:


Пример регистра флагов для Intel 8086:

Для сравнения чисел обычно используют команду COMPARE (СРАВНЕНИЕ), которая вычитает второй операнд из первого, но результат никуда не записывается, а просто устанавливаются флаги. CMP A,B ; Set_Flags(A-B) Рассмотрим условия переходов и их связь с флагами и сравнениями на примере нескольких процессоров:


Условия в IA-32

Флаги: CF - carry OF - overflow ZF - zero SF - sign PF - parity


Условия: -------------------------------------------------------------------------- Abbr Unsigned Signed Condition Description -------------------------------------------------------------------------- A/NBE > (CF==0) and (ZF==0) Above/Not Below Equal AE/NB/NC > = CF==0 Above Equal/Not Below/Not Carry B/NAE/C < CF==1 Below/Not Above Equal/Carry BE/NA < = (CF==1) or (ZF==1) Below Equal/Not Above E/Z == == ZF==1 Equal/Zero NE/NZ != != ZF==0 Not Equal/Not Zero G/NLE > (SF==OF) and (ZF==0) Greater/Not Less Equal GE/NL >= (SF==OF) Greater Equal/Not Less L/NGE < SF!=OF Less/Not Greater Equal LE/NG <= (SF!=OF) or (ZF==1) Less Equal/Not Greater NO OF==0 Not Overflow O OF==1 Overflow NP/PO PF==0 No Parity/Parity Odd P/PE PF==1 Parity/Parity even NS SF==0 No Sign S SF==1 Sign ---------------------------------------------------------------------------


Условия в 68K

Регистр флагов для Motorola MC68000:

Флаги: C - carry V - overflow Z - zero N - sign


Условия: --------------------------------------------------------------------------- Abbr Unsigned Signed Condition Description --------------------------------------------------------------------------- NE != != Z==0 Not Equal EQ == == Z==1 Equal HI > (C+Z)==0 Higher LS < = (C+Z)==1 Less Equal HS > = C==0 Higher Equal LO < C==1 Lower GE >= (N xor V) == 0 Greater Equal LT < (N xor V) == 1 Less That GT > Z + (N xor V) == 0 Greater LE <= Z + (N xor V) == 1 Less Equal PL N == 0 Plus MI N == 1 Minus VC V == 0 Overflow Clear VS V == 1 Overflow Set T always 1 True F always 0 False --------------------------------------------------------------------------- TODO: Регистр флагов может содержать группы наборов арифметических флагов как у PowerPC. TODO: Команды могут быть условные от флагов как в IA-64, HP-PA, ARM TODO: Флаги есть у FPU тоже - их мы опишем в соответствующей секции


Index Prev Next