Trick with SBB instruction
spamtrap_at_crayne.org
Date: 01/10/05
- Previous message: Nucleo: "Re: .bss section not initialized to zero."
- Next in thread: Omega Red : "Re: Trick with SBB instruction"
- Reply: Omega Red : "Re: Trick with SBB instruction"
- Reply: Terje Mathisen : "Re: Trick with SBB instruction"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Date: Mon, 10 Jan 2005 19:00:15 +0000 (UTC)
I have seen some (uncommented) Intel assembler code that
frequently uses the following pair of lines:
sbb eax,eax
sbb eax,0FFFFFFFFh
and I was wondering what this is intended to achieve.
Some Googling on 'sbb' indicates that the first is a
well-known trick for setting eax to 0 if the carry flag
is not set and to 0FFFFFFFFh otherwise.
But it isn't immediately obvious what the second instruction
then adds to the construction.
It would help if I was convinced that the following two
register operations were identical for all operand values:
reg1 = (reg1 - reg2) - carry
or
reg1 = reg1 - (reg2 + carry)
and if not, which one is the way "sbb reg1,reg2" does things?
Cheers
John Ramsden
- Previous message: Nucleo: "Re: .bss section not initialized to zero."
- Next in thread: Omega Red : "Re: Trick with SBB instruction"
- Reply: Omega Red : "Re: Trick with SBB instruction"
- Reply: Terje Mathisen : "Re: Trick with SBB instruction"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]