![]() I thought of calling it WEXTERN but then decided to call the feature a "secondary external", so the directive was SEXTERN! The regular external directive was called EXTERN, and the tradition was for these names to be very short. If the external was missing, then instead of failing the link step, it would leave a zero that you would check at runtime. ![]() Later we wanted to add a "weak external" feature to the assembler and linker, something like the "weak reference" that a few modern languages have. His manager was giving a demo to a customer and they saw the message. Unfortunately he wasn't the first to see the message. I figured he would get a laugh out of this and then I'd remove it. My manager knew what a hassle this task was, and he was fairly chill, so just for fun I added a temporary message meant for his eyes only:Ĥ39 bytes free and it's pretty fucking clean The linker was a mess of spaghetti assembly code, and it was a real pain to find and fix all of the places where it failed to clear memory. ![]() So my manager asked me to make sure the linker zeroed out all unused memory.Īfter linking a program, the linker printed a message something like this: Functionally the same, but they wouldn't compare byte for byte. Every time you linked a program, the binary would be different. The linker had a bad habit of leaving unused memory uninitialized. I was maintaining the assembler and linker for one of our machines (I think it was the PDP-10 but could have been the Sigma 7). I had my own misadventure with uninitialized memory in the late 1970s when I was working at Tymshare.
0 Comments
Leave a Reply. |