NASM - The Netwide Assembler
NASM Forum => Using NASM => Topic started by: nobody on April 11, 2007, 07:16:30 PM
-
I don't find in the manual anything which says what the length limit is on a Label. I'd like to know if a label is significant to some number of characters, or if a long label is hashed in some fashion, say first 10 characters plus last 10 characters, or what? I couldn't find anything related on a site search either.
for -f bin, if that matters.
TIA.
-
4095 - and AFAIK, the whole thing is hashed.
I vaguely recall adding this to the documentation... yep! It'll be in the next release. "When will that be?", you might ask. I dunno... if you care (enough), grab the latest from the CVS repository - or from Apple...
Best,
Frank
-
Thanks Frank,
Yes, I find it in the: nasm_man.chm, a nice addition BTW. But it isn't really clear that all 4095 chrs are significant. Some packages allow long identifiers but may internalize it as the first M chars plus the last N characters so that it is still possible to create non unique identifiers, and this too is a type of hashing. It's not a very strong algorithm obviously. I'd rather not dig down thru the source to find the algorithm, and was hoping someone knew offhand.
Best Regards,
Steve
-
The hash algorithm can be found in labels.c, in find_label().
In essence it sums all of a label's characters into an int, an
then uses % LABEL_HASHES (which expands to 37).
Which sucks big time.
See SF RFE #900810 for what I ended up implementing in NASM64.