📄 bitops.h
字号:
#ifdef __i386__#define bitop(name,op) \static inline int name(char * addr,unsigned int nr) \{ \int __res; \__asm__ __volatile__("bt" op " %1,%2; adcl $0,%0" \:"=g" (__res) \:"r" (nr),"m" (*(addr)),"0" (0)); \return __res; \}bitop(bit,"")bitop(setbit,"s")bitop(clrbit,"r")#elif defined(__mc68000__)#define bitop(name,op) \static inline int name (char *addr, unsigned int nr) \{ \ char __res; \ __asm__ __volatile__("bf" op " %2@{%1:#1}; sne %0" \ : "=d" (__res) \ : "d" (nr ^ 15), "a" (addr)); \ return __res != 0; \}bitop (bit, "tst")bitop (setbit, "set")bitop (clrbit, "clr")#elsestatic inline int bit(char * addr,unsigned int nr) { return (addr[nr >> 3] & (1<<(nr & 7))) != 0;}static inline int setbit(char * addr,unsigned int nr){ int __res = bit(addr, nr); addr[nr >> 3] |= (1<<(nr & 7)); return __res != 0; \}static inline int clrbit(char * addr,unsigned int nr){ int __res = bit(addr, nr); addr[nr >> 3] &= ~(1<<(nr & 7)); return __res != 0;}#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -