There's Mammon_'s "Extending Nasm" article:
http://web.textfiles.com/ezines/APJ/apj_3.txtIt's ten years old...
As d3x0r points out, Nasm can distinguish between macros with the same name, and different numbers of parameters. This could be used to "hide" the fact that two functions had different names, but I don't think that you can "really" have two functions with the same name - not in the same file, and not in two files that are going to be linked together (with the names "global"... you could have functions with the same name in two files, but not with the names made visible, to the linker, and thus to the calling module).
Betov, the Unpleasant Frenchman, used to say that these namespace collisions should be "impossible", because the functions should have meaningful names - what Betov calls "full-talking names". If they've got the same names, they should do the same thing - and you don't need both. If they do different things, they should have different names describing what they do. Problem solved. I think he may have something there!
If you *could* get Nasm to do it, how would you keep *yourself* from being confused???
Best,
Frank