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

📄 dis.h

📁 操作系统源代码
💻 H
字号:
 /* ** @(#) dis.h, Ver. 2.1 created 00:00:00 87/09/01 */ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  *                                                         *  *  Copyright (C) 1987 G. M. Harding, all rights reserved  *  *                                                         *  * Permission to copy and  redistribute is hereby granted, *  * provided full source code,  with all copyright notices, *  * accompanies any redistribution.                         *  *                                                         *  * This file contains declarations and definitions used by *  * the 8088 disassembler program. The program was designed *  * for execution on a machine of its own type (i.e., it is *  * not designed as a cross-disassembler);  consequently, A *  * SIXTEEN-BIT INTEGER SIZE HAS BEEN ASSUMED. This assump- *  * tion is not particularly important,  however, except in *  * the machine-specific  portions of the code  (i.e.,  the *  * handler  routines and the optab[] array).  It should be *  * possible to override this assumption,  for execution on *  * 32-bit machines,  by use of a  pre-processor  directive *  * (see below); however, this has not been tested.         *  *                                                         *  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */#include <sys/types.h>#include <a.out.h>      /* Object file format definitions   */#include <fcntl.h>      /* System file-control definitions  */#include <unistd.h>#include <string.h>#include <stdlib.h>#include <stdio.h>      /* System standard I/O definitions  */#define MAXSYM 1500     /* Maximum entries in symbol table  */extern struct nlist     /* Array to hold the symbol table   */   symtab[MAXSYM];extern struct reloc     /* Array to hold relocation table   */   relo[MAXSYM];extern int symptr;      /* Index into the symtab[] array    */extern int relptr;      /* Index into the relo[] array      */struct opcode           /* Format for opcode data records   */{   char *text;          /* Pointer to mnemonic text   */   void (*func)();      /* Pointer to handler routine */   unsigned min;        /* Minimum # of object bytes  */   unsigned max;        /* Maximum # of object bytes  */};extern struct opcode    /* Array to hold the opcode table   */  optab[256];extern char *REGS[];    /* Table of register names          */extern char *REGS0[];   /* Mode 0 register name table       */extern char *REGS1[];   /* Mode 1 register name table       */#define AL REGS[0]      /* CPU register manifests           */#define CL REGS[1]#define DL REGS[2]#define BL REGS[3]#define AH REGS[4]#define CH REGS[5]#define DH REGS[6]#define BH REGS[7]#define AX REGS[8]#define CX REGS[9]#define DX REGS[10]#define BX REGS[11]#define SP REGS[12]#define BP REGS[13]#define SI REGS[14]#define DI REGS[15]#define ES REGS[16]#define CS REGS[17]#define SS REGS[18]#define DS REGS[19]#define BX_SI REGS0[0]#define BX_DI REGS0[1]#define BP_SI REGS0[2]#define BP_DI REGS0[3]extern int symrank[6][6];     /* Symbol type/rank matrix    */extern unsigned long PC;      /* Current program counter    */extern int segflg;      /* Flag: segment override in effect */extern int objflg;      /* Flag: output object as a comment */#define OBJMAX 8        /* Size of the object code buffer   */extern unsigned char    /* Internal buffer for object code  */   objbuf[OBJMAX];extern int objptr;      /* Index into the objbuf[] array    */extern char ADD[],      /* Opcode family mnemonic strings   */            OR[],            ADC[],            SBB[],            AND[],            SUB[],            XOR[],            CMP[],            NOT[],            NEG[],            MUL[],            DIV[],            MOV[],            ESC[],            TEST[],            AMBIG[];extern char *OPFAM[];   /* Indexed mnemonic family table    */extern struct exec HDR; /* Holds the object file's header   */#define LOOK_ABS 0      /* Arguments to lookup() function   */#define LOOK_REL 1#define LOOK_LNG 2#define TR_STD 0        /* Arguments to mtrans() function   */#define TR_SEG 8                        /* Macro for byte input primitive   */#define FETCH(p)  ++PC; p = getchar() & 0xff; objbuf[objptr++] = p/* disfp.c */_PROTOTYPE(void eshand, (int j ));_PROTOTYPE(void fphand, (int j ));_PROTOTYPE(void inhand, (int j ));/* dishand.c */_PROTOTYPE(void objini, (int j ));_PROTOTYPE(void objout, (void));_PROTOTYPE(void badseq, (int j, int k ));_PROTOTYPE(void dfhand, (int j ));_PROTOTYPE(void sbhand, (int j ));_PROTOTYPE(void aohand, (int j ));_PROTOTYPE(void sjhand, (int j ));_PROTOTYPE(void imhand, (int j ));_PROTOTYPE(void mvhand, (int j ));_PROTOTYPE(void mshand, (int j ));_PROTOTYPE(void pohand, (int j ));_PROTOTYPE(void cihand, (int j ));_PROTOTYPE(void mihand, (int j ));_PROTOTYPE(void mqhand, (int j ));_PROTOTYPE(void tqhand, (int j ));_PROTOTYPE(void rehand, (int j ));_PROTOTYPE(void mmhand, (int j ));_PROTOTYPE(void srhand, (int j ));_PROTOTYPE(void aahand, (int j ));_PROTOTYPE(void iohand, (int j ));_PROTOTYPE(void ljhand, (int j ));_PROTOTYPE(void mahand, (int j ));_PROTOTYPE(void mjhand, (int j ));/* dismain.c */_PROTOTYPE(void main, (int argc, char **argv ));/* distabs.c */_PROTOTYPE(char *getnam, (int k ));_PROTOTYPE(int lookext, (long off, long loc, char *buf ));_PROTOTYPE(char *lookup, (long addr, int type, int kind, long ext ));_PROTOTYPE(char *mtrans, (int c, int m, int type ));_PROTOTYPE(void mtrunc, (char *a ));

⌨️ 快捷键说明

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