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

📄 asize.c

📁 操作系统源代码
💻 C
字号:
/* @(#)asize.c	1.4 */#define	ushort	unsigned short#include	<stdio.h>#include 	"out.h"/*	asize -- determine object size*/main(argc, argv)char **argv;{	struct outhead	buf;	struct outsect	sbuf;	ushort		nrsect;	long		sum;	int		gorp;	FILE		*f;	if (--argc == 0) {		argc = 1;		argv[1] = "a.out";	}	gorp = argc;	while(argc--) {		if ((f = fopen(*++argv, "r"))==NULL) {			fprintf(stderr, "asize: cannot open %s\n", *argv);			continue;		}		getofmt ((char *)&buf, SF_HEAD , f);		if(BADMAGIC(buf)) {			fprintf(stderr, "asize: %s-- bad format\n", *argv);			fclose(f);			continue;		}		nrsect = buf.oh_nsect;		if (nrsect == 0) {			fprintf(stderr, "asize: %s-- no sections\n", *argv);			fclose(f);			continue;		}		if (gorp > 1)			printf("%s: ", *argv);		sum = 0;		while (nrsect-- > 0) {			getofmt ((char *)&sbuf, SF_SECT , f);			printf("%ld", sbuf.os_size);			sum += sbuf.os_size;			if (nrsect > 0)				putchar('+');		}		printf(" = %ld = 0x%lx\n", sum, sum);		fclose(f);	}}getofmt(p, s, f)register char	*p;register char	*s;register FILE	*f;{	register i;	register long l;	for (;;) {		switch (*s++) {/*		case '0': p++; continue; */		case '1':			*p++ = getc(f);			continue;		case '2':			i = getc(f);			i |= (getc(f) << 8);			*((short *)p) = i; p += sizeof(short);			continue;		case '4':			l = (long)getc(f);			l |= ((long)getc(f) << 8);			l |= ((long)getc(f) << 16);			l |= ((long)getc(f) << 24);			*((long *)p) = l; p += sizeof(long);			continue;		default:		case '\0':			break;		}		break;	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -