I've been playing around with Microchip's free dsPIC30F Math Library, making assembly language calls to various functions, and I've noticed some behavior that seems a bit odd to me. These math functions are in a Microchip-supplied object archive file, libm-coff.a, and I am calling them from my assembly code in a .s file. I expected to have to use an .extern statement to declare each of the library functions I call; yet my program assembles, links, and runs just fine whether I include the .extern statements or omit them. I've looked in the ASM30 help file, the dsPIC30F Math Library documentation, the dsPIC Language Tools Libraries document, and find nothing to indicate that the .extern directive is optional in this circumstance. Questions: 1) Am I being clueless here about some basic principle in the Grand Unified Theory of Assemblers And Linkers-- i.e., is this perfectly normal to not need .extern directives when calling library functions? or 2) Is this some kind of "undocumented behavior" that I shouldn't rely on in my coding, and to be safe I should declare each called function with an .extern directive, whether they're apparently needed here or not? All suggestions welcome; thanks. Dave D. -- http://www.piclist.com PIC/SX FAQ & list archive View/change your membership options at http://mailman.mit.edu/mailman/listinfo/piclist