Und wozu das alles? Für PID-Regler oder so? Oder sin/cos?

Nette Spielwiese übrigens, hier der logarithmus dualis:

Code:
static inline uint8_t log_2 (uint8_t);

// log(x) / log(2) mit 1 <= x < 2
uint8_t log_2 (uint8_t x)
{
    uint8_t log, cnt;
    asm volatile ("; %[log] = log_2 (%[x]) "       "\n\t"
        "ldi     %[cnt], 7"                        "\n\t"
        "clr     %[log]"                           "\n"
        "0:"                                       "\t"
        "lsl     %[log]"                           "\n\t"          
        "fmul    %[x], %[x]"                       "\n\t"
        "brcc    1f"                               "\n\t"
        "ror     r1"                               "\n\t"
        "inc     %[log]"                           "\n"
        "1:"                                       "\t"
        "mov     %[x], r1"                         "\n\t"
        "dec     %[cnt]"                           "\n\t"
        "brne    0b"                               "\n\t"
        "clr     __zero_reg__"
        : [log] "=r" (log), [x] "=a" (x), [cnt] "=d" (cnt)
        : "1" (x)
     );

    return log;
}