/***********************************************************************
* Code listing from "Advanced Linux Programming," by CodeSourcery LLC *
* Copyright (C) 2001 by New Riders Publishing *
* See COPYRIGHT for license information. *
***********************************************************************/
#include
#include
int main (int argc, char* argv[])
{
long max = atoi (argv[1]);
long number;
unsigned position;
volatile unsigned result;
/* Repeat the operation for a large number of values. */
for (number = 1; number <= max; ++number) {
/* Compute the position of the most significant set bit using the
bsrl assembly instruction. */
asm ("bsrl %1, %0" : "=r" (position) : "r" (number));
result = position;
}
return 0;
}