I have also written a back-trace utility for MIPS, for Enea's "OSE" realtime OS. Again, it was the sentences in "See MIPS Run" which inspired me (well the whole book is full of inspiration, a great read). My twist to the solution is that my design always scans instructions in the *forward* direction (from the specified PC), trying to find the end of the function. In the process of doing so, unconditional jumps are followed and conditional branches are followed both ways. There is however no support for tracing over signal handlers since in the OSE error handler, we will get the user space register dump for most exceptions and can start back-tracing there. The code is available here: https://dl.dropbox.com/u/45566557/mips_backtrace.c Improvement suggestions and other comments are welcome. -- Ola Liljedahl