Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Posting-Version: version B 2.10.1 6/24/83; site hcrvx1.UUCP Path: utzoo!hcrvax!hcrvx1!tom From: tom@hcrvx1.UUCP (Tom Kelly) Newsgroups: net.arch Subject: Re: Re: Where to do stack checking, etc. Message-ID: <1232@hcrvx1.UUCP> Date: Thu, 19-Sep-85 10:21:26 EDT Article-I.D.: hcrvx1.1232 Posted: Thu Sep 19 10:21:26 1985 Date-Received: Fri, 20-Sep-85 12:14:53 EDT References: <796@kuling.UUCP> <1713@orca.UUCP> <1599@peora.UUCP> <335@ihlpl.UUCP> <2384@uvacs.UUCP> Reply-To: tom@hcrvx1.UUCP (Tom Kelly) Organization: Human Computing Resources, Toronto Lines: 26 Summary: In article <2384@uvacs.UUCP> mac@uvacs.UUCP (Alex Colvin) writes: > >I'm still looking for a machine that will trap references to uninitialized >data. The Burroughs B7700 and its relatives (B6700, etc.) can do this. All memory locations have a three bit "tag" that indicates what kind of data is stored in the memory location (code, operand, pointer, ...). One of the tags (6) is "reserved for software control". The hardware considers it an unitialized operand. Reference to it for the purpose of computation causes a fault. (There is a special code sequence that can be used to get at the contents, but the compilers don't use that code when using it as a normal operand). A normal store operation would overwrite the tag 6. The Pascal compiler I worked on initialized all scalar local variables to have tag 6. If you used them without initializing them, you'd get an abort with the message "Invalid Operand". The Tasmania Pascal compiler for the B6700 also put a tag 6 into the control variable of a for loop at loop exit, since the value is supposed to be indeterminate. I found this to be very helpful in debugging programs. Tom Kelly (416) 922-1937 {utzoo, ihnp4, decvax}!hcr!hcrvx1!tom Brought to you by Super Global Mega Corp .com