Path: utzoo!mnetor!uunet!lll-winken!lll-tis!ames!think!husc6!uwvax!astroatc!johnw From: johnw@astroatc.UUCP (John F. Wardale) Newsgroups: comp.sys.nsc.32k Subject: Re: kit wishlist and software Message-ID: <926@astroatc.UUCP> Date: 31 Mar 88 03:34:45 GMT References: <880@PT.CS.CMU.EDU> <177@anumb.UUCP> <585@naucse.UUCP> <1006@ur-tut.UUCP> <23506@hi.unm.edu> <537@taux01.UUCP> Reply-To: johnw@astroatc.UUCP (John F. Wardale) Organization: Astronautics Technology Cntr, Madison, WI Lines: 46 Keywords: 32k kit, cheap unix. In article <537@taux01.UUCP> orr@taux01.UUCP (Orr Michael ) writes: >In article <23506@hi.unm.edu> cyrus@hi.unm.edu (Tait Cyrus) writes: >> >> ... External Call stuff is *SLOW* > are slow , BUT, they provide a unique capability. The way this works > is that you can generate code that is totally free from relocateable > addresses. All references to entities visible across modules is done > utilizing "link tables". This makes it possible to change one module, > with out making it necessary to re-compile all other modules. In ROM > based application (for example) this makes it less expensive, as you > have to replace fewer ROM chips. Close, but *NO* cigar! The "CXP" insturction requires an "External Procedure Descriptor" (see below). Each module has a "link table" wich is a list of EPDs used by that module. Now if you change ONE routine in ONE module, you will shift *MANY* routines in that module. For each routine that's moved, you must: change its EPD in *EACH and EVERY* module that calls it. --> Bassically, "relink" the world! E.P.D = (the 16-bit address of the callED's MOD-table , the 16-bit offset of the called proceucure entry) - = - = - = - = - = - = - = - = - = - = - = - = - = - = - Having a "link table" for each module is DEFINATLY a lossage for "ROM-ability" and the rest is just TOO slow! There are better alternatives, but ONLY if you can change the architecture. 1: make a "user-service-call" instruction that takes a *NUMBER* like an "SVC" instruction. (or a mod#, function# pair) ....maybe add a "Call-Look aside-Buffers" (cache) for speed. 2: Indirect procedure calls (see the Mac stuff) 3: RISC arguments: Do you even NEED normal "call" insturctions? (Personally I like the MIPS stuff) -- John Wardale ... {seismo | harvard | ihnp4} ! {uwvax | cs.wisc.edu} ! astroatc!johnw To err is human, to really foul up world news requires the net!