📄 bits.c
字号:
#define EXTERN#include "gc.h"/*Bitsbor(Bits a, Bits b){ Bits c; int i; for(i=0; i<BITS; i++) c.b[i] = a.b[i] | b.b[i]; return c;}*//*Bitsband(Bits a, Bits b){ Bits c; int i; for(i=0; i<BITS; i++) c.b[i] = a.b[i] & b.b[i]; return c;}*//*Bitsbnot(Bits a){ Bits c; int i; for(i=0; i<BITS; i++) c.b[i] = ~a.b[i]; return c;}*/intbany(Bits *a){ int i; for(i=0; i<BITS; i++) if(a->b[i]) return 1; return 0;}/*intbeq(Bits a, Bits b){ int i; for(i=0; i<BITS; i++) if(a.b[i] != b.b[i]) return 0; return 1;}*/intbnum(Bits a){ int i; long b; for(i=0; i<BITS; i++) if(b = a.b[i]) return 32*i + bitno(b); diag(Z, "bad in bnum"); return 0;}Bitsblsh(unsigned n){ Bits c; c = zbits; c.b[n/32] = 1L << (n%32); return c;}/*intbset(Bits a, unsigned n){ int i; if(a.b[n/32] & (1L << (n%32))) return 1; return 0;}*/intBconv(va_list *arg, Fconv *fp){ char str[STRINGSZ], ss[STRINGSZ], *s; Bits bits; int i; str[0] = 0; bits = va_arg(*arg, Bits); while(bany(&bits)) { i = bnum(bits); if(str[0]) strcat(str, " "); if(var[i].sym == S) { sprint(ss, "$%ld", var[i].offset); s = ss; } else s = var[i].sym->name; if(strlen(str) + strlen(s) + 1 >= STRINGSZ) break; strcat(str, s); bits.b[i/32] &= ~(1L << (i%32)); } strconv(str, fp); return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -