#include <stdio.h> static unsigned long test[] ={ 0x000000000000000a, 0x000000000000001a, 0x000000000000012a, 0x000000000000123a, 0x000000000001234a, 0x000000000012345a, 0x000000000123456a, 0x000000001234567a, 0x000000012345678a, 0x000000123456789a, 0x000001234567890a, 0x000000000000000b, 0x000000000000001b, 0x000000000000012b, 0x000000000000123b, 0x000000000001234b, 0x000000000012345b, 0x000000000123456b, 0x000000001234567b, 0x000000012345678b, 0x000000123456789b, 0x000001234567890b, 0x000000000000000c, 0x000000000000001c, 0x000000000000012c, 0x000000000000123c, 0x000000000001234c, 0x000000000012345c, 0x000000000123456c, 0x000000001234567c, 0x000000012345678c, 0x000000123456789c, 0x000001234567890c, 0x000000000000000d, 0x000000000000001d, 0x000000000000012d, 0x000000000000123d, 0x000000000001234d, 0x000000000012345d, 0x000000000123456d, 0x000000001234567d, 0x000000012345678d, 0x000000123456789d, 0x000001234567890d, 0x000000000000000e, 0x000000000000001e, 0x000000000000012e, 0x000000000000123e, 0x000000000001234e, 0x000000000012345e, 0x000000000123456e, 0x000000001234567e, 0x000000012345678e, 0x000000123456789e, 0x000001234567890e, 0x000000000000000f, 0x000000000000001f, 0x000000000000012f, 0x000000000000123f, 0x000000000001234f, 0x000000000012345f, 0x000000000123456f, 0x000000001234567f, 0x000000012345678f, 0x000000123456789f, 0x000001234567890f, /* min and max */ 0x000002147483647c, 0x000002147483648d, /* fixs390: we also need to check if invalid values cause a fixed-point-devide exception. Not yet implemented. */ /* 0x000002147483648c, 0x000002147483649d, 0x00000000000000fa, */ }; static signed int dec_to_hex(unsigned long *addr) { register signed int res asm("2") = 0; register unsigned long *_addr asm("4") = addr; asm volatile( " cvb %0,0(0,%1)" : "=d" (res) : "d" (_addr) : "memory"); return res & 0xffffffff; } int main() { int i; for (i = 0; i < sizeof(test) / sizeof(test[0]); i++) printf("%d\n", dec_to_hex(&test[i])); return 0; }