Installing the Simplescalar compiler toolchain

Get the precompiled binaries ssgcc.tbz from here: SS Toolchains. Launch a cygwin32 terminal. Do the following:

cd /usr/local/; bunzip2 -c /pathto/ssgcc.tbz | tar xvf - This will unpack the binaries and libraries under /usr/local/ss. The binaries are under /usr/local/ss/v3/bin. Look for the files starting with sslittle-na-sstrix-.

For example, the gcc compiler for the PISA instruction set we will be using is the /usr/local/ss/v3/sslittle-na-sstrix-gcc.

Test that the compiler works:

cd ~; mkdir ACA; cd ACA

Create a c file, say hello.c, containing a simple printf. Something like this:

#include <stdio.h>

main()
{
printf (“hello\n”);
}

Then compile it:

/usr/local/ss/v3/sslittle-na-sstrix-gcc -O hello.c -o hello

Check if things look alright:

file hello

Should return:

hello: MIPSEL ECOFF executable (paged) not stripped - version 2.11

Also do this:

/usr/local/ss/v3/sslittle-na-sstrix-gcc -S hello.c

It should generate a file hello.s. Open it and it should be assembly for PISA (looks nearly identical to MIPS).

Another very useful tool is ss…-objdump. It allows you to inspect binary files such as object files and executables. You can use it for example to find our which virtual address a function or a variable has been mapped.

Try this command:

/usr/local/ss/v3/bin/sslittle-na-sstrix-objdump –syms hello > hello.syms

Look in hello.syms to find all the symbols that are defined. You should be able to find _main in there, the address where your main function has been compiled to.