home *** CD-ROM | disk | FTP | other *** search
/ Crawly Crypt Collection 1 / crawlyvol1.bin / program / compiler / nasm20b / nasm_src / ndebug.c < prev    next >
C/C++ Source or Header  |  1993-01-19  |  5KB  |  139 lines

  1. /* ---------------------------------------------------------------------- */
  2. /*                   Copyright (C) 1991 by Natürlich!                     */
  3. /*                      This file is copyrighted!                         */
  4. /*                Refer to the documentation for details.                 */
  5. /* ---------------------------------------------------------------------- */
  6. #include "defines.h"
  7. #include "nasm.h"
  8. #include <stdio.h>
  9. #include "y_tab.h"
  10.  
  11. extern char   *yylval;
  12.  
  13. void prtname( no)
  14. {
  15.    char  *x = 0;
  16.  
  17.    fprintf( ESTREAM, "Token %d == ", no);
  18.    switch( no)
  19.    {
  20.       case T_EOL   :    x = "T_EOL";      break;
  21.       case T_LABEL :    fprintf( ESTREAM, "T_LABEL \"%s\"", yylval); break;
  22.       case T_DOTEQ :    x = "T_DOTEQ";    break;
  23.       case T_INSTR :    x = "T_INSTR";    break;
  24.       case T_IDENT :    fprintf( ESTREAM, "T_IDENT \"%s\"", yylval); break;
  25.       case T_EXPR  :    x = "T_EXPR";     break;
  26.       case T_IF    :    x = "T_IF";       break;
  27.       case T_ELSE  :    x = "T_ELSE" ;    break;
  28.       case T_ENDIF :    x = "T_ENDIF";    break;
  29.       case T_ORG   :    x = "T_ORG";      break;
  30.       case T_DS    :    x = "T_DS";       break;
  31.       case T_WORD  :    x = "T_WORD";     break;
  32.       case T_BYTE  :    x = "T_BYTE";     break;
  33.       case T_SBYTE :    x = "T_SBYTE";    break;
  34.       case T_OPT   :    x = "T_OPT";      break;
  35.       case T_MACRO :    x = "T_MACRO";    break;
  36.       case T_ENDM  :    x = "T_ENDM";     break;
  37.       case T_END   :    x = "T_END";      break;
  38.       case T_NUM   :    x = "T_NUM";      break;
  39.       case T_ACCU  :    x = "T_ACCU";     break;
  40.       case T_AND   :    x = "T_AND";      break;
  41.       case T_OR    :    x = "T_OR";       break;
  42.       case T_NEQ   :    x = "T_NEQ";      break;
  43.       case T_GEQ   :    x = "T_GEQ";      break;
  44.       case T_LEQ   :    x = "T_LEQ";      break;
  45.       case T_NOT   :    x = "T_NOT";      break;
  46.       case T_DEF   :    x = "T_DEF";      break;
  47.       case T_NUMBER :   fprintf( ESTREAM, "T_NUMBER=%ld", yylval); break;
  48.       case T_CHAR  :    x = "T_CHAR";     break;
  49.       case T_STRING:    x = "T_STRING";   break;
  50.       case T_NO    :    x = "T_NO";       break;
  51.       case T_OBJ   :    x = "T_OBJ";      break;
  52.       case T_MLIST :    x = "T_MLIST";    break;
  53.       case T_CLIST :    x = "T_CLIST";    break;
  54.       case T_EJECT :    x = "T_EJECT";    break;
  55.       case T_XREF  :    x = "T_XREF";     break;
  56.       case T_ERR   :    x = "T_ERR";      break;
  57.       case T_PAGE  :    x = "T_PAGE";     break;
  58.       case T_ERROR :    x = "T_ERROR";    break;
  59.       case T_TITLE :    x = "T_TITLE";    break;
  60.       case T_DBYTE :    x = "T_DBYTE";    break;
  61.       case T_TAB   :    x = "T_TAB";      break;
  62.       case T_FLOAT :    x = "T_FLOAT";    break;
  63.       case T_XFLOAT:    x = "T_XFLOAT";   break;
  64.       case T_UNDEF :    x = "T_UNDEF";    break;
  65.       case T_CBYTE :    x = "T_CBYTE";    break;
  66.       case T_LOCAL :    x = "T_LOCAL";    break;
  67.       case T_SET   :    x = "T_SET";      break;
  68.       case T_REF   :    x = "T_REF";      break;
  69.       case T_LIST  :    x = "T_LIST";     break;
  70.       case T_FILE  :    x = "T_FILE";     break;
  71.       case T_PARA  :    x = "T_PARA";     break;
  72.       case T_MPARA :    x = "T_MPARA";    break;
  73.       case T_MSPARA  :  x = "T_MSPARA";   break;
  74.       case T_MLPARA  :  x = "T_MLPARA";   break;
  75.       case T_MLSPARA :  x = "T_MLSPARA";  break;
  76.       case T_INCLUDE :  x = "T_INCLUDE";  break;
  77.       default      :
  78.          switch( no)
  79.          {
  80.             case ' '  : x = "[SPACE]"; break;
  81.             case '\t' : x = "[TAB]";   break;
  82.             case '\n' : x = "[LF]";    break;
  83.             case '\r' : x = "[CR]";    break;
  84.             case '\f' : x = "[FF]";    break;
  85.             default   :
  86.                if( no > ' ' && no <= 126)
  87.                   fprintf( ESTREAM, "'%c'", no);
  88.                else
  89.                   fprintf( ESTREAM, "#$%04X", no);
  90.          }
  91.    }
  92.    if( x)
  93.       fputs( x, ESTREAM);
  94.    putc( '\n', ESTREAM);
  95. }
  96.  
  97. #include <setjmp.h>
  98.  
  99. #define NOLONGS   (sizeof( jmp_buf) >> 2)
  100. void   show_jmp( s, foo)
  101. char     *s;
  102. jmp_buf  foo;
  103. {
  104.    long  *p = (long *) foo;
  105.    int   i = 0;
  106.  
  107.    fprintf( ESTREAM, "\"%s\":\n", s);
  108.    do
  109.       fprintf( ESTREAM, "[%2.2d]:%8.8lx [%2.2d]:%8.8lx [%2.2d]:%8.8lx  [%2.2d]:%8.8lx\n",
  110.                            i, *p, i+1, p[1], i+2, p[2], i+3, p[3]);
  111.    while( p +=4, (i+=4) < NOLONGS);
  112. }
  113.  
  114. void   dump_buffer( p)
  115. register buffer huge *p;
  116. {
  117.    register int   i = 0, j;
  118.    while( p)
  119.    {
  120.       for( j = i; j; --j) putc( ' ', ESTREAM);
  121.       fprintf( ESTREAM, "BUFFER @$%lx\n", p);
  122.       for( j = i; j; --j) putc( ' ', ESTREAM);
  123.       fprintf( ESTREAM," ->next : $%lx   ->before : $%lx\n",
  124.                   p->next, p->before);
  125.       for( j = i; j; --j) putc( ' ', ESTREAM);
  126.       fprintf( ESTREAM, "buflist : $%lx name : \"%s\"\n",
  127.                   p->buflist, p->name);
  128.       for( j = i; j; --j) putc( ' ', ESTREAM);
  129.       fprintf( ESTREAM, "remain = %ld   oremain = %ld  line = %d\n",
  130.                   p->remain, p->oremain, p->line);
  131.       for( j = i; j; --j) putc( ' ', ESTREAM);
  132.       fprintf( ESTREAM, "_aux1 = %d  _aux2 = %d  type = %x\n",
  133.                   p->_aux1, p->_aux2, p->type);
  134.       i += 3;
  135.       p = p->before;
  136.    }
  137. }
  138.  
  139.