Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!linus!decvax!ittvax!dcdwest!sdcsvax!sdcrdcf!hplabs!sri-unix!FIRTH%TARTAN@CMU-CS-C.ARPA From: FIRTH%TARTAN@CMU-CS-C.ARPA Newsgroups: net.unix-wizards Subject: none Message-ID: <1332@sri-arpa.UUCP> Date: Wed, 27-Jun-84 11:47:16 EDT Article-I.D.: sri-arpa.1332 Posted: Wed Jun 27 11:47:16 1984 Date-Received: Sat, 30-Jun-84 05:41:02 EDT Lines: 25 Jack, In answer to your question, it is the language definition that requires args to be stored in consecutive cells. In fact, the BCPL Standard (May 83) defines in Para 2.0 the meaning of "adjacent" storage cells, and then specifies three circumstances in which a collection of cells is adjacent: the Global vactor (2.1.3), a dynamic VEC (6.6), and the actuals of a routine call (5.1). The reason for this last requirement is specifically to permit the actuals of a routine to be treated as a vector (cf Richards: BCPL - The Language and its Compiler), so it's a genuine language feature. It is perfectly proper for a BCPL implementation to pass params in registers (cf the implementations on PDP-11, Vax-11, PE3200), but the called routine must then store them in true memory, unless of course the global optimiser can prove the addresses are never referenced (that's one optimisation I always wanted to put into our codegenerators and never did) Robert Firth -------