[dmd-internals] Correction to name mangling doc
Sean Kelly
sean at invisibleduck.org
Wed Sep 1 12:35:55 PDT 2010
This one is really more of a programming question, but it's mangling related so I figured I'd ask here anyway. The following function:
void someFunc(real x)() {}
someFunc!(1234.5678);
is mangled as:
D8demangle34__T8someFuncVde9A522B6AE7D566CFP7Z8someFuncFZv
std.demangle assumes that when it encounters an 'e' in a template parameter list, the next 20 bytes will be a hex representation of an 80 bit floating point value. The ABI and current mangling behavior is to represent things a bit differently with a variable width hex mantissa and exponent value (HexDigits P Number). So in this case I have 8 bytes of mantissa (9A 52 2B 6A E7 D5 66 CF) and 1 byte of exponent (7). I'm having trouble relating the mangled value to 1234.5678 though. Can someone explain what's going on here, and possibly suggest an appropriate means for converting the mangled value to a textual representation?
More information about the dmd-internals
mailing list