コード例 #1
0
ファイル: vmm.c プロジェクト: PSanf2/POS_C9
void vmm_print_list(list_type *list)
{
	put_str("\nlist=");
	put_hex((u32int) list);
	
	put_str(" first=");
	put_hex((u32int) list->first);
	
	put_str(" last=");
	put_hex((u32int) list->last);
	
	if (list->first != NULL)
	{
		list_node_type *current = list->first;
		do
		{
			vmm_print_node(current);
			current = current->next;
		} while (current != NULL);
	}
	else
	{
		put_str("\nEmpty list.");
	}
	put_str("\n");
}
コード例 #2
0
ファイル: overlay2.c プロジェクト: ArtemioUrbina/huc
int main()
{
  load_default_font();
  put_string("Lo", 0, 2);
  put_hex(&__huc_rodata, 4, 0, 3);
  put_hex(&__huc_rodata_end, 4, 5, 3);
  put_hex(&__huc_data, 4, 10, 3);
  put_number(a, 5, 15, 3);
  for(;;);
}
コード例 #3
0
ファイル: nolibc.c プロジェクト: CarlChenCC/examples
int main(int argc, char const* const* argv) {
    put("argc = "); put_long(argc); put("\n");
    for(int i = 0; i < argc; ++i) {
        put("argv["); put_long(i); put("]="); put(argv[i]); put("\n");
    }

    put("__libc_csu_fini: "); put_hex(&__libc_csu_fini, sizeof(__libc_csu_fini)); put("\n");
    put("__libc_csu_init: "); put_hex(&__libc_csu_init, sizeof(__libc_csu_init)); put("\n");

    return 0;
}
コード例 #4
0
ファイル: vmm.c プロジェクト: PSanf2/POS_C9
void vmm_print_node(list_node_type *node)
{
	print_node(node);
	
	vmm_data_type *node_data = (vmm_data_type *) node->data;
	
	put_str("\n\tnode_data=");
	put_hex((u32int) node_data);
	
	put_str(" virt_addr=");
	put_hex(node_data->virt_addr);
	
	put_str(" size=");
	put_hex(node_data->size);
}
コード例 #5
0
ファイル: mem_test5.c プロジェクト: yuehan21ql/ArchLab2015
void check(unsigned int mem, unsigned int expected_val) {
    if(mem == expected_val) {
        putc('Y', vga);
        put_hex(mem, vga + 2);
        put_hex(expected_val, vga + 14);
        vga += screen_width/4;
    }
    else {
        deref(0xddd00000) = 0;
        putc('N', vga);
        put_hex(mem, vga + 2);
        put_hex(expected_val, vga + 14);
        vga += screen_width/4;
    }
}
コード例 #6
0
ファイル: command.c プロジェクト: 2dice/aki-h8_3069f
int16
command_dump (void)
{
  put_string ("size: ");
  put_hex (size, 2);
  put_string ("\n");
  dump (xmodem_recv_buffer_start_address, size);

  return 0;
}
コード例 #7
0
ファイル: debug_queue_load.c プロジェクト: show41/ArchLab2015
int main() {
  char* vga = VMEM + screen_width*2 + 5;
  unsigned val = 0xffff0001;
  unsigned val2 = 0xaaaa0001;
  unsigned addr = 0;
  unsigned addr_step = 0x800;
  union debug_que_entry dqe;
  for (int i = 0; i < 6; ++i) {
    deref(addr) = val;
    deref(addr+16) = val2;
    val += 1;
    val2 += 1;
    addr += addr_step;
  }

  addr = 0;
  for (int i = 0; i < 6; ++i) {
    put_hex(deref(addr+16), vga);
    vga += screen_width/10;
    put_hex(deref(addr), vga);
    vga += screen_width/10;

    vga += screen_width/10 * 8;
    addr += addr_step;
  }
  vga += screen_width*2;


  for (unsigned j = 0; j < (64 << 4); j += 16) {
    dqe.part[3] = deref(0xd0000000 | j | (0 << 2));
    dqe.part[2] = deref(0xd0000000 | j | (1 << 2));
    dqe.part[1] = deref(0xd0000000 | j | (2 << 2));
    dqe.part[0] = deref(0xd0000000 | j | (3 << 2));

    put_hex(dqe.part[0], vga);
    vga += screen_width/10;
    put_hex(dqe.part[1], vga);
    vga += screen_width/10;
    put_hex(dqe.part[2], vga);
    vga += screen_width/10;
    put_hex(dqe.part[3], vga);
    vga += screen_width/10 * 7;

    if (j == (16 << 4) || j == (32 << 4) || j == (48 << 4)) {
      vga += screen_width;
    }
  }

  putc('N', vga++);
  putc('I', vga++);
  putc('C', vga++);
  putc('E', vga++);
  deref(0xdddd0000) = 0;
  return 0;
}
コード例 #8
0
ファイル: command.c プロジェクト: 2dice/aki-h8_3069f
int16
command_run (void)
{
  int8 *entry_point;
  void
  (*f) (void);

  entry_point = elf_load (xmodem_recv_buffer_start_address);
  if (!entry_point)
    {
      put_string ("run error!\n");
    }
  else
    {
      put_string ("starting from entry point:");
      put_hex ((uint32) entry_point, 6);
      put_string ("\n");
      put_string ("\n");
      f = (void
      (*) (void)) entry_point;
      f ();
    }
  return 0;
}
コード例 #9
0
ファイル: hbprintf.c プロジェクト: ItamarLins/harbour-core
int hb_vsnprintf( char * buffer, size_t bufsize, const char * format, va_list ap )
{
   va_list args;
   size_t size;
   char c;

#ifndef __NO_ARGPOS__
   const char * fmt_start = format;
   v_param argbuf[ _ARGBUF_SIZE ];
   v_paramlst params;

   params.size = _ARGBUF_SIZE;
   params.maxarg = 0;
   params.arglst = argbuf;
#endif


#ifndef __NO_ARGPOS__
   do
   {
      params.repeat = HB_FALSE;
      if( params.maxarg > 0 )
      {
         va_copy( args, ap );
         va_arg_fill( &params, args );
         va_end( args );
      }
      format = fmt_start;
#endif
      va_copy( args, ap );
      size = 0;

      do
      {
         c = *format++;
         if( c == '%' )
         {
            const char * pattern = format;

            c = *format++;
            if( c != 0 && c != '%' )
            {
               /* decode pattern */
               v_param argval;
               int param = 0, flags = 0, width = -1, precision = -1, length,
                   value, stop = 0;

               /* parameter position */
               if( c >= '0' && c <= '9' )
               {
                  c = get_decimal( c, &format, &value );
                  if( c == '$' )
                     param = value;
                  else
                     format = pattern;
                  c = *format++;
               }

               /* flags */
               while( ! stop )
               {
                  switch( c )
                  {
                     case '#':
                        flags |= _F_ALTERNATE;
                        c = *format++;
                        break;
                     case '0':
                        flags |= _F_ZEROPADED;
                        c = *format++;
                        break;
                     case '-':
                        flags |= _F_LEFTADJUSTED;
                        c = *format++;
                        break;
                     case ' ':
                        flags |= _F_SPACE;
                        c = *format++;
                        break;
                     case '+':
                        flags |= _F_SIGN;
                        c = *format++;
                        break;
#ifdef _SUSV2_COMPAT_
                     case '\'':  /* group with locale thousands' grouping characters */
                        c = *format++;
                        break;
#endif
                     default:
                        stop = 1;
                        break;
                  }
               }

               /* field width */
               if( c == '*' )
               {
                  c = *format++;
                  if( c >= '0' && c <= '9' )
                  {
                     c = get_decimal( c, &format, &value );
                     if( c == '$' )
                     {
                        width = va_arg_n( args, _x_int, value );
                        c = *format++;
                     }
                     /* else error, wrong format */
                  }
                  else
                     width = va_arg_n( args, _x_int, 0 );
               }
               else if( c >= '0' && c <= '9' )
                  c = get_decimal( c, &format, &width );

               /* precision */
               if( c == '.' )
               {
                  precision = 0;
                  c = *format++;
                  if( c == '*' )
                  {
                     c = *format++;
                     if( c >= '0' && c <= '9' )
                     {
                        c = get_decimal( c, &format, &value );
                        if( c == '$' )
                        {
                           precision = va_arg_n( args, _x_int, value );
                           c = *format++;
                        }
                        /* else error, wrong format */
                     }
                     else
                        precision = va_arg_n( args, _x_int, 0 );
                  }
                  else if( c >= '0' && c <= '9' )
                     c = get_decimal( c, &format, &precision );
               }

               /* length modifier */
               switch( c )
               {
                  case 'h':
                     c = *format++;
                     if( c == 'h' )
                     {
                        length = _L_CHAR_;
                        c = *format++;
                     }
                     else
                        length = _L_SHORT_;
                     break;
                  case 'l':
                     c = *format++;
                     if( c == 'l' )
                     {
                        length = _L_LONGLONG_;
                        c = *format++;
                     }
                     else
                        length = _L_LONG_;
                     break;
                  case 'L':
                     length = _L_LONGDOUBLE_;
                     c = *format++;
                     break;
                  case 'j':
                     length = _L_INTMAX_;
                     c = *format++;
                     break;
                  case 'z':
                     length = _L_SIZE_;
                     c = *format++;
                     break;
                  case 't':
                     length = _L_PTRDIFF_;
                     c = *format++;
                     break;
                  case 'I':   /* MS-Windows extension */
                     if( format[ 0 ] == '6' && format[ 1 ] == '4' )
                     {
                        length = _L_LONGLONG_;
                        format += 2;
                        c = *format++;
                        break;
                     }
                     else if( format[ 0 ] == '1' && format[ 1 ] == '6' )
                     {
                        length = _L_SHORT_;
                        format += 2;
                        c = *format++;
                        break;
                     }
                     else if( format[ 0 ] == '3' && format[ 1 ] == '2' )
                     {
                        format += 2;
                        c = *format++;
                     }
                     /* no break; */
                  default:
                     length = _L_UNDEF_;
                     break;
               }

               /* conversion specifier */
               switch( c )
               {
#ifndef __NO_DOUBLE__
                  case 'a':
                  case 'A':
                  case 'e':
                  case 'E':
                  case 'g':
                  case 'G':
                     /* redirect above conversion to 'f' or 'F' type to keep
                      * valid parameters order
                      */
                     c = ( c == 'a' || c == 'e' || c == 'g' ) ? 'f' : 'F';
                     /* no break; */
                  case 'f':   /* double decimal notation */
                  case 'F':   /* double decimal notation */
                     if( length == _L_LONGDOUBLE_ )
                     {
                        argval.value.as_x_long_dbl = va_arg_n( args, _x_long_dbl, param );
                        HB_NUMTYPEL( value, argval.value.as_x_long_dbl );
                     }
                     else
                     {
                        double d = va_arg_n( args, _x_double, param );
                        HB_NUMTYPE( value, d );
                        argval.value.as_x_long_dbl =
                           ( value & ( _HB_NUM_NAN | _HB_NUM_PINF | _HB_NUM_NINF ) ) == 0 ? d : 0;
                     }
                     if( value & _HB_NUM_NAN )
                        size = put_str( buffer, bufsize, size,
                                        c == 'f' ?
                                        ( flags & _F_SIGN ? "+nan": "nan" ) :
                                        ( flags & _F_SIGN ? "+NAN": "NAN" ) ,
                                        flags, width, -1 );
                     else if( value & _HB_NUM_PINF )
                        size = put_str( buffer, bufsize, size,
                                        c == 'f' ?
                                        ( flags & _F_SIGN ? "+inf": "inf" ) :
                                        ( flags & _F_SIGN ? "+INF": "INF" ),
                                        flags, width, -1 );
                     else if( value & _HB_NUM_NINF )
                        size = put_str( buffer, bufsize, size,
                                        c == 'f' ? "-inf" : "-INF",
                                        flags, width, -1 );
                     else
                        size = put_dbl( buffer, bufsize, size, argval.value.as_x_long_dbl,
                                        flags, width, precision );
                     continue;
#endif
                  case 'd':
                  case 'i':   /* signed int decimal conversion */
                     if( length == _L_CHAR_ )
                        argval.value.as_x_intmax_t = ( unsigned char ) va_arg_n( args, _x_int, param );
                     else if( length == _L_SHORT_ )
                        argval.value.as_x_intmax_t = ( unsigned short ) va_arg_n( args, _x_int, param );
                     else if( length == _L_LONG_ )
                        argval.value.as_x_intmax_t = va_arg_n( args, _x_long, param );
                     else if( length == _L_LONGLONG_ )
                        argval.value.as_x_intmax_t = va_arg_n( args, _x_longlong, param );
                     else if( length == _L_INTMAX_ )
                        argval.value.as_x_intmax_t = va_arg_n( args, _x_intmax_t, param );
                     else if( length == _L_SIZE_ )
                        argval.value.as_x_intmax_t = va_arg_n( args, _x_size_t, param );
                     else if( length == _L_PTRDIFF_ )
                        argval.value.as_x_intmax_t = va_arg_n( args, _x_ptrdiff_t, param );
                     else
                        argval.value.as_x_intmax_t = va_arg_n( args, _x_int, param );
                     value = argval.value.as_x_intmax_t < 0;
                     argval.value.as_x_uintmax_t = value ? -argval.value.as_x_intmax_t :
                                                            argval.value.as_x_intmax_t;
                     size = put_dec( buffer, bufsize, size, argval.value.as_x_uintmax_t,
                                     flags, width, precision, value );
                     continue;
                  case 'o':   /* unsigned int octal conversion */
                  case 'u':   /* unsigned int decimal conversion */
                  case 'x':   /* unsigned int hexadecimal conversion */
                  case 'X':   /* unsigned int hexadecimal conversion */
                     if( length == _L_CHAR_ )
                        argval.value.as_x_uintmax_t = ( unsigned char ) va_arg_n( args, _x_int, param );
                     else if( length == _L_SHORT_ )
                        argval.value.as_x_uintmax_t = ( unsigned short ) va_arg_n( args, _x_int, param );
                     else if( length == _L_LONG_ )
                        argval.value.as_x_uintmax_t = va_arg_n( args, _x_ulong, param );
                     else if( length == _L_LONGLONG_ )
                        argval.value.as_x_uintmax_t = va_arg_n( args, _x_ulonglong, param );
                     else if( length == _L_INTMAX_ )
                        argval.value.as_x_uintmax_t = va_arg_n( args, _x_uintmax_t, param );
                     else if( length == _L_SIZE_ )
                        argval.value.as_x_uintmax_t = va_arg_n( args, _x_size_t, param );
                     else if( length == _L_PTRDIFF_ )
                        argval.value.as_x_uintmax_t = va_arg_n( args, _x_ptrdiff_t, param );
                     else
                        argval.value.as_x_uintmax_t = va_arg_n( args, _x_uint, param );

                     if( c == 'o' )
                        size = put_octal( buffer, bufsize, size, argval.value.as_x_uintmax_t,
                                          flags, width, precision );
                     else if( c == 'u' )
                        size = put_dec( buffer, bufsize, size, argval.value.as_x_uintmax_t,
                                        flags & ~( _F_SPACE | _F_SIGN ),
                                        width, precision, 0 );
                     else
                        size = put_hex( buffer, bufsize, size, argval.value.as_x_uintmax_t,
                                        flags, width, precision, c == 'X' );
                     continue;
                  case 'p':   /* void * pointer */
                     argval.value.as_x_ptr = va_arg_n( args, _x_ptr, param );
                     if( argval.value.as_x_ptr )
                        size = put_hex( buffer, bufsize, size, ( HB_PTRUINT ) argval.value.as_x_ptr,
                                        flags | _F_ALTERNATE, width, precision, 0 );
                     else
                        size = put_str( buffer, bufsize, size, "(nil)",
                                        flags, width, -1 );
                     continue;
                  case 'c':   /* signed int casted to unsigned char */
                     if( ( flags & _F_LEFTADJUSTED ) == 0 )
                     {
                        while( --width > 0 )
                        {
                           if( size < bufsize )
                              buffer[ size ] = ' ';
                           ++size;
                        }
                     }
                     c = ( unsigned char ) va_arg_n( args, _x_int, param );
                     if( size < bufsize )
                        buffer[ size ] = c;
                     ++size;
                     while( --width > 0 )
                     {
                        if( size < bufsize )
                           buffer[ size ] = ' ';
                        ++size;
                     }
                     continue;
                  case 's':   /* const char * */
                     if( length == _L_LONG_ )
                     {
                        argval.value.as_x_wstr = va_arg_n( args, _x_wstr, param );
                        size = put_wstr( buffer, bufsize, size, argval.value.as_x_wstr,
                                         flags, width, precision );
                     }
                     else
                     {
                        argval.value.as_x_str = va_arg_n( args, _x_str, param );
                        size = put_str( buffer, bufsize, size, argval.value.as_x_str,
                                        flags, width, precision );
                     }
                     continue;
                  case 'n':   /* store current result size in int * arg */
                     /* This is very danger feature in *printf() functions
                      * family very often used by hackers to create buffer
                      * overflows. It can also cause unintentional memory
                      * corruption by programmers typo in pattern so if it's
                      * not strictly necessary it's good to disable it.
                      */
                     *( va_arg_n( args, _x_intptr, param ) ) = ( int ) size;
                     continue;
                  case '%':   /* store % consuming arguments % */
                     break;
                  default:    /* error, wrong format, store pattern */
                     format = pattern;
                     c = '%';
                     break;
               }
            }
         }

         /* ISO C99 defines that when size is 0 and buffer is NULL we should
          * return number of characters that would have been written in case
          * the output string has been large enough without trailing 0.
          * Many implementations always returns number of characters necessary
          * to hold the string even if the above condition is not true so the
          * returned value can be used to check if buffer was large enough
          * and if not to allocate bigger buffer. Let's do the same.
          */
         if( size < bufsize )
            buffer[ size ] = c;
         ++size;
      }
      while( c != 0 );

      va_end( args );

#ifndef __NO_ARGPOS__
   }
   while( params.repeat );

   if( params.arglst != argbuf )
      hb_xfree( params.arglst );
#endif

   /* always set trailing \0 !!! */
   if( bufsize )
      buffer[ bufsize - 1 ] = 0;

   return ( int ) ( size - 1 );
}
コード例 #10
0
ファイル: byte-suffix-32.c プロジェクト: jmscott/setspace
int
main(int argc, char **argv)
{
	unsigned char bufA[PIPE_MAX], bufB[PIPE_MAX], *bp, *bp1, *bp2;
	int tail_nr;
	int nbuf = 0;
	char hex[65];

#if PIPE_MAX < 32
	"this compilation error means that PIPE_MAX < 32 bytes"
#endif

	if (argc != 1)
		die(EXIT_BAD_ARGC, "wrong number of command line arguments");
	(void)argv;

	//  read exactly PIPE_MAX bytes or read the tail of the blob,
	//  alternating between bufA and bufB.

	bp = bufA;
	while (fill(bp, &tail_nr)) {
		nbuf++;
		if (bp == bufA)
			bp = bufB;
		else
			bp = bufA;
	}

	bp = (bp == bufA ? bufB : bufA);

	//  final read() of blob got at least 32 bytes

	if (tail_nr >= 32)
		put_hex(hex, bp + tail_nr - 32, 32);
	
	//  zero length blob

	if (nbuf == 0)
		_exit(0);

	//  total blob size < 32 bytes

	if (nbuf == 1)
		put_hex(hex, bp, tail_nr);

	//  we now know that the suffix will be exactly 32 bytes.

	//  is the suffix entirely in the previous block

	if (tail_nr == PIPE_MAX)
		put_hex(hex, bp + PIPE_MAX - 32, 32);

	//  tail block was read less than PIPE_MAX bytes, so 32 byte suffix
	//  spans final two chunks, where the length of tail chunk is 0 <&&< 32
	//  bytes and that the length of previous chunk is exactly PIPE_MAX
	//  bytes.

	if (bp == bufA) {
		bp1 = bufB;
		bp2 = bufA;
	} else {
		bp1 = bufA;
		bp2 = bufB;
	}

	byte2hex(hex, bp1 + (PIPE_MAX - (32 - tail_nr)), 32 - tail_nr);
	byte2hex(hex + (64 - tail_nr * 2), bp2, tail_nr);
	hex[64] = '\n';
	_write(1, hex, 65);
	_exit(0);
}
コード例 #11
0
ファイル: debug_queue.c プロジェクト: show41/ArchLab2015
int main() {
  char* vga = VMEM + screen_width*2 + 5;
  unsigned val = 0xffff0001;
  unsigned addr = 0;
  unsigned addr_step = 0x800;
  union debug_que_entry dqe;
  for (int i = 0; i < 6; ++i) {
    deref(addr) = val;
    val += 1;
    addr += addr_step;
  }

  addr = 0;
  val = 0xffff0001;
  for (int i = 0; i < 6; ++i) {
    unsigned test_read = deref(addr);
    if (test_read != val) {
      putc('N', vga);
      vga += 2;
      put_hex(addr, vga);
      put_hex(test_read, vga + 16);
      unsigned start = deref(start_reg);
      unsigned end = deref(end_reg);
      if (end < start) {
        end += 64;  // round up
      }
      put_hex(start, vga + 32);
      put_hex(end, vga + 48);
      vga += 2*screen_width;

      for (unsigned j = 0; j < (64 << 4); j += 16) {
        dqe.part[3] = deref(0xd0000000 | j | (0 << 2));
        dqe.part[2] = deref(0xd0000000 | j | (1 << 2));
        dqe.part[1] = deref(0xd0000000 | j | (2 << 2));
        dqe.part[0] = deref(0xd0000000 | j | (3 << 2));

        put_hex(dqe.part[0], vga);
        vga += screen_width/10;
        put_hex(dqe.part[1], vga);
        vga += screen_width/10;
        put_hex(dqe.part[2], vga);
        vga += screen_width/10;
        put_hex(dqe.part[3], vga);
        vga += screen_width/10 * 7;

        if (j == (16 << 4) || j == (32 << 4) || j == (48 << 4)) {
          vga += screen_width;
        }
      }
      vga += screen_width*2;
      break;
    }
    val += 1;
    addr += addr_step;
  }
  putc('N', vga++);
  putc('I', vga++);
  putc('C', vga++);
  putc('E', vga++);
  deref(0xdddd0000) = 0;
  return 0;
}