SimuAlpha: Alpha AXP simulator Version 2.2 Copyringt (c) 2001, Kenji KISE 1. Requirements Most of the development of SimuAlpha has been done on Intel Linux Machines. The recommended system for running SimuAlpha: OS : Red Hat Linux 6.2 Processor : Intel Celeron C compiler: gcc version egcs-2.91.66 (egcs-1.1.2 release) OS : TurboLinux 6.0 Processor : AMD K6-2 C compiler: gcc version 2.95.2 19991024 (release) OS : DEC Digital Unix Processor : Alpha C compiler: gcc or DEC C compiler 2. Install and run You can build SimuAlpha from the sources in C++ language. After you download a package of simualpha-2.2a.tar.gz simply type the following commands: $gunzip simualpha-2.2a.tar.gz $tar xvf simualpha-2.2a.tar $make 3. License Commercial use prohibited. Welcome to use, distribute and improve this program. 4. No warranty There is no warranty for the program. 5. SimuAlpha simulates: (1)SPECint95 099.go 124.m88ksim 126.gcc 129.compress 130.li 132.ijpeg 134.perl 147.vortex 6. To understand this simulator Please Wait. I describe the inside of SimuAlpha soon. 7. Note The implementation of syscall.cc is no good, though SimuAlpha could run SPECint95 somehow. 8. Update Version1.3 : delete Decode Stage. and simplify the parameters. Version1.6 : Implemented sigreturn(), Perl works properly. Version1.6.1: Detect the segmentation fault, and stall the memory access. Replaced by instruction_fetch(). 1999.4.17 Created New I_class, EX_CMI, EX_CMF 1999.4.26 Update mem_init.c. argp and argpt was defined. 1999.4.28 Modified the output message of distrib.dat 1999.4.29 Added -p option to specify SP. Update printx_64(). 1999.5.10 Debugged fstat systemcall. Vortex works properly(V1.5). 1999.5.12 Implemented sigreturn(). Perl works properly(V1.6). 1999.5.13 Changed the name EX_IUB >> EX_CBI, EX_FUB >> EX_CBF. For speculative Execution, 0.0 division error eliminated. 1999.5.15 Replaced load4_byte() by instruction_fetch(). Added the folloing parameters to detect the segmentation fault. sbuffer_min; /* Minimun Address of Stack Buffer */ sbuffer_max; /* Maximun Address of Stack Buffer */ dbuffer_min; /* Minimun Address of Data Buffer */ dbuffer_max; /* Maximun Address of Data Buffer */ 1999.6.11 Implement CMOV as a three operands instruction. 1999.6.14 Now use g++ instead of gcc, written in c++ code. Construct Imemory and Dmemory classes. In Alpha Machine. egcs-2.91.66 has a bug. In memory.c, load_8byte and store_8byte In the case of egsc, Optimization Options makes a bug. Conpile gcc or g++ with no optimization flag. Or Use cc instead of gcc. NOTE: gdb says that code 0x0a is LDU_B instruction code 0x0e is ????? instruction