#include <stdio.h> static signed int test[] ={ 0, 1, -1, 0x7fffffff, 0x80000000, 0x12345678, 0x87654321, 0x55555555, 0x11111111, 0xaaaaaaaa, }; static unsigned long hex_to_dec(signed int num) { unsigned long addr = 0; asm volatile( " cvd %2,%0" : "=m" (addr) : "a" (&addr) , "d" (num) : "memory"); return addr; } int main() { int i; for (i = 0; i < sizeof(test) / sizeof(test[0]); i++) printf("%lx\n", hex_to_dec(test[i])); return 0; }