Daniel Jacobowitz <dan@debian.org> writes: > On Sat, Dec 08, 2001 at 04:18:53PM +0100, Andreas Jaeger wrote: >> > " bltzal $0, here\n" >> > " nop\n" >> > "here: subu %0, $31, %0\n" >> >> Subtract shared address of "here" from address of "here" at build time >> - and you know at which address byte 0 of the shared library is >> loaded. > > Wait a second. Does bltzal fill in $31 even on a not-taken branch? > Because bltzal $0 should never be taken. My handy MIPS reference and > SPIM seem to agree that it won't fill in $31. I just checked the MIPS R4000 Microprocessor Manual, 2nd Ed. by Joe Heinrich and it mentions "Unconditanally, the address of the instruction after the delay slot is placed in the link register, $31". Therefore the code is correct. Andreas -- Andreas Jaeger SuSE Labs aj@suse.de private aj@arthur.inka.de http://www.suse.de/~aj