#if defined ASM_ALLOWED
static void calculate_digit( unsigned char radix )
{
+ if (radix == 8)
+ {
+ value.byte[4] = value.ul & 0x07;
+ value.ul >>= 3;
+ }
+ else if (radix == 16)
+ {
+ value.byte[4] = value.ul & 0x0F;
+ value.ul >>= 4;
+ }
+ else
+ {
unsigned char i;
for( i = 32; i != 0; i-- )
}
}
}
+}
#elif defined SDCC_STACK_AUTO
static void calculate_digit( value_t* value, unsigned char radix )
{
+ if (radix == 8)
+ {
+ value->byte[4] = value->ul & 0x07;
+ value->ul >>= 3;
+ }
+ else if (radix == 16)
+ {
+ value->byte[4] = value->ul & 0x0F;
+ value->ul >>= 4;
+ }
+ else
+ {
unsigned char i;
for( i = 32; i != 0; i-- )
}
}
}
+}
#else
static void calculate_digit( unsigned char radix )
{
+ if (radix == 8)
+ {
+ value.byte[4] = value.ul & 0x07;
+ value.ul >>= 3;
+ }
+ else if (radix == 16)
+ {
+ value.byte[4] = value.ul & 0x0F;
+ value.ul >>= 4;
+ }
+ else
+ {
unsigned char i;
for( i = 32; i != 0; i-- )
}
}
}
+}
#endif
#if USE_FLOATS
if (char_argument)
{
value.l = va_arg(ap,char);
+ if (!signed_argument)
+ {
+ value.l &= 0xFF;
+ }
}
else if (long_argument)
{
else // must be int
{
value.l = va_arg(ap,int);
+ if (!signed_argument)
+ {
+ value.l &= 0xFFFF;
+ }
}
if ( signed_argument )