Paul Eggert wrote: > > Which integer types on CHERI have "holes"? > > intptr_t and uintptr_t, since they consume 128 bits of storage but have > only 64 bits of integer value payload.
Oh, indeed. I had through that intptr_t and uintptr_t support normal 128-bit integer arithmetic, but this is not the case: ================================================================================ #include <stdio.h> #include <stdint.h> int main () { uintptr_t x; intptr_t y; int i; printf ("sizeof = %d %d\n", (int) sizeof (uintptr_t), (int) sizeof (intptr_t)); for (i = 0; i < 128; i++) { x = (uintptr_t)1 << i; printf ("(uintptr_t)1 << %d = 0x%016lx%016lx = 0x%016lx%016lx\n", i, (unsigned long)(x >> 64), (unsigned long) x, (unsigned long)(x >> 32 >> 32), (unsigned long) x); } for (i = 0; i < 127; i++) { y = (intptr_t)1 << i; printf ("(intptr_t)1 << %d = 0x%016lx%016lx = 0x%016lx%016lx\n", i, (long)(y >> 64), (unsigned long) y, (long)(y >> 32 >> 32), (unsigned long) y); } } ================================================================================ produces ================================================================================ sizeof = 16 16 (uintptr_t)1 << 0 = 0x00000000000000010000000000000001 = 0x00000000000000000000000000000001 (uintptr_t)1 << 1 = 0x00000000000000020000000000000002 = 0x00000000000000000000000000000002 (uintptr_t)1 << 2 = 0x00000000000000040000000000000004 = 0x00000000000000000000000000000004 (uintptr_t)1 << 3 = 0x00000000000000080000000000000008 = 0x00000000000000000000000000000008 (uintptr_t)1 << 4 = 0x00000000000000100000000000000010 = 0x00000000000000000000000000000010 (uintptr_t)1 << 5 = 0x00000000000000200000000000000020 = 0x00000000000000000000000000000020 (uintptr_t)1 << 6 = 0x00000000000000400000000000000040 = 0x00000000000000000000000000000040 (uintptr_t)1 << 7 = 0x00000000000000800000000000000080 = 0x00000000000000000000000000000080 (uintptr_t)1 << 8 = 0x00000000000001000000000000000100 = 0x00000000000000000000000000000100 (uintptr_t)1 << 9 = 0x00000000000002000000000000000200 = 0x00000000000000000000000000000200 (uintptr_t)1 << 10 = 0x00000000000004000000000000000400 = 0x00000000000000000000000000000400 (uintptr_t)1 << 11 = 0x00000000000008000000000000000800 = 0x00000000000000000000000000000800 (uintptr_t)1 << 12 = 0x00000000000010000000000000001000 = 0x00000000000000000000000000001000 (uintptr_t)1 << 13 = 0x00000000000020000000000000002000 = 0x00000000000000000000000000002000 (uintptr_t)1 << 14 = 0x00000000000040000000000000004000 = 0x00000000000000000000000000004000 (uintptr_t)1 << 15 = 0x00000000000080000000000000008000 = 0x00000000000000000000000000008000 (uintptr_t)1 << 16 = 0x00000000000100000000000000010000 = 0x00000000000000000000000000010000 (uintptr_t)1 << 17 = 0x00000000000200000000000000020000 = 0x00000000000000000000000000020000 (uintptr_t)1 << 18 = 0x00000000000400000000000000040000 = 0x00000000000000000000000000040000 (uintptr_t)1 << 19 = 0x00000000000800000000000000080000 = 0x00000000000000000000000000080000 (uintptr_t)1 << 20 = 0x00000000001000000000000000100000 = 0x00000000000000000000000000100000 (uintptr_t)1 << 21 = 0x00000000002000000000000000200000 = 0x00000000000000000000000000200000 (uintptr_t)1 << 22 = 0x00000000004000000000000000400000 = 0x00000000000000000000000000400000 (uintptr_t)1 << 23 = 0x00000000008000000000000000800000 = 0x00000000000000000000000000800000 (uintptr_t)1 << 24 = 0x00000000010000000000000001000000 = 0x00000000000000000000000001000000 (uintptr_t)1 << 25 = 0x00000000020000000000000002000000 = 0x00000000000000000000000002000000 (uintptr_t)1 << 26 = 0x00000000040000000000000004000000 = 0x00000000000000000000000004000000 (uintptr_t)1 << 27 = 0x00000000080000000000000008000000 = 0x00000000000000000000000008000000 (uintptr_t)1 << 28 = 0x00000000100000000000000010000000 = 0x00000000000000000000000010000000 (uintptr_t)1 << 29 = 0x00000000200000000000000020000000 = 0x00000000000000000000000020000000 (uintptr_t)1 << 30 = 0x00000000400000000000000040000000 = 0x00000000000000000000000040000000 (uintptr_t)1 << 31 = 0x00000000800000000000000080000000 = 0x00000000000000000000000080000000 (uintptr_t)1 << 32 = 0x00000001000000000000000100000000 = 0x00000000000000000000000100000000 (uintptr_t)1 << 33 = 0x00000002000000000000000200000000 = 0x00000000000000000000000200000000 (uintptr_t)1 << 34 = 0x00000004000000000000000400000000 = 0x00000000000000000000000400000000 (uintptr_t)1 << 35 = 0x00000008000000000000000800000000 = 0x00000000000000000000000800000000 (uintptr_t)1 << 36 = 0x00000010000000000000001000000000 = 0x00000000000000000000001000000000 (uintptr_t)1 << 37 = 0x00000020000000000000002000000000 = 0x00000000000000000000002000000000 (uintptr_t)1 << 38 = 0x00000040000000000000004000000000 = 0x00000000000000000000004000000000 (uintptr_t)1 << 39 = 0x00000080000000000000008000000000 = 0x00000000000000000000008000000000 (uintptr_t)1 << 40 = 0x00000100000000000000010000000000 = 0x00000000000000000000010000000000 (uintptr_t)1 << 41 = 0x00000200000000000000020000000000 = 0x00000000000000000000020000000000 (uintptr_t)1 << 42 = 0x00000400000000000000040000000000 = 0x00000000000000000000040000000000 (uintptr_t)1 << 43 = 0x00000800000000000000080000000000 = 0x00000000000000000000080000000000 (uintptr_t)1 << 44 = 0x00001000000000000000100000000000 = 0x00000000000000000000100000000000 (uintptr_t)1 << 45 = 0x00002000000000000000200000000000 = 0x00000000000000000000200000000000 (uintptr_t)1 << 46 = 0x00004000000000000000400000000000 = 0x00000000000000000000400000000000 (uintptr_t)1 << 47 = 0x00008000000000000000800000000000 = 0x00000000000000000000800000000000 (uintptr_t)1 << 48 = 0x00010000000000000001000000000000 = 0x00000000000000000001000000000000 (uintptr_t)1 << 49 = 0x00020000000000000002000000000000 = 0x00000000000000000002000000000000 (uintptr_t)1 << 50 = 0x00040000000000000004000000000000 = 0x00000000000000000004000000000000 (uintptr_t)1 << 51 = 0x00080000000000000008000000000000 = 0x00000000000000000008000000000000 (uintptr_t)1 << 52 = 0x00100000000000000010000000000000 = 0x00000000000000000010000000000000 (uintptr_t)1 << 53 = 0x00200000000000000020000000000000 = 0x00000000000000000020000000000000 (uintptr_t)1 << 54 = 0x00400000000000000040000000000000 = 0x00000000000000000040000000000000 (uintptr_t)1 << 55 = 0x00800000000000000080000000000000 = 0x00000000000000000080000000000000 (uintptr_t)1 << 56 = 0x01000000000000000100000000000000 = 0x00000000000000000100000000000000 (uintptr_t)1 << 57 = 0x02000000000000000200000000000000 = 0x00000000000000000200000000000000 (uintptr_t)1 << 58 = 0x04000000000000000400000000000000 = 0x00000000000000000400000000000000 (uintptr_t)1 << 59 = 0x08000000000000000800000000000000 = 0x00000000000000000800000000000000 (uintptr_t)1 << 60 = 0x10000000000000001000000000000000 = 0x00000000000000001000000000000000 (uintptr_t)1 << 61 = 0x20000000000000002000000000000000 = 0x00000000000000002000000000000000 (uintptr_t)1 << 62 = 0x40000000000000004000000000000000 = 0x00000000000000004000000000000000 (uintptr_t)1 << 63 = 0x80000000000000008000000000000000 = 0x00000000000000008000000000000000 (uintptr_t)1 << 64 = 0x00000000000000010000000000000001 = 0x00000000000000000000000000000001 (uintptr_t)1 << 65 = 0x00000000000000020000000000000002 = 0x00000000000000000000000000000002 (uintptr_t)1 << 66 = 0x00000000000000040000000000000004 = 0x00000000000000000000000000000004 (uintptr_t)1 << 67 = 0x00000000000000080000000000000008 = 0x00000000000000000000000000000008 (uintptr_t)1 << 68 = 0x00000000000000100000000000000010 = 0x00000000000000000000000000000010 (uintptr_t)1 << 69 = 0x00000000000000200000000000000020 = 0x00000000000000000000000000000020 (uintptr_t)1 << 70 = 0x00000000000000400000000000000040 = 0x00000000000000000000000000000040 (uintptr_t)1 << 71 = 0x00000000000000800000000000000080 = 0x00000000000000000000000000000080 (uintptr_t)1 << 72 = 0x00000000000001000000000000000100 = 0x00000000000000000000000000000100 (uintptr_t)1 << 73 = 0x00000000000002000000000000000200 = 0x00000000000000000000000000000200 (uintptr_t)1 << 74 = 0x00000000000004000000000000000400 = 0x00000000000000000000000000000400 (uintptr_t)1 << 75 = 0x00000000000008000000000000000800 = 0x00000000000000000000000000000800 (uintptr_t)1 << 76 = 0x00000000000010000000000000001000 = 0x00000000000000000000000000001000 (uintptr_t)1 << 77 = 0x00000000000020000000000000002000 = 0x00000000000000000000000000002000 (uintptr_t)1 << 78 = 0x00000000000040000000000000004000 = 0x00000000000000000000000000004000 (uintptr_t)1 << 79 = 0x00000000000080000000000000008000 = 0x00000000000000000000000000008000 (uintptr_t)1 << 80 = 0x00000000000100000000000000010000 = 0x00000000000000000000000000010000 (uintptr_t)1 << 81 = 0x00000000000200000000000000020000 = 0x00000000000000000000000000020000 (uintptr_t)1 << 82 = 0x00000000000400000000000000040000 = 0x00000000000000000000000000040000 (uintptr_t)1 << 83 = 0x00000000000800000000000000080000 = 0x00000000000000000000000000080000 (uintptr_t)1 << 84 = 0x00000000001000000000000000100000 = 0x00000000000000000000000000100000 (uintptr_t)1 << 85 = 0x00000000002000000000000000200000 = 0x00000000000000000000000000200000 (uintptr_t)1 << 86 = 0x00000000004000000000000000400000 = 0x00000000000000000000000000400000 (uintptr_t)1 << 87 = 0x00000000008000000000000000800000 = 0x00000000000000000000000000800000 (uintptr_t)1 << 88 = 0x00000000010000000000000001000000 = 0x00000000000000000000000001000000 (uintptr_t)1 << 89 = 0x00000000020000000000000002000000 = 0x00000000000000000000000002000000 (uintptr_t)1 << 90 = 0x00000000040000000000000004000000 = 0x00000000000000000000000004000000 (uintptr_t)1 << 91 = 0x00000000080000000000000008000000 = 0x00000000000000000000000008000000 (uintptr_t)1 << 92 = 0x00000000100000000000000010000000 = 0x00000000000000000000000010000000 (uintptr_t)1 << 93 = 0x00000000200000000000000020000000 = 0x00000000000000000000000020000000 (uintptr_t)1 << 94 = 0x00000000400000000000000040000000 = 0x00000000000000000000000040000000 (uintptr_t)1 << 95 = 0x00000000800000000000000080000000 = 0x00000000000000000000000080000000 (uintptr_t)1 << 96 = 0x00000001000000000000000100000000 = 0x00000000000000000000000100000000 (uintptr_t)1 << 97 = 0x00000002000000000000000200000000 = 0x00000000000000000000000200000000 (uintptr_t)1 << 98 = 0x00000004000000000000000400000000 = 0x00000000000000000000000400000000 (uintptr_t)1 << 99 = 0x00000008000000000000000800000000 = 0x00000000000000000000000800000000 (uintptr_t)1 << 100 = 0x00000010000000000000001000000000 = 0x00000000000000000000001000000000 (uintptr_t)1 << 101 = 0x00000020000000000000002000000000 = 0x00000000000000000000002000000000 (uintptr_t)1 << 102 = 0x00000040000000000000004000000000 = 0x00000000000000000000004000000000 (uintptr_t)1 << 103 = 0x00000080000000000000008000000000 = 0x00000000000000000000008000000000 (uintptr_t)1 << 104 = 0x00000100000000000000010000000000 = 0x00000000000000000000010000000000 (uintptr_t)1 << 105 = 0x00000200000000000000020000000000 = 0x00000000000000000000020000000000 (uintptr_t)1 << 106 = 0x00000400000000000000040000000000 = 0x00000000000000000000040000000000 (uintptr_t)1 << 107 = 0x00000800000000000000080000000000 = 0x00000000000000000000080000000000 (uintptr_t)1 << 108 = 0x00001000000000000000100000000000 = 0x00000000000000000000100000000000 (uintptr_t)1 << 109 = 0x00002000000000000000200000000000 = 0x00000000000000000000200000000000 (uintptr_t)1 << 110 = 0x00004000000000000000400000000000 = 0x00000000000000000000400000000000 (uintptr_t)1 << 111 = 0x00008000000000000000800000000000 = 0x00000000000000000000800000000000 (uintptr_t)1 << 112 = 0x00010000000000000001000000000000 = 0x00000000000000000001000000000000 (uintptr_t)1 << 113 = 0x00020000000000000002000000000000 = 0x00000000000000000002000000000000 (uintptr_t)1 << 114 = 0x00040000000000000004000000000000 = 0x00000000000000000004000000000000 (uintptr_t)1 << 115 = 0x00080000000000000008000000000000 = 0x00000000000000000008000000000000 (uintptr_t)1 << 116 = 0x00100000000000000010000000000000 = 0x00000000000000000010000000000000 (uintptr_t)1 << 117 = 0x00200000000000000020000000000000 = 0x00000000000000000020000000000000 (uintptr_t)1 << 118 = 0x00400000000000000040000000000000 = 0x00000000000000000040000000000000 (uintptr_t)1 << 119 = 0x00800000000000000080000000000000 = 0x00000000000000000080000000000000 (uintptr_t)1 << 120 = 0x01000000000000000100000000000000 = 0x00000000000000000100000000000000 (uintptr_t)1 << 121 = 0x02000000000000000200000000000000 = 0x00000000000000000200000000000000 (uintptr_t)1 << 122 = 0x04000000000000000400000000000000 = 0x00000000000000000400000000000000 (uintptr_t)1 << 123 = 0x08000000000000000800000000000000 = 0x00000000000000000800000000000000 (uintptr_t)1 << 124 = 0x10000000000000001000000000000000 = 0x00000000000000001000000000000000 (uintptr_t)1 << 125 = 0x20000000000000002000000000000000 = 0x00000000000000002000000000000000 (uintptr_t)1 << 126 = 0x40000000000000004000000000000000 = 0x00000000000000004000000000000000 (uintptr_t)1 << 127 = 0x80000000000000008000000000000000 = 0x00000000000000008000000000000000 (intptr_t)1 << 0 = 0x00000000000000010000000000000001 = 0x00000000000000000000000000000001 (intptr_t)1 << 1 = 0x00000000000000020000000000000002 = 0x00000000000000000000000000000002 (intptr_t)1 << 2 = 0x00000000000000040000000000000004 = 0x00000000000000000000000000000004 (intptr_t)1 << 3 = 0x00000000000000080000000000000008 = 0x00000000000000000000000000000008 (intptr_t)1 << 4 = 0x00000000000000100000000000000010 = 0x00000000000000000000000000000010 (intptr_t)1 << 5 = 0x00000000000000200000000000000020 = 0x00000000000000000000000000000020 (intptr_t)1 << 6 = 0x00000000000000400000000000000040 = 0x00000000000000000000000000000040 (intptr_t)1 << 7 = 0x00000000000000800000000000000080 = 0x00000000000000000000000000000080 (intptr_t)1 << 8 = 0x00000000000001000000000000000100 = 0x00000000000000000000000000000100 (intptr_t)1 << 9 = 0x00000000000002000000000000000200 = 0x00000000000000000000000000000200 (intptr_t)1 << 10 = 0x00000000000004000000000000000400 = 0x00000000000000000000000000000400 (intptr_t)1 << 11 = 0x00000000000008000000000000000800 = 0x00000000000000000000000000000800 (intptr_t)1 << 12 = 0x00000000000010000000000000001000 = 0x00000000000000000000000000001000 (intptr_t)1 << 13 = 0x00000000000020000000000000002000 = 0x00000000000000000000000000002000 (intptr_t)1 << 14 = 0x00000000000040000000000000004000 = 0x00000000000000000000000000004000 (intptr_t)1 << 15 = 0x00000000000080000000000000008000 = 0x00000000000000000000000000008000 (intptr_t)1 << 16 = 0x00000000000100000000000000010000 = 0x00000000000000000000000000010000 (intptr_t)1 << 17 = 0x00000000000200000000000000020000 = 0x00000000000000000000000000020000 (intptr_t)1 << 18 = 0x00000000000400000000000000040000 = 0x00000000000000000000000000040000 (intptr_t)1 << 19 = 0x00000000000800000000000000080000 = 0x00000000000000000000000000080000 (intptr_t)1 << 20 = 0x00000000001000000000000000100000 = 0x00000000000000000000000000100000 (intptr_t)1 << 21 = 0x00000000002000000000000000200000 = 0x00000000000000000000000000200000 (intptr_t)1 << 22 = 0x00000000004000000000000000400000 = 0x00000000000000000000000000400000 (intptr_t)1 << 23 = 0x00000000008000000000000000800000 = 0x00000000000000000000000000800000 (intptr_t)1 << 24 = 0x00000000010000000000000001000000 = 0x00000000000000000000000001000000 (intptr_t)1 << 25 = 0x00000000020000000000000002000000 = 0x00000000000000000000000002000000 (intptr_t)1 << 26 = 0x00000000040000000000000004000000 = 0x00000000000000000000000004000000 (intptr_t)1 << 27 = 0x00000000080000000000000008000000 = 0x00000000000000000000000008000000 (intptr_t)1 << 28 = 0x00000000100000000000000010000000 = 0x00000000000000000000000010000000 (intptr_t)1 << 29 = 0x00000000200000000000000020000000 = 0x00000000000000000000000020000000 (intptr_t)1 << 30 = 0x00000000400000000000000040000000 = 0x00000000000000000000000040000000 (intptr_t)1 << 31 = 0x00000000800000000000000080000000 = 0x00000000000000000000000080000000 (intptr_t)1 << 32 = 0x00000001000000000000000100000000 = 0x00000000000000000000000100000000 (intptr_t)1 << 33 = 0x00000002000000000000000200000000 = 0x00000000000000000000000200000000 (intptr_t)1 << 34 = 0x00000004000000000000000400000000 = 0x00000000000000000000000400000000 (intptr_t)1 << 35 = 0x00000008000000000000000800000000 = 0x00000000000000000000000800000000 (intptr_t)1 << 36 = 0x00000010000000000000001000000000 = 0x00000000000000000000001000000000 (intptr_t)1 << 37 = 0x00000020000000000000002000000000 = 0x00000000000000000000002000000000 (intptr_t)1 << 38 = 0x00000040000000000000004000000000 = 0x00000000000000000000004000000000 (intptr_t)1 << 39 = 0x00000080000000000000008000000000 = 0x00000000000000000000008000000000 (intptr_t)1 << 40 = 0x00000100000000000000010000000000 = 0x00000000000000000000010000000000 (intptr_t)1 << 41 = 0x00000200000000000000020000000000 = 0x00000000000000000000020000000000 (intptr_t)1 << 42 = 0x00000400000000000000040000000000 = 0x00000000000000000000040000000000 (intptr_t)1 << 43 = 0x00000800000000000000080000000000 = 0x00000000000000000000080000000000 (intptr_t)1 << 44 = 0x00001000000000000000100000000000 = 0x00000000000000000000100000000000 (intptr_t)1 << 45 = 0x00002000000000000000200000000000 = 0x00000000000000000000200000000000 (intptr_t)1 << 46 = 0x00004000000000000000400000000000 = 0x00000000000000000000400000000000 (intptr_t)1 << 47 = 0x00008000000000000000800000000000 = 0x00000000000000000000800000000000 (intptr_t)1 << 48 = 0x00010000000000000001000000000000 = 0x00000000000000000001000000000000 (intptr_t)1 << 49 = 0x00020000000000000002000000000000 = 0x00000000000000000002000000000000 (intptr_t)1 << 50 = 0x00040000000000000004000000000000 = 0x00000000000000000004000000000000 (intptr_t)1 << 51 = 0x00080000000000000008000000000000 = 0x00000000000000000008000000000000 (intptr_t)1 << 52 = 0x00100000000000000010000000000000 = 0x00000000000000000010000000000000 (intptr_t)1 << 53 = 0x00200000000000000020000000000000 = 0x00000000000000000020000000000000 (intptr_t)1 << 54 = 0x00400000000000000040000000000000 = 0x00000000000000000040000000000000 (intptr_t)1 << 55 = 0x00800000000000000080000000000000 = 0x00000000000000000080000000000000 (intptr_t)1 << 56 = 0x01000000000000000100000000000000 = 0x00000000000000000100000000000000 (intptr_t)1 << 57 = 0x02000000000000000200000000000000 = 0x00000000000000000200000000000000 (intptr_t)1 << 58 = 0x04000000000000000400000000000000 = 0x00000000000000000400000000000000 (intptr_t)1 << 59 = 0x08000000000000000800000000000000 = 0x00000000000000000800000000000000 (intptr_t)1 << 60 = 0x10000000000000001000000000000000 = 0x00000000000000001000000000000000 (intptr_t)1 << 61 = 0x20000000000000002000000000000000 = 0x00000000000000002000000000000000 (intptr_t)1 << 62 = 0x40000000000000004000000000000000 = 0x00000000000000004000000000000000 (intptr_t)1 << 63 = 0x80000000000000008000000000000000 = 0xffffffffffffffff8000000000000000 (intptr_t)1 << 64 = 0x00000000000000010000000000000001 = 0x00000000000000000000000000000001 (intptr_t)1 << 65 = 0x00000000000000020000000000000002 = 0x00000000000000000000000000000002 (intptr_t)1 << 66 = 0x00000000000000040000000000000004 = 0x00000000000000000000000000000004 (intptr_t)1 << 67 = 0x00000000000000080000000000000008 = 0x00000000000000000000000000000008 (intptr_t)1 << 68 = 0x00000000000000100000000000000010 = 0x00000000000000000000000000000010 (intptr_t)1 << 69 = 0x00000000000000200000000000000020 = 0x00000000000000000000000000000020 (intptr_t)1 << 70 = 0x00000000000000400000000000000040 = 0x00000000000000000000000000000040 (intptr_t)1 << 71 = 0x00000000000000800000000000000080 = 0x00000000000000000000000000000080 (intptr_t)1 << 72 = 0x00000000000001000000000000000100 = 0x00000000000000000000000000000100 (intptr_t)1 << 73 = 0x00000000000002000000000000000200 = 0x00000000000000000000000000000200 (intptr_t)1 << 74 = 0x00000000000004000000000000000400 = 0x00000000000000000000000000000400 (intptr_t)1 << 75 = 0x00000000000008000000000000000800 = 0x00000000000000000000000000000800 (intptr_t)1 << 76 = 0x00000000000010000000000000001000 = 0x00000000000000000000000000001000 (intptr_t)1 << 77 = 0x00000000000020000000000000002000 = 0x00000000000000000000000000002000 (intptr_t)1 << 78 = 0x00000000000040000000000000004000 = 0x00000000000000000000000000004000 (intptr_t)1 << 79 = 0x00000000000080000000000000008000 = 0x00000000000000000000000000008000 (intptr_t)1 << 80 = 0x00000000000100000000000000010000 = 0x00000000000000000000000000010000 (intptr_t)1 << 81 = 0x00000000000200000000000000020000 = 0x00000000000000000000000000020000 (intptr_t)1 << 82 = 0x00000000000400000000000000040000 = 0x00000000000000000000000000040000 (intptr_t)1 << 83 = 0x00000000000800000000000000080000 = 0x00000000000000000000000000080000 (intptr_t)1 << 84 = 0x00000000001000000000000000100000 = 0x00000000000000000000000000100000 (intptr_t)1 << 85 = 0x00000000002000000000000000200000 = 0x00000000000000000000000000200000 (intptr_t)1 << 86 = 0x00000000004000000000000000400000 = 0x00000000000000000000000000400000 (intptr_t)1 << 87 = 0x00000000008000000000000000800000 = 0x00000000000000000000000000800000 (intptr_t)1 << 88 = 0x00000000010000000000000001000000 = 0x00000000000000000000000001000000 (intptr_t)1 << 89 = 0x00000000020000000000000002000000 = 0x00000000000000000000000002000000 (intptr_t)1 << 90 = 0x00000000040000000000000004000000 = 0x00000000000000000000000004000000 (intptr_t)1 << 91 = 0x00000000080000000000000008000000 = 0x00000000000000000000000008000000 (intptr_t)1 << 92 = 0x00000000100000000000000010000000 = 0x00000000000000000000000010000000 (intptr_t)1 << 93 = 0x00000000200000000000000020000000 = 0x00000000000000000000000020000000 (intptr_t)1 << 94 = 0x00000000400000000000000040000000 = 0x00000000000000000000000040000000 (intptr_t)1 << 95 = 0x00000000800000000000000080000000 = 0x00000000000000000000000080000000 (intptr_t)1 << 96 = 0x00000001000000000000000100000000 = 0x00000000000000000000000100000000 (intptr_t)1 << 97 = 0x00000002000000000000000200000000 = 0x00000000000000000000000200000000 (intptr_t)1 << 98 = 0x00000004000000000000000400000000 = 0x00000000000000000000000400000000 (intptr_t)1 << 99 = 0x00000008000000000000000800000000 = 0x00000000000000000000000800000000 (intptr_t)1 << 100 = 0x00000010000000000000001000000000 = 0x00000000000000000000001000000000 (intptr_t)1 << 101 = 0x00000020000000000000002000000000 = 0x00000000000000000000002000000000 (intptr_t)1 << 102 = 0x00000040000000000000004000000000 = 0x00000000000000000000004000000000 (intptr_t)1 << 103 = 0x00000080000000000000008000000000 = 0x00000000000000000000008000000000 (intptr_t)1 << 104 = 0x00000100000000000000010000000000 = 0x00000000000000000000010000000000 (intptr_t)1 << 105 = 0x00000200000000000000020000000000 = 0x00000000000000000000020000000000 (intptr_t)1 << 106 = 0x00000400000000000000040000000000 = 0x00000000000000000000040000000000 (intptr_t)1 << 107 = 0x00000800000000000000080000000000 = 0x00000000000000000000080000000000 (intptr_t)1 << 108 = 0x00001000000000000000100000000000 = 0x00000000000000000000100000000000 (intptr_t)1 << 109 = 0x00002000000000000000200000000000 = 0x00000000000000000000200000000000 (intptr_t)1 << 110 = 0x00004000000000000000400000000000 = 0x00000000000000000000400000000000 (intptr_t)1 << 111 = 0x00008000000000000000800000000000 = 0x00000000000000000000800000000000 (intptr_t)1 << 112 = 0x00010000000000000001000000000000 = 0x00000000000000000001000000000000 (intptr_t)1 << 113 = 0x00020000000000000002000000000000 = 0x00000000000000000002000000000000 (intptr_t)1 << 114 = 0x00040000000000000004000000000000 = 0x00000000000000000004000000000000 (intptr_t)1 << 115 = 0x00080000000000000008000000000000 = 0x00000000000000000008000000000000 (intptr_t)1 << 116 = 0x00100000000000000010000000000000 = 0x00000000000000000010000000000000 (intptr_t)1 << 117 = 0x00200000000000000020000000000000 = 0x00000000000000000020000000000000 (intptr_t)1 << 118 = 0x00400000000000000040000000000000 = 0x00000000000000000040000000000000 (intptr_t)1 << 119 = 0x00800000000000000080000000000000 = 0x00000000000000000080000000000000 (intptr_t)1 << 120 = 0x01000000000000000100000000000000 = 0x00000000000000000100000000000000 (intptr_t)1 << 121 = 0x02000000000000000200000000000000 = 0x00000000000000000200000000000000 (intptr_t)1 << 122 = 0x04000000000000000400000000000000 = 0x00000000000000000400000000000000 (intptr_t)1 << 123 = 0x08000000000000000800000000000000 = 0x00000000000000000800000000000000 (intptr_t)1 << 124 = 0x10000000000000001000000000000000 = 0x00000000000000001000000000000000 (intptr_t)1 << 125 = 0x20000000000000002000000000000000 = 0x00000000000000002000000000000000 (intptr_t)1 << 126 = 0x40000000000000004000000000000000 = 0x00000000000000004000000000000000 ================================================================================ Bruno