News for hackers. Stuff that matters.
Re:I've been writing ring buffers wrong all these years by SamReidHughes on Wednesday December 14, 2016 @04:02PM (#13179628)
You don't need a conditional. You can set up a mask using sbb.

                  ; precondition: 0 <= x <= N
                  ; (N is constant)
    mov y, 0      ; set up mask
    cmp x, N-1    ; set carry flag if x >= N
    sbb y, 0      ; subtract 1 from y if carry flag set
    and x, y      ; set x to zero if x == N
Re:I've been writing ring buffers wrong all these years by jnordwick on Wednesday December 14, 2016 @10:23PM (#13182130)
The cmov looks better than sbb, but both have data dependencies than a predicted branch wouldn't.
Re:I've been writing ring buffers wrong all these years by SamReidHughes on Thursday December 15, 2016 @12:00AM (#13182557)
Ahh! Serves me right for reading books from before the 486 :P