/* ---------------------------------------------------------------------- */ /* Copyright (C) 1991 by Natrlich! */ /* This file is copyrighted! */ /* Refer to the documentation for details. */ /* ---------------------------------------------------------------------- */ #include "defines.h" #include "nasm.h" #include #include "y_tab.h" extern char *yylval; void prtname( no) { char *x = 0; fprintf( ESTREAM, "Token %d == ", no); switch( no) { case T_EOL : x = "T_EOL"; break; case T_LABEL : fprintf( ESTREAM, "T_LABEL \"%s\"", yylval); break; case T_DOTEQ : x = "T_DOTEQ"; break; case T_INSTR : x = "T_INSTR"; break; case T_IDENT : fprintf( ESTREAM, "T_IDENT \"%s\"", yylval); break; case T_EXPR : x = "T_EXPR"; break; case T_IF : x = "T_IF"; break; case T_ELSE : x = "T_ELSE" ; break; case T_ENDIF : x = "T_ENDIF"; break; case T_ORG : x = "T_ORG"; break; case T_DS : x = "T_DS"; break; case T_WORD : x = "T_WORD"; break; case T_BYTE : x = "T_BYTE"; break; case T_SBYTE : x = "T_SBYTE"; break; case T_OPT : x = "T_OPT"; break; case T_MACRO : x = "T_MACRO"; break; case T_ENDM : x = "T_ENDM"; break; case T_END : x = "T_END"; break; case T_NUM : x = "T_NUM"; break; case T_ACCU : x = "T_ACCU"; break; case T_AND : x = "T_AND"; break; case T_OR : x = "T_OR"; break; case T_NEQ : x = "T_NEQ"; break; case T_GEQ : x = "T_GEQ"; break; case T_LEQ : x = "T_LEQ"; break; case T_NOT : x = "T_NOT"; break; case T_DEF : x = "T_DEF"; break; case T_NUMBER : fprintf( ESTREAM, "T_NUMBER=%ld", yylval); break; case T_CHAR : x = "T_CHAR"; break; case T_STRING: x = "T_STRING"; break; case T_NO : x = "T_NO"; break; case T_OBJ : x = "T_OBJ"; break; case T_MLIST : x = "T_MLIST"; break; case T_CLIST : x = "T_CLIST"; break; case T_EJECT : x = "T_EJECT"; break; case T_XREF : x = "T_XREF"; break; case T_ERR : x = "T_ERR"; break; case T_PAGE : x = "T_PAGE"; break; case T_ERROR : x = "T_ERROR"; break; case T_TITLE : x = "T_TITLE"; break; case T_DBYTE : x = "T_DBYTE"; break; case T_TAB : x = "T_TAB"; break; case T_FLOAT : x = "T_FLOAT"; break; case T_XFLOAT: x = "T_XFLOAT"; break; case T_UNDEF : x = "T_UNDEF"; break; case T_CBYTE : x = "T_CBYTE"; break; case T_LOCAL : x = "T_LOCAL"; break; case T_SET : x = "T_SET"; break; case T_REF : x = "T_REF"; break; case T_LIST : x = "T_LIST"; break; case T_FILE : x = "T_FILE"; break; case T_PARA : x = "T_PARA"; break; case T_MPARA : x = "T_MPARA"; break; case T_MSPARA : x = "T_MSPARA"; break; case T_MLPARA : x = "T_MLPARA"; break; case T_MLSPARA : x = "T_MLSPARA"; break; case T_INCLUDE : x = "T_INCLUDE"; break; default : switch( no) { case ' ' : x = "[SPACE]"; break; case '\t' : x = "[TAB]"; break; case '\n' : x = "[LF]"; break; case '\r' : x = "[CR]"; break; case '\f' : x = "[FF]"; break; default : if( no > ' ' && no <= 126) fprintf( ESTREAM, "'%c'", no); else fprintf( ESTREAM, "#$%04X", no); } } if( x) fputs( x, ESTREAM); putc( '\n', ESTREAM); } #include #define NOLONGS (sizeof( jmp_buf) >> 2) void show_jmp( s, foo) char *s; jmp_buf foo; { long *p = (long *) foo; int i = 0; fprintf( ESTREAM, "\"%s\":\n", s); do fprintf( ESTREAM, "[%2.2d]:%8.8lx [%2.2d]:%8.8lx [%2.2d]:%8.8lx [%2.2d]:%8.8lx\n", i, *p, i+1, p[1], i+2, p[2], i+3, p[3]); while( p +=4, (i+=4) < NOLONGS); } void dump_buffer( p) register buffer huge *p; { register int i = 0, j; while( p) { for( j = i; j; --j) putc( ' ', ESTREAM); fprintf( ESTREAM, "BUFFER @$%lx\n", p); for( j = i; j; --j) putc( ' ', ESTREAM); fprintf( ESTREAM," ->next : $%lx ->before : $%lx\n", p->next, p->before); for( j = i; j; --j) putc( ' ', ESTREAM); fprintf( ESTREAM, "buflist : $%lx name : \"%s\"\n", p->buflist, p->name); for( j = i; j; --j) putc( ' ', ESTREAM); fprintf( ESTREAM, "remain = %ld oremain = %ld line = %d\n", p->remain, p->oremain, p->line); for( j = i; j; --j) putc( ' ', ESTREAM); fprintf( ESTREAM, "_aux1 = %d _aux2 = %d type = %x\n", p->_aux1, p->_aux2, p->type); i += 3; p = p->before; } }