⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bits.c

📁 这是一个同样来自贝尔实验室的和UNIX有着渊源的操作系统, 其简洁的设计和实现易于我们学习和理解
💻 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 + -