📄 asize.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 + -