tom@hcrvx1.UUCP (Tom Kelly) (12/17/85)
I too think the Burroughs architecture is very interesting and amply repays study. I spent 5 years building compilers at Burroughs, so I'm probably biased. As a practical matter, code segments can be 8192 *words* long, at 6 bytes/word. The ALGOL compiler refused to compile a procedure longer than that, but the FORTRAN and F77 compilers would - they simply built the appropriate inter-segment branches. The user didn't even know it was happening. Descriptors (which describe segments) have a 20 bit length field, the units were words. Thus, a segment had a maximum length of 2*20 words or 6*2**20 bytes, (i.e., 6MB). However, descriptors could describe strings too, i.e., arrays whose elements were smaller than a word (the hardware supported 4, 6 and 8-bit characters). When these descriptors were "indexed", (an offset is combined with the descriptor to produce a reference to a single array element), the word index could be only 16 bits, because 4 bits were taken for the byte offset within the word. This means that, as a practical matter, string or byte arrays could only be 64K words long, about 390K bytes. Note that the architecture was tagged - each word in memory had a 3 bit extra field checked by the hardware that indicated what kind of data was stored in the word, and restricted the operations on that data to those that made sense. Tom Kelly (416) 922-1937 Human Computing Resources Corp. {utzoo, ihnp4, decvax}!hcr!hcrvx1!tom