12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- const
- RS_CR = $00;
- RS_CR0 = $01;
- RS_CR1 = $02;
- RS_CR2 = $03;
- RS_CR3 = $04;
- RS_CR4 = $05;
- RS_CR5 = $06;
- RS_CR6 = $07;
- RS_CR7 = $08;
- type
- TAsmCondFlag = (C_None { unconditional jumps },
- { conditions when not using ctr decrement etc }
- C_LT,C_LE,C_EQ,C_GE,C_GT,C_NL,C_NE,C_NG,C_SO,C_NS,C_UN,C_NU,
- { conditions when using ctr decrement etc }
- C_T,C_F,C_DNZ,C_DNZT,C_DNZF,C_DZ,C_DZT,C_DZF);
- TDirHint = (DH_None,DH_Minus,DH_Plus);
- type
- TAsmCond = bitpacked record
- dirhint : tdirhint;
- case simple: boolean of
- false: (BO, BI: 0..31);
- true: (
- cond: TAsmCondFlag;
- case byte of
- 0: ();
- { specifies in which part of the cr the bit has to be }
- { tested for blt,bgt,beq,..,bnu }
- 1: (cr: RS_CR0..RS_CR7);
- { specifies the bit to test for bt,bf,bdz,..,bdzf }
- 2: (crbit: 0..31)
- );
- end;
- const
- zerocond: tasmcond = (dirhint: DH_Plus;
- simple: true;
- cond:C_NE;
- cr: RS_CR1);
- begin
- with zerocond do
- if (dirhint <> DH_Plus) or
- not simple or
- (cond <> C_NE) or
- (cr <> RS_CR1) then
- halt(1);
- end.
|