Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!bbn!oberon!news From: news@oberon.USC.EDU (USENET News) Newsgroups: comp.sys.amiga.tech Subject: Re: Why 6 bytes between pointe to functions in *Base Summary: because they are executable machine code Keywords: libraries, jmp, machine language Message-ID: <16136@oberon.USC.EDU> Date: 28 Mar 89 18:18:43 GMT Expires: 14 Apr 89 08:00:00 GMT References: <2486@scolex.sco.COM> Reply-To: raulmill@aludra.usc.edu (Raul Miller) Followup-To: comp.sys.amiga.tech Distribution: comp Organization: Narcoleptic Killer Apes Lines: 28 In article <2486@scolex.sco.COM> brianm@sco.COM (Brian Moffet) writes: >I noticed the other day that the distance between shared >library functions is 6 bytes. The is at an offset less than >the base of the Shared Library pointer. I would like to know, >why 6 bytes? 4 of these bytes should be the pointer itself, >but what are the other 2? flags? The other two bytes are the jump instruction which is necessary to transfer control to the actual library routine (which has an unknown length). In other words, your program will need to execute the instruction which in assembly language has the form: ... jsr _LVOWhatever(a6) ;invoke whatever ... which then transfers control to the library stubs, which have a form like: ... _LVFoo: jmp _Foo _LVWhatever: jmp _Whatever _LVBar: jmp _Bar ... And, as it happens, the jmp instruction occupies two bytes. Raul Miller | USENET: raulmill@aludra.usc.edu | U.S.SNAIL: 721 E Windsor #4 | 55 mph = 82 nc GLENDALE CA 91205 |