📄 spim.html
字号:
<H2 align=center>Changes in Latest Version</H2><p align=left>The current version of <B>spim</B> is 7.3 (August 2006), which isa minor release that cleans up a number of bugs in 7.2:</p><ul> <li> <p align=left>Fix for flex 2.5.33 (internal change broke spim's scanner).</li><li><p align=left>Exception handler can be a semicolon-separated list of files that will be loaded in order. On Unix, SPIM_EXCEPTION_HANDLER environment variable is consulted before command line arguments.</li><li><p align=left>Memory corruption caused spim to crash when label was defined twice in succession.</li><li><p align=left>PCSpim updates register and memory display after a parse error while reading a file.</li><li><p align=left>Eliminated unnecessary null char between strings in list of strings produced by .asciiz.</li><li><p align=left>Makefiles (in spim/ and xspim/) now contain clearly defined paths for installing executables, exception handler, and man pages. The man pages are no longer installed by the "make install" command.</li><li><p align=left>Change psfig to epsfig in spim.tex (does anyone still use this obsolete documentation?).</li></ul><P align=left>The previous version of <B>spim</B> is 7.2.1 (August 2005), which isa minor release that cleans up a number of bugs in 7.1:</P><ul> <li> <P align=left>Fixed multiple problems in memory mapped IO in xspim and spim. <span style="background-color: #FFFF00">(Note: to make programming uniform across all three platforms, memory mapped IO now follows"Unix" handling of carriage return (CR) and new line (NL) characters . On input, a CR is translated to a NL, and on output, a CR is printed after a NL. This was previously true for PCSpim and xspim, but not spim.)</span></P></li> <li> <P align=left>Fixed bug in indexed address computation in LW and SW instructions.</P></li> <li> <P align=left>Eliminated non-POSIX flags IUCLC and IXANY to facilitate port to Mac OS X.</P></li> <li> <P align=left>Use termios(3) library calls instead of IOCTLs to fix bug introduced in port from termio to termios struct.</P></li> <li> <P align=left>Test default case for jalr, without default $rd (=31).</P> </li> <li> <P align=left>Trap handler in test extracted wrong bits from ExcCode field of Cause register.</P></li> <li> <P align=left>Pervasive restructuring of files to put 3 UIs (spim, xspim, PCSpim) in separate directories and cleanup organization and Makefiles.</P> </li> <li> <P align=left>Use correct help file in install process.</P></li> <li> <P align=left>Added work-around for bug in flex 2.5.31 that left yytext_ptr undefined.</P></li> <li> <P align=left>Epilogue code restored $at register, then used a pseduo instructions that smashed it.</P></li> <li> <P align=left>Cleared filename when reinitializing PCSpim, which broke next reload command.</P></li></ul><P align=left>The previous version of <B>spim</B> is 7.1 (January 2005), which isa minor release that cleans up a number of bugs in 7.0:</P><ul> <li> <P align=left>Minor cleanup.</P></li> <li> <P align=left>Switched Windows installer to Microsoft .msi installer, from InstallShield.</P></li> <li> <P align=left>exceptions.s used wrong mask for exception cause field.</P> </li> <li> <P align=left>Clearing the transmitter or receiver interrupt enable bits also clear interrupt pending bits in Cause register.</P></li> <li> <P align=left>Code to poll for a console input character in X windows blocked and prevented any output until input occured.</P></li> <li> <P align=left>Type of "mul" instruction was wrong, which lead to it being printed without destination register.</P></li> <li> <P align=left>Print underlying instruction, not breakpoint.</P></li> <li> <P align=left>Unparing error that unparsed beq as beql.</P></li> <li> <P align=left>Eliminated dependence on obsolete termio.h in favor of POSIX termios.h since Mac OS X doesn't have termio.h any more.</P></li> <li> <P align=left>Fix null pointer problem if no entries in registry.</P></li> <li> <P align=left>Turn off EXL bit after break instruction, since break is handled by spim, not MIPS, code and the bit was never cleared.</P></li> <li> <P align=left>Set default path for exceptions.s to C:\Program Files\PCSpim, the default installation directory.</P></li> <li> <P align=left>Test for SQRT.S used double constant, which failed on SPARC (but not x86).</P></li></ul><P align=left>The previous version of <B>spim</B> is 7.0 (August 2004), which isa major release that contains a significant number of changes from version 6.5:</P><ul> <li><P align=left>Upgraded simulator to MIPS32, Version 1 architecture (exceptdetails of FPU and memory).</P> </li> <li><P align=left>Exceptions and interrupts reimplemented, to make them closer to theactual hardware.</P> </li> <li><P align=left>Memory mapped IO console reimplemented to make it work properly.</P> </li> <li><P align=left>Implemented timer in CPU.</P> </li> <li><P align=left>Renamed "trap" to "exception" to correspond to MIPS terminology.</P> </li> <li><P align=left>Introduced short forms of command line arguments and dropped needfor "-file" argument.</P> </li> <li><P align=left>Major internal cleanup and reorganization of code to eliminateunused code and simplify implementation.</P> </li> <li><P align=left>PCSpim prompts about reinitialization when file reloaded.</P> </li> <li><P align=left>PCSpim lets user set font.</P> </li> <li><P align=left>Word align all segment boundaries and ensure sbrk returnsword-aligned addresses.</P> </li> <li><P align=left>Added new syscall (EXIT2_SYSCALL) that returns value from SPIM.</P> </li> <li><P align=left>Improved implementation of delayed load instructions.</P> </li> <li><P align=left>Refactored the test cases, so that endian-independent code is intt.core.s</P> </li> <li><P align=left>Many small bug fixes.</P> </li></ul><P align=left>Outstanding bugs in 7.0:</P> <ul> <li><P align=left>The trap handler (exceptions.s) fails when the trappinginstruction is in the delay slot of a branch or jump. The trap handler returnsby simplemindedly adding 4 to the EPC (which is the branch's address in thiscase), so it does not return to the instruction executed after the trappinginstruction.</P> </li> <li><P align=left>Handling of newlines and carriage returns is inconsistent betweenplatforms. When a program prints a newline, PCSpim also prints a carriagereturn, spim and xspim don't. Or, is this consistent with the underlyingplatform?</P> </li></ul><P align=left> </P><P align=left>The previous version of <B>spim</B> is 6.5 (January 2003), which contains thefollowing changes from version 6.4:</P><ul> <li><P align=left>If started program is started with only one argument, assume it isa file name.</P> </li> <li><P align=left>Added Alt-F4 shortcut to PCSpim.</P> </li> <li><P align=left>Fixed trap.handler to return to instruction at EPC on interrupt. </P> </li> <li><P align=left>Fixed (real!) hardware exception on integer overflow in division.</P> </li> <li><P align=left>-trap_file did not properly parse argument in xspim.</P> </li> <li><P align=left>Fixed printing of error on last line without a carriage return.</P> </li> <li><P align=left>Print proper registers when printing hex FP numbers.</P> </li> <li><P align=left>Properly zero newly allocated memory.</P> </li> <li><P align=left>Added nops (addu $0, $0, 0) to trap handler, so that it worksproperly in bare mode!</P> </li> <li><P align=left>PCSPIM.HLP file was corrupted.</P> </li></ul><P align=left>The previous version of <B>spim</B> is 6.4 (January 2002), which contains thefollowing changes from version 6.3:</P><ul> <li><P align=left>PCSpim no longer shifts the focus of the register and datasegments when values change.</P> </li> <li><P align=left>Fixed bug in the expansion of USH pseudo-op.</P> </li> <li><P align=left>Add system calls for open, close, read, and write.</P> </li> <li><P align=left>Fixed the Configure file to work with Mac OSX.</P> </li> <li><P align=left>Made the REM pseudo-op require 3 arguments.</P> </li> <li><P align=left>Fixed PCSpim dumping code to dump contents of console window.</P> </li> <li><P align=left>Treat LUI's immediate value as unsigned, as it is not signextended.</P> </li> <li><P align=left>More error checking for malformed programs.</P> </li> <li><P align=left>Make symbol "main" as global.</P> </li> <li><P align=left>Avoid clearing last few bytes of data segments when they expand.</P> </li> <li><P align=left>Check that high-order 4 bits in jump instruction's PC match bitsin target PC.</P> </li></ul><P align=left>The previous version of <B>spim</B> is 6.3 (January 2001), which contains thefollowing changes from version 6.2:</P><UL> <LI> <P align=left>PCSpim interface simplified to 4 fixed panes, similar to xspim, which permit cut and paste. </P> <LI> <P align=left>PCSpim console stays on the screen after assembly program terminates. </P> <LI> <P align=left>Comments in assembly source displayed in text segment. </P> <LI> <P align=left>NOP is standardized to sll $0 $0 0 (= 0x00000000) </P> <LI> <P align=left>Fixed several bugs and missed optimization in computing immediate values in lw/sw instruction sequences. </P> <LI> <P align=left>High 2 bits in negative branch offsets were incorrect. </P> <LI> <P align=left>Display floating point registers with up to 18 digits of precision. </P> <LI> <P align=left>New spim command (print_all_regs) prints all registers. </P> <LI> <P align=left>Minor changes to compile spim under cygwin for Windows. </P> <LI> <P align=left>Validate the range of immediate values in MIPS (but not pseudo) instructions. </P> <LI> <P align=left>Fixed display of stack with non-word aligned $sp. </P> <LI> <P align=left>New flags: <UL> <LI> <P align=left>-delayed-branches Simulate MIPS delayed control transfers for branches, jumps, and calls </P> <LI> <P align=left>-delayed-loads Simulate MIPS non-interlocked loads. </P></LI></UL></LI></UL><HR width="100%"><H2 align=center><B><FONT size=+2>Copyright</FONT></B></H2><P><b>spim</b> is copyrighted by James R. Larus and distributed under thefollowing conditions:</P><ul> <li>You may make copies of <b>spim</b> for your own use and modify those copies.</li> <li>All copies of <b>spim</b> must retain my name and copyright notice.</li> <li>You may not sell <b>spim</b> or distribute <b>spim</b> in conjunction with a commercial product or service without the expressed written consent of James Larus.</li></ul><P>THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIEDWARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OFMERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.</P><P> The DOS and Windows ports weredone by David A. Carley and are copyrighted by Morgan Kaufmann Publishers.</P><HR width="100%"><H2 align=center><B><FONT size=+2>SPIMSAL Note</FONT></B></H2><P><B>spimsal</B> is an old version of <B>spim</B> that ran on <Ahref="ftp://ftp.cs.wisc.edu/pub/spimsal/spimsal.zip">PCs running Windows 3.1</A>and <Ahref="ftp://ftp.cs.wisc.edu/pub/spimsal/SPIMSAL.macintosh.bin">Macintoshes</A>.<B>spimsal</B> implements an extended version of the MIPS instruction set and isbased on an old version of <B>spim</B>. It also does NOT run under Windows 95 orWindows NT.</P></BODY></HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -