168 {
169 int8_t result;
170#if !defined(__AVR__)
171 result = (
hash & (1<<bitnumber)) ? a : b;
172#else
173 asm volatile(
174 "mov %[result],%[a] \n\t"
175 "sbrs %[hash],%[bitnumber] \n\t"
176 "mov %[result],%[b] \n\t"
177 : [result] "=r" (result)
179 [bitnumber] "M" (bitnumber),
180 [a] "r" (a),
181 [b] "r" (b)
182 );
183#endif
184 return result;
185}